From 3015c5983df9d78ee83e033dd9023fcadd4482ed Mon Sep 17 00:00:00 2001 From: ssongliu Date: Wed, 8 Jul 2026 14:44:32 +0800 Subject: [PATCH] feat: update vm resource messages --- core/go.mod | 4 ++++ core/go.sum | 9 +++++++++ core/i18n/lang/en.yaml | 12 ++++++++++++ core/i18n/lang/es-ES.yaml | 24 ++++++++++++++++++------ core/i18n/lang/fa.yaml | 12 ++++++++++++ core/i18n/lang/ja.yaml | 24 ++++++++++++++++++------ core/i18n/lang/ko.yaml | 24 ++++++++++++++++++------ core/i18n/lang/ms.yaml | 24 ++++++++++++++++++------ core/i18n/lang/pt-BR.yaml | 24 ++++++++++++++++++------ core/i18n/lang/ru.yaml | 24 ++++++++++++++++++------ core/i18n/lang/tr.yaml | 24 ++++++++++++++++++------ core/i18n/lang/zh-Hant.yaml | 12 ++++++++++++ core/i18n/lang/zh.yaml | 12 ++++++++++++ frontend/src/lang/modules/en.ts | 18 ++++++++++++------ frontend/src/lang/modules/es-es.ts | 22 +++++++++++++--------- frontend/src/lang/modules/fa.ts | 17 +++++++++++------ frontend/src/lang/modules/ja.ts | 19 ++++++++++++------- frontend/src/lang/modules/ko.ts | 19 ++++++++++++------- frontend/src/lang/modules/ms.ts | 19 ++++++++++++------- frontend/src/lang/modules/pt-br.ts | 22 +++++++++++++--------- frontend/src/lang/modules/ru.ts | 19 ++++++++++++------- frontend/src/lang/modules/tr.ts | 19 ++++++++++++------- frontend/src/lang/modules/zh-Hant.ts | 15 +++++++++++---- frontend/src/lang/modules/zh.ts | 15 +++++++++++---- 24 files changed, 318 insertions(+), 115 deletions(-) diff --git a/core/go.mod b/core/go.mod index aada5b004877..29b90626eae2 100644 --- a/core/go.mod +++ b/core/go.mod @@ -50,11 +50,13 @@ require ( github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/dustin/go-humanize v1.0.1 // indirect + github.com/ebitengine/purego v0.10.0 // indirect github.com/f-amaral/go-async v0.3.0 // indirect github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/gin-contrib/sse v1.1.1 // indirect github.com/glebarez/go-sqlite v1.22.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.23.0 // indirect github.com/go-openapi/jsonreference v0.21.5 // indirect github.com/go-openapi/spec v0.22.4 // indirect @@ -98,6 +100,7 @@ require ( github.com/quic-go/quic-go v0.59.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/sagikazarmark/locafero v0.12.0 // indirect + github.com/shirou/gopsutil/v4 v4.26.5 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.10 // indirect @@ -106,6 +109,7 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.1 // indirect github.com/x448/float16 v0.8.4 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect go.mongodb.org/mongo-driver/v2 v2.5.1 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.26.0 // indirect diff --git a/core/go.sum b/core/go.sum index b3b2c9d22402..5c408c1844a4 100644 --- a/core/go.sum +++ b/core/go.sum @@ -25,6 +25,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/f-amaral/go-async v0.3.0 h1:h4kLsX7aKfdWaHvV0lf+/EE3OIeCzyeDYJDb/vDZUyg= github.com/f-amaral/go-async v0.3.0/go.mod h1:Hz5Qr6DAWpbTTUjytnrg1WIsDgS7NtOei5y8SipYS7U= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -47,6 +49,8 @@ github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GM github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ= github.com/go-gormigrate/gormigrate/v2 v2.1.6 h1:VtX+l1Stj2v5RGubVQk0LS/8EPGXR+ldcOyCmlmKoyg= github.com/go-gormigrate/gormigrate/v2 v2.1.6/go.mod h1:PZpedQc4tWaxn6kvXicwhinh3L0seLpMc5ReKRX5id4= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.23.0 h1:c25HFTJ6uWGmoe5BQI6p72p4o7KnlWYsy1MeFlAumsw= github.com/go-openapi/jsonpointer v0.23.0/go.mod h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY= github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE= @@ -193,6 +197,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4= github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI= +github.com/shirou/gopsutil/v4 v4.26.5 h1:RPcBXkpz7kOj9PqGFQOlBPZHsyaPvPVQc098y9RmCNM= +github.com/shirou/gopsutil/v4 v4.26.5/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= @@ -240,6 +246,8 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xlzd/gotp v0.1.0 h1:37blvlKCh38s+fkem+fFh7sMnceltoIEBYTVXyoa5Po= github.com/xlzd/gotp v0.1.0/go.mod h1:ndLJ3JKzi3xLmUProq4LLxCuECL93dG9WASNLpHz8qg= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mongodb.org/mongo-driver/v2 v2.5.1 h1:j2U/Qp+wvueSpqitLCSZPT/+ZpVc1xzuwdHWwl7d8ro= go.mongodb.org/mongo-driver/v2 v2.5.1/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= @@ -265,6 +273,7 @@ golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= diff --git a/core/i18n/lang/en.yaml b/core/i18n/lang/en.yaml index 9dfce56abef1..16d57fbb5c91 100644 --- a/core/i18n/lang/en.yaml +++ b/core/i18n/lang/en.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "Cluster master node is disconnected. Delete child nodes. # virtual machine ErrVMNotFound: "Virtual machine does not exist" ErrVMAlreadyExists: "Virtual machine already exists" +ErrVMImageAlreadyExists: "Virtual machine image already exists: {{ .detail }}" ErrVMStoragePathInUse: "Storage pool path is already used by [{{ .name }}]" ErrVMRunning: "Virtual machine is running" ErrVMLibvirtConnect: "Failed to connect to libvirt" @@ -120,6 +121,17 @@ ErrVMNetworkNotFound: "Virtual machine network does not exist" ErrVMInvalidPath: "Invalid virtual machine path" ErrVMInvalidInput: "Invalid virtual machine parameter" ErrVMCommandFailed: "Virtual machine command failed: {{ .err }}" +VMCreateTask: "Create virtual machine [{{ .name }}]" +VMCreateFromTemplateTask: "Create virtual machine [{{ .name }}] from template" +VMUpdateTask: "Update 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 }}]" diff --git a/core/i18n/lang/es-ES.yaml b/core/i18n/lang/es-ES.yaml index 5d4fad4cdff4..d31190507c70 100644 --- a/core/i18n/lang/es-ES.yaml +++ b/core/i18n/lang/es-ES.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "El nodo principal del clúster está desconectado, elimi # máquina virtual ErrVMNotFound: "La máquina virtual no existe" ErrVMAlreadyExists: "La máquina virtual ya existe" +ErrVMImageAlreadyExists: "La imagen de la máquina virtual ya existe: {{ .detail }}" ErrVMStoragePathInUse: "La ruta del pool de almacenamiento ya está usada por [{{ .name }}]" ErrVMRunning: "La máquina virtual está en ejecución" ErrVMLibvirtConnect: "Error al conectar con libvirt: {{ .detail }}" @@ -120,12 +121,23 @@ 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 }}" -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 }}]" +VMCreateTask: "Crear máquina virtual [{{ .name }}]" +VMCreateFromTemplateTask: "Crear máquina virtual [{{ .name }}] desde plantilla" +VMUpdateTask: "Actualizar 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" diff --git a/core/i18n/lang/fa.yaml b/core/i18n/lang/fa.yaml index bff8ace296a0..5122b52f47d5 100644 --- a/core/i18n/lang/fa.yaml +++ b/core/i18n/lang/fa.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "گره اصلی خوشه قطع شده است. گره‌ # ماشین مجازی ErrVMNotFound: "ماشین مجازی وجود ندارد" ErrVMAlreadyExists: "ماشین مجازی از قبل وجود دارد" +ErrVMImageAlreadyExists: "فایل ایمیج ماشین مجازی از قبل وجود دارد: {{ .detail }}" ErrVMStoragePathInUse: "مسیر استخر ذخیره‌سازی قبلاً توسط [{{ .name }}] استفاده شده است" ErrVMRunning: "ماشین مجازی در حال اجرا است" ErrVMLibvirtConnect: "اتصال به libvirt ناموفق بود: {{ .detail }}" @@ -120,6 +121,17 @@ ErrVMNetworkNotFound: "شبکه ماشین مجازی وجود ندارد: {{ .d ErrVMInvalidPath: "مسیر ماشین مجازی نامعتبر است: {{ .detail }}" ErrVMInvalidInput: "پارامتر ماشین مجازی نامعتبر است: {{ .detail }}" ErrVMCommandFailed: "اجرای دستور ماشین مجازی ناموفق بود: {{ .err }}" +VMCreateTask: "ایجاد ماشین مجازی [{{ .name }}]" +VMCreateFromTemplateTask: "ایجاد ماشین مجازی [{{ .name }}] از قالب" +VMUpdateTask: "به‌روزرسانی ماشین مجازی [{{ .name }}]" +VMRenameTask: "تغییر نام ماشین مجازی [{{ .name }}] به [{{ .newName }}]" +VMDeleteTask: "حذف ماشین مجازی [{{ .name }}]" +VMTemplateCreateTask: "ذخیره ماشین مجازی [{{ .name }}] به عنوان قالب [{{ .template }}]" +VMTemplateDeleteTask: "حذف قالب ماشین مجازی [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm پیدا نشد، فقط فراداده ماشین مجازی [{{ .name }}] به اجبار حذف می‌شود" +VMForceDeleteMetadataAfterLibvirtFailed: "حذف ماشین مجازی [{{ .name }}] از libvirt ناموفق بود، فراداده به اجبار حذف می‌شود: {{ .err }}" +VMForceDeleteDiskFailed: "حذف اجباری فایل دیسک ماشین مجازی [{{ .path }}] ناموفق بود: {{ .err }}" +VMForceDeleteDiskSuccess: "فایل دیسک ماشین مجازی [{{ .path }}] به اجبار حذف شد" VMSnapshotCreateTask: "ایجاد اسنپ‌شات [{{ .snapshot }}] برای ماشین مجازی [{{ .vm }}]" VMSnapshotCreateStep: "ایجاد اسنپ‌شات ماشین مجازی [{{ .snapshot }}]" VMSnapshotRecoverTask: "بازیابی اسنپ‌شات [{{ .snapshot }}] برای ماشین مجازی [{{ .vm }}]" diff --git a/core/i18n/lang/ja.yaml b/core/i18n/lang/ja.yaml index 03e0246ac961..98f2721cb8b9 100644 --- a/core/i18n/lang/ja.yaml +++ b/core/i18n/lang/ja.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "クラスタのマスターノードが切断されて # 仮想マシン ErrVMNotFound: "仮想マシンが存在しません" ErrVMAlreadyExists: "仮想マシンは既に存在します" +ErrVMImageAlreadyExists: "仮想マシンのイメージファイルは既に存在します: {{ .detail }}" ErrVMStoragePathInUse: "ストレージプールのパスは既に [{{ .name }}] で使用されています" ErrVMRunning: "仮想マシンは実行中です" ErrVMLibvirtConnect: "libvirt への接続に失敗しました: {{ .detail }}" @@ -120,12 +121,23 @@ ErrVMNetworkNotFound: "仮想マシンネットワークが存在しません: { ErrVMInvalidPath: "仮想マシンのパスが無効です: {{ .detail }}" ErrVMInvalidInput: "仮想マシンのパラメータが無効です: {{ .detail }}" ErrVMCommandFailed: "仮想マシンコマンドの実行に失敗しました: {{ .err }}" -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 }}]" +VMCreateTask: "仮想マシン [{{ .name }}] を作成" +VMCreateFromTemplateTask: "テンプレートから仮想マシン [{{ .name }}] を作成" +VMUpdateTask: "仮想マシン [{{ .name }}] を更新" +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 形式である必要があります" diff --git a/core/i18n/lang/ko.yaml b/core/i18n/lang/ko.yaml index a07940618bd9..fd3179c26e95 100644 --- a/core/i18n/lang/ko.yaml +++ b/core/i18n/lang/ko.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "클러스터의 마스터 노드가 연결이 끊어졌 # 가상 머신 ErrVMNotFound: "가상 머신이 존재하지 않습니다" ErrVMAlreadyExists: "가상 머신이 이미 존재합니다" +ErrVMImageAlreadyExists: "가상 머신 이미지 파일이 이미 존재합니다: {{ .detail }}" ErrVMStoragePathInUse: "스토리지 풀 경로가 이미 [{{ .name }}]에서 사용 중입니다" ErrVMRunning: "가상 머신이 실행 중입니다" ErrVMLibvirtConnect: "libvirt 연결 실패: {{ .detail }}" @@ -120,12 +121,23 @@ ErrVMNetworkNotFound: "가상 머신 네트워크가 존재하지 않습니다: ErrVMInvalidPath: "가상 머신 경로가 유효하지 않습니다: {{ .detail }}" ErrVMInvalidInput: "가상 머신 매개변수가 유효하지 않습니다: {{ .detail }}" ErrVMCommandFailed: "가상 머신 명령 실행 실패: {{ .err }}" -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 }}]" +VMCreateTask: "가상 머신 [{{ .name }}] 생성" +VMCreateFromTemplateTask: "템플릿에서 가상 머신 [{{ .name }}] 생성" +VMUpdateTask: "가상 머신 [{{ .name }}] 업데이트" +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 형식이어야 합니다" diff --git a/core/i18n/lang/ms.yaml b/core/i18n/lang/ms.yaml index 4cd301016937..039ecb875cb5 100644 --- a/core/i18n/lang/ms.yaml +++ b/core/i18n/lang/ms.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "Node utama kluster terputus, sila padamkan nod anak." # mesin maya ErrVMNotFound: "Mesin maya tidak wujud" ErrVMAlreadyExists: "Mesin maya sudah wujud" +ErrVMImageAlreadyExists: "Fail imej mesin maya sudah wujud: {{ .detail }}" ErrVMStoragePathInUse: "Laluan kolam storan sudah digunakan oleh [{{ .name }}]" ErrVMRunning: "Mesin maya sedang berjalan" ErrVMLibvirtConnect: "Gagal menyambung ke libvirt: {{ .detail }}" @@ -120,12 +121,23 @@ 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 }}" -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 }}]" +VMCreateTask: "Cipta mesin maya [{{ .name }}]" +VMCreateFromTemplateTask: "Cipta mesin maya [{{ .name }}] daripada templat" +VMUpdateTask: "Kemas kini 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" diff --git a/core/i18n/lang/pt-BR.yaml b/core/i18n/lang/pt-BR.yaml index 9d23a10bc5b4..ae6c109437e2 100644 --- a/core/i18n/lang/pt-BR.yaml +++ b/core/i18n/lang/pt-BR.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "O nó mestre do cluster está desconectado, por favor, e # máquina virtual ErrVMNotFound: "Máquina virtual não existe" ErrVMAlreadyExists: "Máquina virtual já existe" +ErrVMImageAlreadyExists: "A imagem da máquina virtual já existe: {{ .detail }}" ErrVMStoragePathInUse: "O caminho do pool de armazenamento já é usado por [{{ .name }}]" ErrVMRunning: "Máquina virtual está em execução" ErrVMLibvirtConnect: "Falha ao conectar ao libvirt: {{ .detail }}" @@ -120,12 +121,23 @@ 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 }}" -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 }}]" +VMCreateTask: "Criar máquina virtual [{{ .name }}]" +VMCreateFromTemplateTask: "Criar máquina virtual [{{ .name }}] a partir do modelo" +VMUpdateTask: "Atualizar 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" diff --git a/core/i18n/lang/ru.yaml b/core/i18n/lang/ru.yaml index 82c025192db3..576f19eb7592 100644 --- a/core/i18n/lang/ru.yaml +++ b/core/i18n/lang/ru.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "Основной узел кластера отключ # виртуальная машина ErrVMNotFound: "Виртуальная машина не существует" ErrVMAlreadyExists: "Виртуальная машина уже существует" +ErrVMImageAlreadyExists: "Файл образа виртуальной машины уже существует: {{ .detail }}" ErrVMStoragePathInUse: "Путь пула хранения уже используется [{{ .name }}]" ErrVMRunning: "Виртуальная машина запущена" ErrVMLibvirtConnect: "Не удалось подключиться к libvirt: {{ .detail }}" @@ -120,12 +121,23 @@ ErrVMNetworkNotFound: "Сеть виртуальной машины не сущ ErrVMInvalidPath: "Недопустимый путь виртуальной машины: {{ .detail }}" ErrVMInvalidInput: "Недопустимые параметры виртуальной машины: {{ .detail }}" ErrVMCommandFailed: "Ошибка выполнения команды виртуальной машины: {{ .err }}" -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 }}]" +VMCreateTask: "Создать виртуальную машину [{{ .name }}]" +VMCreateFromTemplateTask: "Создать виртуальную машину [{{ .name }}] из шаблона" +VMUpdateTask: "Обновить виртуальную машину [{{ .name }}]" +VMRenameTask: "Переименовать виртуальную машину [{{ .name }}] в [{{ .newName }}]" +VMDeleteTask: "Удалить виртуальную машину [{{ .name }}]" +VMTemplateCreateTask: "Сохранить виртуальную машину [{{ .name }}] как шаблон [{{ .template }}]" +VMTemplateDeleteTask: "Удалить шаблон виртуальной машины [{{ .name }}]" +VMForceDeleteMetadataOnly: "1panel-kvm не найден, принудительно удаляются только метаданные виртуальной машины [{{ .name }}]" +VMForceDeleteMetadataAfterLibvirtFailed: "Не удалось удалить виртуальную машину [{{ .name }}] из libvirt, принудительно удаляются метаданные: {{ .err }}" +VMForceDeleteDiskFailed: "Не удалось принудительно удалить файл диска виртуальной машины [{{ .path }}]: {{ .err }}" +VMForceDeleteDiskSuccess: "Файл диска виртуальной машины [{{ .path }}] принудительно удален" +VMSnapshotCreateTask: "Создать снимок [{{ .snapshot }}] для виртуальной машины [{{ .vm }}]" +VMSnapshotCreateStep: "Создать снимок виртуальной машины [{{ .snapshot }}]" +VMSnapshotRecoverTask: "Восстановить снимок [{{ .snapshot }}] виртуальной машины [{{ .vm }}]" +VMSnapshotRecoverStep: "Восстановить снимок виртуальной машины [{{ .snapshot }}]" +VMSnapshotDeleteTask: "Удалить снимок [{{ .snapshot }}] виртуальной машины [{{ .vm }}]" +VMSnapshotDeleteStep: "Удалить снимок виртуальной машины [{{ .snapshot }}]" # приложение CustomAppStoreFileValid: "Пакет магазина приложений должен быть в формате .tar.gz" diff --git a/core/i18n/lang/tr.yaml b/core/i18n/lang/tr.yaml index d08ead1e97bf..8ab239f4f38b 100644 --- a/core/i18n/lang/tr.yaml +++ b/core/i18n/lang/tr.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "Küme ana düğümü bağlantısı kesildi, lütfen alt # sanal makine ErrVMNotFound: "Sanal makine mevcut değil" ErrVMAlreadyExists: "Sanal makine zaten mevcut" +ErrVMImageAlreadyExists: "Sanal makine imaj dosyası zaten mevcut: {{ .detail }}" ErrVMStoragePathInUse: "Depolama havuzu yolu zaten [{{ .name }}] tarafından kullanılıyor" ErrVMRunning: "Sanal makine çalışıyor" ErrVMLibvirtConnect: "libvirt bağlantısı başarısız: {{ .detail }}" @@ -120,12 +121,23 @@ 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 }}" -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 }}]" +VMCreateTask: "Sanal makine [{{ .name }}] oluştur" +VMCreateFromTemplateTask: "Şablondan sanal makine [{{ .name }}] oluştur" +VMUpdateTask: "Sanal makine [{{ .name }}] güncelle" +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" diff --git a/core/i18n/lang/zh-Hant.yaml b/core/i18n/lang/zh-Hant.yaml index 4caded29dab3..7223d78a48eb 100644 --- a/core/i18n/lang/zh-Hant.yaml +++ b/core/i18n/lang/zh-Hant.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "叢集主節點失聯,請刪除子節點" # 虛擬機 ErrVMNotFound: "虛擬機不存在" ErrVMAlreadyExists: "虛擬機已存在" +ErrVMImageAlreadyExists: "虛擬機映像檔已存在: {{ .detail }}" ErrVMStoragePathInUse: "儲存池路徑已被 [{{ .name }}] 使用" ErrVMRunning: "虛擬機正在執行" ErrVMLibvirtConnect: "連接 libvirt 失敗: {{ .detail }}" @@ -120,6 +121,17 @@ ErrVMNetworkNotFound: "虛擬機網路不存在: {{ .detail }}" ErrVMInvalidPath: "虛擬機路徑非法: {{ .detail }}" ErrVMInvalidInput: "虛擬機參數非法: {{ .detail }}" ErrVMCommandFailed: "虛擬機指令執行失敗: {{ .err }}" +VMCreateTask: "建立虛擬機 [{{ .name }}]" +VMCreateFromTemplateTask: "從範本建立虛擬機 [{{ .name }}]" +VMUpdateTask: "更新虛擬機 [{{ .name }}]" +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 }}]" diff --git a/core/i18n/lang/zh.yaml b/core/i18n/lang/zh.yaml index 48b663cac30f..72f2dc2e899a 100644 --- a/core/i18n/lang/zh.yaml +++ b/core/i18n/lang/zh.yaml @@ -112,6 +112,7 @@ ClusterMasterNotExist: "集群主节点失联,请删除子节点" # 虚拟机 ErrVMNotFound: "虚拟机不存在" ErrVMAlreadyExists: "虚拟机已存在" +ErrVMImageAlreadyExists: "虚拟机镜像文件已存在: {{ .detail }}" ErrVMStoragePathInUse: "存储池路径已被 [{{ .name }}] 使用" ErrVMRunning: "虚拟机正在运行" ErrVMLibvirtConnect: "连接 libvirt 失败: {{ .detail }}" @@ -120,6 +121,17 @@ ErrVMNetworkNotFound: "虚拟机网络不存在: {{ .detail }}" ErrVMInvalidPath: "虚拟机路径非法: {{ .detail }}" ErrVMInvalidInput: "虚拟机参数非法: {{ .detail }}" ErrVMCommandFailed: "虚拟机命令执行失败: {{ .err }}" +VMCreateTask: "创建虚拟机 [{{ .name }}]" +VMCreateFromTemplateTask: "从模板创建虚拟机 [{{ .name }}]" +VMUpdateTask: "更新虚拟机 [{{ .name }}]" +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 }}]" diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index f74a05d19ab1..e92a578056f5 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -5640,12 +5640,15 @@ const message = { cpu: 'CPU', memory: 'Memory', disk: 'Disk', - memoryLimitHelper: 'Maximum allocatable memory: {0}', - memoryLimitExceeded: - 'VM memory allocation will exceed allocatable host memory. Reduce memory and try again.', + cpuLimitHelper: 'Currently available CPU: {0} cores', + cpuLimitExceeded: 'CPU exceeds the limit. Current maximum available: {0} cores.', + memoryLimitHelper: 'Currently allocatable memory: {0} (the host must reserve {1} memory)', + memoryLimitExceeded: 'Memory exceeds the limit. Current maximum allocatable: {0}.', storageLimitHelper: 'Current free space in the target storage pool: {0}', + storageLimitExceeded: 'Disk capacity exceeds the limit. Current maximum available: {0}.', iso: 'ISO', createSource: 'Create Source', + createFromTemplate: 'Create from template', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5654,7 +5657,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'Delete template {0}. This operation cannot be rolled back. Continue?', diskSize: 'Disk Size', diskPath: 'Disk Path', diskPathHelper: @@ -5745,16 +5748,19 @@ const message = { forceDelete: 'Force delete', forceDeleteHelper: 'Force delete will ignore VM deletion errors, delete panel metadata, and release resource usage.', - forceDeleteConfirm: - 'Force deletion may hide a VM that still exists or is still running on the host if libvirt cleanup fails. Continue?', deleteNameHelper: '" to delete this virtual machine', isoSource: 'ISO Source', isoTargetDir: 'ISO Save Path', isoTargetDirHelper: 'Server-selected and locally uploaded ISO files are saved to this directory.', isoTargetDirAvailable: 'The ISO save path is available.', isoTargetDirUnavailable: 'The ISO save path must be inside an available VM storage pool.', + isoTargetDirCheckRequired: 'Check the ISO save path before saving.', checkPath: 'Check', isoSize: 'ISO Size', + deleteIsoConfirm: 'This delete operation cannot be rolled back. Continue?', + deleteSourceFile: 'Delete source file', + deleteSourceFileHelper: + 'When checked, the source file referenced by this ISO record will also be deleted and cannot be recovered.', dir: 'Local Directory', }, cluster: { diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index f832af417571..80b5087473a5 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -5689,12 +5689,15 @@ const message = { cpu: 'CPU', memory: 'Memoria', disk: 'Disco', - memoryLimitHelper: 'Memoria máxima asignable: {0}', - memoryLimitExceeded: - 'La asignación de memoria de la VM superará la memoria asignable del host. Reduzca la memoria e inténtelo de nuevo.', + cpuLimitHelper: 'CPU disponible actualmente: {0} núcleos', + cpuLimitExceeded: 'La CPU supera el límite. Máximo disponible actual: {0} núcleos.', + memoryLimitHelper: 'Memoria actualmente asignable: {0} (el host debe reservar {1} de memoria)', + memoryLimitExceeded: 'La memoria supera el límite. Máximo asignable actual: {0}.', storageLimitHelper: 'Espacio libre actual en el pool de almacenamiento de destino: {0}', + storageLimitExceeded: 'La capacidad del disco supera el límite. Máximo disponible actual: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: 'Origen de creación', + createFromTemplate: 'Crear desde plantilla', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5703,7 +5706,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'Eliminar plantilla {0}. Esta operación no se puede revertir. ¿Continuar?', diskSize: 'Tamaño del disco', diskPath: 'Ruta del disco', diskPathHelper: @@ -5797,18 +5800,19 @@ const message = { forceDelete: 'Forzar eliminación', forceDeleteHelper: 'La eliminación forzada ignorará los errores al eliminar la VM, borrará los metadatos del panel y liberará el uso de recursos.', - forceDeleteConfirm: - 'Si falla la limpieza de libvirt, la eliminación forzada puede ocultar una VM que aún existe o sigue ejecutándose en el host. ¿Continuar?', deleteNameHelper: '" para eliminar esta máquina virtual', isoSource: 'Origen ISO', isoTargetDir: 'Ruta de guardado ISO', isoTargetDirHelper: 'Los ISO seleccionados desde el servidor y subidos localmente se guardarán en este directorio.', isoTargetDirAvailable: 'La ruta de guardado ISO está disponible.', - isoTargetDirUnavailable: - 'La ruta de guardado ISO debe estar dentro de un pool de almacenamiento de VM disponible.', + isoTargetDirUnavailable: 'La ruta de guardado ISO debe estar dentro de un pool de almacenamiento de VM disponible.', + isoTargetDirCheckRequired: 'Compruebe la ruta de guardado ISO antes de guardar.', checkPath: 'Comprobar', isoSize: 'Tamaño ISO', + deleteIsoConfirm: 'Esta operación de eliminación no se puede revertir. ¿Continuar?', + deleteSourceFile: 'Eliminar archivo de origen', + deleteSourceFileHelper: 'Si se marca, también se eliminará el archivo de origen referenciado por este registro ISO y no se podrá recuperar.', dir: 'Directorio local', }, cluster: { diff --git a/frontend/src/lang/modules/fa.ts b/frontend/src/lang/modules/fa.ts index 421adae22b54..4b0d59b6cb73 100644 --- a/frontend/src/lang/modules/fa.ts +++ b/frontend/src/lang/modules/fa.ts @@ -5606,12 +5606,15 @@ const message = { cpu: 'CPU', memory: 'حافظه', disk: 'دیسک', - memoryLimitHelper: 'حداکثر حافظه قابل تخصیص: {0}', - memoryLimitExceeded: - 'حافظه تخصیص‌یافته به VM از حافظه قابل تخصیص میزبان بیشتر می‌شود. حافظه را کاهش دهید و دوباره تلاش کنید.', + cpuLimitHelper: 'CPU در حال حاضر در دسترس: {0} هسته', + cpuLimitExceeded: 'CPU از حد مجاز بیشتر است. حداکثر فعلی قابل استفاده: {0} هسته.', + memoryLimitHelper: 'حافظه قابل تخصیص فعلی: {0} (میزبان باید {1} حافظه رزرو کند)', + memoryLimitExceeded: 'حافظه از حد مجاز بیشتر است. حداکثر فعلی قابل تخصیص: {0}.', storageLimitHelper: 'فضای آزاد فعلی در استخر ذخیره‌سازی مقصد: {0}', + storageLimitExceeded: 'ظرفیت دیسک از حد مجاز بیشتر است. حداکثر فعلی قابل استفاده: {0}.', iso: 'ISO', createSource: 'منبع ایجاد', + createFromTemplate: 'ایجاد از قالب', blankDisk: 'دیسک خالی', template: 'قالب', templateName: 'نام قالب', @@ -5620,7 +5623,7 @@ const message = { sourceVM: 'ماشین مجازی منبع', templateSize: 'اندازه قالب', deleteTemplate: 'حذف قالب', - deleteTemplateFile: 'حذف فایل دیسک قالب', + deleteTemplateConfirm: 'قالب {0} حذف شود؟ این عملیات قابل بازگشت نیست. ادامه می‌دهید؟', diskSize: 'ظرفیت دیسک', diskPath: 'مسیر دیسک', diskPathHelper: @@ -5713,16 +5716,18 @@ const message = { forceDelete: 'حذف اجباری', forceDeleteHelper: 'حذف اجباری خطاهای حذف ماشین مجازی را نادیده می‌گیرد، فراداده پنل را حذف می‌کند و منابع را آزاد می‌کند.', - forceDeleteConfirm: - 'اگر پاک‌سازی libvirt ناموفق باشد، حذف اجباری ممکن است ماشین مجازی‌ای را که هنوز روی میزبان وجود دارد یا در حال اجرا است پنهان کند. ادامه می‌دهید؟', deleteNameHelper: '" را برای حذف این ماشین مجازی وارد کنید', isoSource: 'منبع ISO', isoTargetDir: 'مسیر ذخیره ISO', isoTargetDirHelper: 'فایل‌های ISO انتخاب‌شده از سرور و آپلودشده محلی در این دایرکتوری ذخیره می‌شوند.', isoTargetDirAvailable: 'مسیر ذخیره ISO قابل استفاده است.', isoTargetDirUnavailable: 'مسیر ذخیره ISO باید داخل یک استخر ذخیره‌سازی ماشین مجازی قابل استفاده باشد.', + isoTargetDirCheckRequired: 'قبل از ذخیره، مسیر ذخیره ISO را بررسی کنید.', checkPath: 'بررسی', isoSize: 'اندازه ISO', + deleteIsoConfirm: 'این عملیات حذف قابل بازگشت نیست. ادامه می‌دهید؟', + deleteSourceFile: 'حذف فایل منبع', + deleteSourceFileHelper: 'در صورت انتخاب، فایل منبع ارجاع‌شده توسط این رکورد ISO نیز حذف می‌شود و قابل بازیابی نیست.', dir: 'دایرکتوری محلی', }, cluster: { diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 504200370ee1..718dfa110864 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -5653,12 +5653,15 @@ const message = { cpu: 'CPU', memory: 'メモリ', disk: 'ディスク', - memoryLimitHelper: '割り当て可能な最大メモリ:{0}', - memoryLimitExceeded: - 'VM のメモリ割り当てがホストの割り当て可能メモリを超えます。メモリを減らして再試行してください。', + cpuLimitHelper: '現在利用可能な CPU:{0} コア', + cpuLimitExceeded: 'CPU が上限を超えています。現在利用可能な最大値:{0} コア。', + memoryLimitHelper: '現在割り当て可能なメモリ:{0}(ホストは {1} のメモリを予約する必要があります)', + memoryLimitExceeded: 'メモリが上限を超えています。現在割り当て可能な最大値:{0}。', storageLimitHelper: '対象ストレージプールの現在の空き容量:{0}', + storageLimitExceeded: 'ディスク容量が上限を超えています。現在利用可能な最大値:{0}。', iso: 'ISO', - createSource: 'Create Source', + createSource: '作成元', + createFromTemplate: 'テンプレートから作成', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5667,7 +5670,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'テンプレート {0} を削除します。この操作は元に戻せません。続行しますか?', diskSize: 'ディスク容量', diskPath: 'ディスクパス', diskPathHelper: @@ -5761,8 +5764,6 @@ const message = { forceDelete: '強制削除', forceDeleteHelper: '強制削除は仮想マシン削除エラーを無視し、パネルのメタデータを削除してリソース使用を解放します。', - forceDeleteConfirm: - 'libvirt のクリーンアップに失敗した場合、強制削除によりホスト上にまだ存在または実行中の仮想マシンが隠れる可能性があります。続行しますか?', deleteNameHelper: '" と入力してこの仮想マシンを削除', isoSource: 'ISO ソース', isoTargetDir: 'ISO 保存パス', @@ -5770,8 +5771,12 @@ const message = { 'サーバーで選択した ISO とローカルアップロードした ISO はこのディレクトリに保存されます。', isoTargetDirAvailable: 'ISO 保存パスは利用可能です。', isoTargetDirUnavailable: 'ISO 保存パスは利用可能な仮想マシンストレージプール内である必要があります。', + isoTargetDirCheckRequired: '保存前に ISO 保存パスを確認してください。', checkPath: '確認', isoSize: 'ISO サイズ', + deleteIsoConfirm: 'この削除操作は元に戻せません。続行しますか?', + deleteSourceFile: '元ファイルを削除', + deleteSourceFileHelper: '選択すると、この ISO レコードが参照する元ファイルも削除され、復元できません。', dir: 'ローカルディレクトリ', }, cluster: { diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 3a474725028d..859d7fcd9e1c 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -5538,12 +5538,15 @@ const message = { cpu: 'CPU', memory: '메모리', disk: '디스크', - memoryLimitHelper: '최대 할당 가능 메모리: {0}', - memoryLimitExceeded: - 'VM 메모리 할당이 호스트의 할당 가능 메모리를 초과합니다. 메모리를 줄인 후 다시 시도하세요.', + cpuLimitHelper: '현재 사용 가능한 CPU: {0} 코어', + cpuLimitExceeded: 'CPU가 제한을 초과했습니다. 현재 최대 사용 가능: {0} 코어.', + memoryLimitHelper: '현재 할당 가능한 메모리: {0} (호스트는 {1} 메모리를 예약해야 함)', + memoryLimitExceeded: '메모리가 제한을 초과했습니다. 현재 최대 할당 가능: {0}.', storageLimitHelper: '대상 스토리지 풀의 현재 사용 가능 공간: {0}', + storageLimitExceeded: '디스크 용량이 제한을 초과했습니다. 현재 최대 사용 가능: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: '생성 소스', + createFromTemplate: '템플릿에서 생성', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5552,7 +5555,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: '템플릿 {0}을(를) 삭제합니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', diskSize: '디스크 용량', diskPath: '디스크 경로', diskPathHelper: @@ -5643,16 +5646,18 @@ const message = { forceDelete: '강제 삭제', forceDeleteHelper: '강제 삭제는 VM 삭제 오류를 무시하고 패널 메타데이터를 삭제하며 리소스 사용을 해제합니다.', - forceDeleteConfirm: - 'libvirt 정리에 실패하면 강제 삭제로 인해 호스트에 아직 존재하거나 실행 중인 VM이 숨겨질 수 있습니다. 계속하시겠습니까?', deleteNameHelper: '" 입력 시 이 가상 머신 삭제', isoSource: 'ISO 출처', isoTargetDir: 'ISO 저장 경로', isoTargetDirHelper: '서버에서 선택한 ISO와 로컬로 업로드한 ISO 파일은 이 디렉터리에 저장됩니다.', isoTargetDirAvailable: 'ISO 저장 경로를 사용할 수 있습니다.', isoTargetDirUnavailable: 'ISO 저장 경로는 사용 가능한 VM 스토리지 풀 내에 있어야 합니다.', + isoTargetDirCheckRequired: '저장하기 전에 ISO 저장 경로를 확인하세요.', checkPath: '확인', isoSize: 'ISO 크기', + deleteIsoConfirm: '이 삭제 작업은 되돌릴 수 없습니다. 계속하시겠습니까?', + deleteSourceFile: '원본 파일 삭제', + deleteSourceFileHelper: '선택하면 이 ISO 레코드가 참조하는 원본 파일도 삭제되며 복구할 수 없습니다.', dir: '로컬 디렉터리', }, cluster: { diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index dac74768c887..9042604013da 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -5730,12 +5730,15 @@ const message = { cpu: 'CPU', memory: 'Memori', disk: 'Cakera', - memoryLimitHelper: 'Memori maksimum yang boleh diperuntukkan: {0}', - memoryLimitExceeded: - 'Peruntukan memori VM akan melebihi memori hos yang boleh diperuntukkan. Kurangkan memori dan cuba lagi.', + cpuLimitHelper: 'CPU tersedia semasa: {0} teras', + cpuLimitExceeded: 'CPU melebihi had. Maksimum tersedia semasa: {0} teras.', + memoryLimitHelper: 'Memori yang boleh diperuntukkan semasa: {0} (hos mesti merizab {1} memori)', + memoryLimitExceeded: 'Memori melebihi had. Maksimum semasa yang boleh diperuntukkan: {0}.', storageLimitHelper: 'Ruang kosong semasa dalam kolam storan sasaran: {0}', + storageLimitExceeded: 'Kapasiti cakera melebihi had. Maksimum tersedia semasa: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: 'Sumber Cipta', + createFromTemplate: 'Cipta daripada templat', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5744,7 +5747,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'Padam templat {0}. Operasi ini tidak boleh dibuat asal. Teruskan?', diskSize: 'Saiz Cakera', diskPath: 'Laluan Cakera', diskPathHelper: @@ -5836,8 +5839,6 @@ const message = { forceDelete: 'Padam paksa', forceDeleteHelper: 'Padam paksa akan mengabaikan ralat pemadaman VM, memadam metadata panel dan melepaskan penggunaan sumber.', - forceDeleteConfirm: - 'Pemadaman paksa mungkin menyembunyikan VM yang masih wujud atau masih berjalan pada hos jika pembersihan libvirt gagal. Teruskan?', deleteNameHelper: '" untuk memadam mesin maya ini', isoSource: 'Sumber ISO', isoTargetDir: 'Laluan Simpan ISO', @@ -5845,8 +5846,12 @@ const message = { 'ISO yang dipilih daripada pelayan dan dimuat naik secara setempat akan disimpan dalam direktori ini.', isoTargetDirAvailable: 'Laluan simpan ISO tersedia.', isoTargetDirUnavailable: 'Laluan simpan ISO mesti berada dalam storan pool VM yang tersedia.', + isoTargetDirCheckRequired: 'Semak laluan simpan ISO sebelum menyimpan.', checkPath: 'Semak', isoSize: 'Saiz ISO', + deleteIsoConfirm: 'Operasi pemadaman ini tidak boleh dibuat asal. Teruskan?', + deleteSourceFile: 'Padam fail sumber', + deleteSourceFileHelper: 'Jika ditanda, fail sumber yang dirujuk oleh rekod ISO ini juga akan dipadam dan tidak boleh dipulihkan.', dir: 'Direktori Setempat', }, cluster: { diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index c50deda0d1b1..a7f5bd07e828 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -5881,12 +5881,15 @@ const message = { cpu: 'CPU', memory: 'Memória', disk: 'Disco', - memoryLimitHelper: 'Memória máxima alocável: {0}', - memoryLimitExceeded: - 'A alocação de memória da VM excederá a memória alocável do host. Reduza a memória e tente novamente.', + cpuLimitHelper: 'CPU disponível no momento: {0} núcleos', + cpuLimitExceeded: 'CPU excede o limite. Máximo disponível no momento: {0} núcleos.', + memoryLimitHelper: 'Memória alocável no momento: {0} (o host deve reservar {1} de memória)', + memoryLimitExceeded: 'A memória excede o limite. Máximo alocável no momento: {0}.', storageLimitHelper: 'Espaço livre atual no pool de armazenamento de destino: {0}', + storageLimitExceeded: 'A capacidade do disco excede o limite. Máximo disponível no momento: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: 'Origem da criação', + createFromTemplate: 'Criar a partir de modelo', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5895,7 +5898,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'Excluir modelo {0}. Esta operação não pode ser desfeita. Continuar?', diskSize: 'Tamanho do Disco', diskPath: 'Caminho do Disco', diskPathHelper: @@ -5987,17 +5990,18 @@ const message = { forceDelete: 'Forçar exclusão', forceDeleteHelper: 'A exclusão forçada ignorará erros de exclusão da VM, removerá os metadados do painel e liberará o uso de recursos.', - forceDeleteConfirm: - 'A exclusão forçada pode ocultar uma VM que ainda existe ou ainda está em execução no host se a limpeza do libvirt falhar. Continuar?', deleteNameHelper: '" para excluir esta máquina virtual', isoSource: 'Origem do ISO', isoTargetDir: 'Caminho de salvamento ISO', isoTargetDirHelper: 'ISOs selecionados no servidor e enviados localmente serão salvos neste diretório.', isoTargetDirAvailable: 'O caminho de salvamento ISO está disponível.', - isoTargetDirUnavailable: - 'O caminho de salvamento ISO deve estar em um pool de armazenamento de VM disponível.', + isoTargetDirUnavailable: 'O caminho de salvamento ISO deve estar em um pool de armazenamento de VM disponível.', + isoTargetDirCheckRequired: 'Verifique o caminho de salvamento ISO antes de salvar.', checkPath: 'Verificar', isoSize: 'Tamanho do ISO', + deleteIsoConfirm: 'Esta operação de exclusão não pode ser desfeita. Continuar?', + deleteSourceFile: 'Excluir arquivo de origem', + deleteSourceFileHelper: 'Quando marcado, o arquivo de origem referenciado por este registro ISO também será excluído e não poderá ser recuperado.', dir: 'Diretório Local', }, cluster: { diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index f3a0a3e3be4d..de2e530e8347 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -5730,12 +5730,15 @@ const message = { cpu: 'CPU', memory: 'Память', disk: 'Диск', - memoryLimitHelper: 'Максимально доступная память: {0}', - memoryLimitExceeded: - 'Выделение памяти ВМ превысит доступную память хоста. Уменьшите память и повторите попытку.', + cpuLimitHelper: 'Доступно CPU сейчас: {0} ядер', + cpuLimitExceeded: 'CPU превышает лимит. Текущий максимум: {0} ядер.', + memoryLimitHelper: 'Доступная для выделения память: {0} (хост должен зарезервировать {1} памяти)', + memoryLimitExceeded: 'Память превышает лимит. Текущий максимум для выделения: {0}.', storageLimitHelper: 'Текущее свободное место в целевом пуле хранения: {0}', + storageLimitExceeded: 'Ёмкость диска превышает лимит. Текущий максимум: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: 'Источник создания', + createFromTemplate: 'Создать из шаблона', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5744,7 +5747,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: 'Удалить шаблон {0}. Эту операцию нельзя отменить. Продолжить?', diskSize: 'Размер диска', diskPath: 'Путь к диску', diskPathHelper: @@ -5838,16 +5841,18 @@ const message = { forceDelete: 'Принудительно удалить', forceDeleteHelper: 'Принудительное удаление проигнорирует ошибки удаления ВМ, удалит метаданные панели и освободит ресурсы.', - forceDeleteConfirm: - 'Если очистка libvirt завершится неудачно, принудительное удаление может скрыть ВМ, которая всё ещё существует или работает на хосте. Продолжить?', deleteNameHelper: '" для удаления этой виртуальной машины', isoSource: 'Источник ISO', isoTargetDir: 'Путь сохранения ISO', isoTargetDirHelper: 'ISO, выбранные на сервере и загруженные локально, будут сохранены в этом каталоге.', isoTargetDirAvailable: 'Путь сохранения ISO доступен.', isoTargetDirUnavailable: 'Путь сохранения ISO должен находиться в доступном пуле хранения ВМ.', + isoTargetDirCheckRequired: 'Проверьте путь сохранения ISO перед сохранением.', checkPath: 'Проверить', isoSize: 'Размер ISO', + deleteIsoConfirm: 'Эту операцию удаления нельзя отменить. Продолжить?', + deleteSourceFile: 'Удалить исходный файл', + deleteSourceFileHelper: 'Если отмечено, исходный файл, на который ссылается эта запись ISO, также будет удалён без возможности восстановления.', dir: 'Локальный каталог', }, cluster: { diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 4dd7aedf2159..132966f50a6c 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -5718,12 +5718,15 @@ const message = { cpu: 'CPU', memory: 'Bellek', disk: 'Disk', - memoryLimitHelper: 'Ayrılabilir maksimum bellek: {0}', - memoryLimitExceeded: - 'VM bellek ayırması, ana makinede ayrılabilir belleği aşacak. Belleği azaltıp tekrar deneyin.', + cpuLimitHelper: 'Şu anda kullanılabilir CPU: {0} çekirdek', + cpuLimitExceeded: 'CPU sınırı aşıyor. Şu anki maksimum kullanılabilir: {0} çekirdek.', + memoryLimitHelper: 'Şu anda ayrılabilir bellek: {0} (ana makine {1} bellek ayırmalıdır)', + memoryLimitExceeded: 'Bellek sınırı aşıyor. Şu anki maksimum ayrılabilir: {0}.', storageLimitHelper: 'Hedef depolama havuzundaki mevcut boş alan: {0}', + storageLimitExceeded: 'Disk kapasitesi sınırı aşıyor. Şu anki maksimum kullanılabilir: {0}.', iso: 'ISO', - createSource: 'Create Source', + createSource: 'Oluşturma Kaynağı', + createFromTemplate: 'Şablondan oluştur', blankDisk: 'Blank Disk', template: 'Template', templateName: 'Template Name', @@ -5732,7 +5735,7 @@ const message = { sourceVM: 'Source VM', templateSize: 'Template Size', deleteTemplate: 'Delete Template', - deleteTemplateFile: 'Delete template disk file', + deleteTemplateConfirm: '{0} şablonu silinsin. Bu işlem geri alınamaz. Devam edilsin mi?', diskSize: 'Disk Boyutu', diskPath: 'Disk Yolu', diskPathHelper: @@ -5825,16 +5828,18 @@ const message = { forceDelete: 'Zorla sil', forceDeleteHelper: 'Zorla silme VM silme hatalarını yok sayar, panel meta verilerini siler ve kaynak kullanımını serbest bırakır.', - forceDeleteConfirm: - 'libvirt temizliği başarısız olursa zorla silme, ana makinede hâlâ var olan veya çalışan bir VM’i gizleyebilir. Devam edilsin mi?', deleteNameHelper: '" yazarak bu sanal makineyi sil', isoSource: 'ISO Kaynağı', isoTargetDir: 'ISO Kaydetme Yolu', isoTargetDirHelper: 'Sunucudan seçilen ve yerel olarak yüklenen ISO dosyaları bu dizine kaydedilir.', isoTargetDirAvailable: 'ISO kaydetme yolu kullanılabilir.', isoTargetDirUnavailable: 'ISO kaydetme yolu kullanılabilir bir VM depolama havuzunun içinde olmalıdır.', + isoTargetDirCheckRequired: 'Kaydetmeden önce ISO kaydetme yolunu kontrol edin.', checkPath: 'Kontrol Et', isoSize: 'ISO Boyutu', + deleteIsoConfirm: 'Bu silme işlemi geri alınamaz. Devam edilsin mi?', + deleteSourceFile: 'Kaynak dosyayı sil', + deleteSourceFileHelper: 'İşaretlenirse, bu ISO kaydının başvurduğu kaynak dosya da silinir ve kurtarılamaz.', dir: 'Yerel Dizin', }, cluster: { diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index b04e5e3131e9..4248053de1f3 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -5251,11 +5251,15 @@ const message = { cpu: 'CPU', memory: '記憶體', disk: '磁碟', - memoryLimitHelper: '最大可分配記憶體:{0}', - memoryLimitExceeded: 'VM 記憶體分配將超過主機可分配記憶體,請降低記憶體後重試。', + cpuLimitHelper: '目前可用 CPU:{0} 核', + cpuLimitExceeded: 'CPU 超出限制,目前最大可用:{0} 核', + memoryLimitHelper: '目前可分配記憶體:{0}(主機需要預留 {1} 記憶體)', + memoryLimitExceeded: '記憶體超出限制,目前最大可分配:{0}', storageLimitHelper: '目標儲存池目前可用空間:{0}', + storageLimitExceeded: '磁碟容量超出限制,目前最大可用:{0}', iso: 'ISO', createSource: '建立來源', + createFromTemplate: '從範本啟動', blankDisk: '空白磁碟', template: '範本', templateName: '範本名稱', @@ -5264,7 +5268,7 @@ const message = { sourceVM: '來源虛擬機', templateSize: '範本大小', deleteTemplate: '刪除範本', - deleteTemplateFile: '刪除範本磁碟檔案', + deleteTemplateConfirm: '刪除範本 {0},該操作不可回滾,是否繼續?', diskSize: '磁碟容量', diskPath: '磁碟路徑', diskPathHelper: '可留空,系統將在所選儲存池目錄下自動建立 虛擬機名稱.qcow2;如填寫,必須是絕對路徑。', @@ -5349,15 +5353,18 @@ const message = { operateConfirm: '確認 {0} 虛擬機 [{1}]?', forceDelete: '強制刪除', forceDeleteHelper: '強制刪除將會忽略虛擬機刪除錯誤,刪除面板中繼資料並釋放資源佔用。', - forceDeleteConfirm: '如果 libvirt 清理失敗,強制刪除可能隱藏宿主機上仍存在或仍在執行的虛擬機,是否繼續?', deleteNameHelper: '" 刪除此虛擬機', isoSource: 'ISO 來源', isoTargetDir: 'ISO 儲存路徑', isoTargetDirHelper: '伺服器選擇和本機上傳的 ISO 檔案都會儲存到該目錄。', isoTargetDirAvailable: 'ISO 儲存路徑可用。', isoTargetDirUnavailable: 'ISO 儲存路徑必須位於可用的虛擬機儲存池內。', + isoTargetDirCheckRequired: '請先檢查 ISO 儲存路徑,檢查通過後再儲存。', checkPath: '檢查', isoSize: 'ISO 大小', + deleteIsoConfirm: '刪除操作不可回滾,是否繼續?', + deleteSourceFile: '刪除源檔案', + deleteSourceFileHelper: '勾選後會同時刪除該 ISO 記錄引用的源檔案,檔案刪除後無法恢復。', dir: '本機目錄', }, cluster: { diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index f8251885c3bc..4e00d8359aa0 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -5243,11 +5243,15 @@ const message = { cpu: 'CPU', memory: '内存', disk: '磁盘', - memoryLimitHelper: '最大可分配内存:{0}', - memoryLimitExceeded: 'VM 内存分配将超过宿主机可分配内存,请降低内存后重试。', + cpuLimitHelper: '当前可用 CPU:{0} 核', + cpuLimitExceeded: 'CPU 超出限制,当前最大可用:{0} 核', + memoryLimitHelper: '当前可分配内存:{0}(宿主机需要预留 {1} 内存)', + memoryLimitExceeded: '内存超出限制,当前最大可分配:{0}', storageLimitHelper: '目标存储池当前可用空间:{0}', + storageLimitExceeded: '磁盘容量超出限制,当前最大可用:{0}', iso: 'ISO', createSource: '创建来源', + createFromTemplate: '从模板启动', blankDisk: '空白磁盘', template: '模板', templateName: '模板名称', @@ -5256,7 +5260,7 @@ const message = { sourceVM: '来源虚拟机', templateSize: '模板大小', deleteTemplate: '删除模板', - deleteTemplateFile: '删除模板磁盘文件', + deleteTemplateConfirm: '删除模板 {0},该操作不可回滚,是否继续?', diskSize: '磁盘容量', diskPath: '磁盘路径', diskPathHelper: '可留空,系统将在所选存储池目录下自动创建 虚拟机名称.qcow2;如填写,必须是绝对路径。', @@ -5341,15 +5345,18 @@ const message = { operateConfirm: '确认 {0} 虚拟机 [{1}]?', forceDelete: '强制删除', forceDeleteHelper: '强制删除将会忽略虚拟机删除错误,删除面板元数据并释放资源占用。', - forceDeleteConfirm: '如果 libvirt 清理失败,强制删除可能隐藏宿主机上仍存在或仍在运行的虚拟机,是否继续?', deleteNameHelper: '" 删除此虚拟机', isoSource: 'ISO 来源', isoTargetDir: 'ISO 保存路径', isoTargetDirHelper: '服务器选择和本地上传的 ISO 文件都会保存到该目录。', isoTargetDirAvailable: 'ISO 保存路径可用。', isoTargetDirUnavailable: 'ISO 保存路径必须位于可用的虚拟机存储池内。', + isoTargetDirCheckRequired: '请先检查 ISO 保存路径,检查通过后再保存。', checkPath: '检查', isoSize: 'ISO 大小', + deleteIsoConfirm: '删除操作不可回滚,是否继续?', + deleteSourceFile: '删除源文件', + deleteSourceFileHelper: '勾选后会同时删除该 ISO 记录引用的源文件,文件删除后无法恢复。', dir: '本地目录', }, cluster: {