From be68009432b004299e4e6b06ef2211edda4f0616 Mon Sep 17 00:00:00 2001 From: catborise Date: Thu, 5 Nov 2026 18:43:09 +0300 Subject: [PATCH] fix(instances): an ISO already in a CD-ROM of the VM is not added again A CD-ROM form sent twice (a double click, a resent request) added a second drive with the same ISO. The form is refused when the ISO is in a CD-ROM of the VM's running or persistent definition; an empty drive may still be added more than once. tr and zh too. --- instances/tests/test_duplicate_devices.py | 13 + instances/views.py | 7 +- locale/tr/LC_MESSAGES/django.mo | Bin 192584 -> 192704 bytes locale/tr/LC_MESSAGES/django.po | 621 +++++++++++----------- locale/zh/LC_MESSAGES/django.mo | Bin 180069 -> 180176 bytes locale/zh/LC_MESSAGES/django.po | 621 +++++++++++----------- 6 files changed, 645 insertions(+), 617 deletions(-) diff --git a/instances/tests/test_duplicate_devices.py b/instances/tests/test_duplicate_devices.py index b3108ef5..197b5485 100644 --- a/instances/tests/test_duplicate_devices.py +++ b/instances/tests/test_duplicate_devices.py @@ -60,3 +60,16 @@ class DuplicateDeviceTests(TestCase): self.assertEqual(self.post("add_network", form), [f"The VM already has a network device with MAC {MAC.upper()}"]) self.proxy.add_network.assert_called_once() + + def test_an_iso_in_a_cdrom_of_the_vm_is_not_added_again(self): + iso = "/var/lib/libvirt/isos/alma.iso" + self.proxy.get_iso_path.return_value = iso + with patch("instances.views.cdrom_bus_choices", return_value=["sata"]): + form = {"bus": "sata", "media": "alma.iso"} + self.post("add_cdrom", form) + self.proxy.attach_disk.assert_called_once() + self.proxy.get_media_devices.side_effect = lambda config=False: [{"path": iso, "dev": "sdb"}] if config else [] + self.assertEqual(self.post("add_cdrom", form), ["alma.iso is already in a CD-ROM of this VM"]) + # an empty drive may be added more than once + self.post("add_cdrom", {"bus": "sata", "media": ""}) + self.assertEqual(self.proxy.attach_disk.call_count, 2) diff --git a/instances/views.py b/instances/views.py index 801993e8..3e0d8af5 100755 --- a/instances/views.py +++ b/instances/views.py @@ -1626,6 +1626,11 @@ def add_cdrom(request, pk): if bus == "usb" and not image: messages.error(request, _("A USB CD-ROM needs an ISO image: libvirt has no empty USB drive")) return _back(request, pk, "disks") + path = instance.proxy.get_iso_path(image) if image else "" + # a form sent twice (a double click) adds the drive once + if path and path in {media["path"] for media in instance.media + instance.config_media}: + messages.error(request, _("%(image)s is already in a CD-ROM of this VM") % {"image": image}) + return _back(request, pk, "disks") target = utils.get_new_disk_dev( instance.media + instance.config_media, instance.disks + instance.config_disks, bus @@ -1634,7 +1639,7 @@ def add_cdrom(request, pk): with audit_vm(request, instance, f"add CD-ROM {target}" + (f" with {image}" if image else "")): instance.proxy.attach_disk( target, - instance.proxy.get_iso_path(image) if image else "", + path, disk_device="cdrom", cache_mode="none", target_bus=bus, diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index 1a43720d3243740e51145f09ec7399523d1e3836..0d026955b773269f1119245d0a628e2e7fba302c 100644 GIT binary patch delta 43023 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 delta 42925 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 diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index a23e7b7d..2dfa1215 100644 --- a/locale/tr/LC_MESSAGES/django.po +++ b/locale/tr/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-11-05 14:27+0000\n" +"POT-Creation-Date: 2026-11-05 15:43+0000\n" "PO-Revision-Date: 2020-11-04 12:00+0000\n" "Last-Translator: catborise , 2020\n" "Language-Team: Turkish (https://www.transifex.com/catborise/teams/110663/tr/)\n" @@ -523,7 +523,7 @@ msgid "Add" msgstr "Ekle" #: accounts/templates/profile.html:64 accounts/templates/profile.html:70 -#: accounts/views.py:70 accounts/views.py:74 +#: accounts/views.py:71 accounts/views.py:75 msgid "Create an API token" msgstr "API anahtarı oluştur" @@ -564,89 +564,89 @@ msgstr "" "\n" "%(url)s" -#: accounts/views.py:47 +#: accounts/views.py:48 msgid "Profile updated" msgstr "Profil güncellendi" -#: accounts/views.py:73 +#: accounts/views.py:74 #, python-format msgid "A user has at most %(limit)s API tokens: delete one first." msgstr "" "Bir kullanıcının en fazla %(limit)s API anahtarı olabilir: önce birini silin." -#: accounts/views.py:108 +#: accounts/views.py:109 msgid "API token deleted" msgstr "API anahtarı silindi" -#: accounts/views.py:116 +#: accounts/views.py:117 msgid "Delete API token" msgstr "API anahtarını sil" -#: accounts/views.py:117 +#: accounts/views.py:118 msgid "Scripts and tools that use it can no longer reach the API." msgstr "Onu kullanan betikler ve araçlar artık API'ye erişemez." -#: accounts/views.py:127 +#: accounts/views.py:128 msgid "SSH key added" msgstr "SSH anahtarı eklendi" -#: accounts/views.py:135 +#: accounts/views.py:136 msgid "Add SSH key" msgstr "SSH Anahtarı Ekle" -#: accounts/views.py:156 +#: accounts/views.py:157 msgid "SSH key deleted" msgstr "SSH anahtarı silindi" -#: accounts/views.py:164 +#: accounts/views.py:165 msgid "Delete SSH key" msgstr "SSH anahtarı sil" -#: accounts/views.py:165 +#: accounts/views.py:166 msgid "" "VMs that already have it keep it; VMs created from now on do not get it." msgstr "" "Ona zaten sahip olan sanal makinelerde kalır; bundan sonra oluşturulan sanal " "makinelere eklenmez." -#: accounts/views.py:213 +#: accounts/views.py:215 msgid "Password Changed" msgstr "Parola Değişti" -#: accounts/views.py:242 +#: accounts/views.py:244 msgid "Create User Instance" msgstr "Yeni Kullanıcı Sanal Makinesi Oluştur" -#: accounts/views.py:276 +#: accounts/views.py:278 msgid "Update User Instance" msgstr "Kullanıcı Sanal Makinesini Güncelle" -#: accounts/views.py:294 +#: accounts/views.py:296 msgid "The user loses access to this VM; the VM itself is not changed." msgstr "" "Kullanıcı bu sanal makineye erişimini kaybeder; sanal makinenin kendisi " "değişmez." -#: accounts/views.py:327 +#: accounts/views.py:329 #, python-format msgid "OTP Sent to %(email)s" msgstr "OTP %(email)s ye gönderildi" -#: accounts/views.py:336 +#: accounts/views.py:338 msgid "Email OTP" msgstr "OTP E-Postası" -#: accounts/views.py:370 +#: accounts/views.py:372 #, python-format msgid "The OTP QR code could not be mailed to %(user)s: %(error)s" msgstr "OTP QR kodu %(user)s kullanıcısına e-postayla gönderilemedi: %(error)s" -#: accounts/views.py:374 +#: accounts/views.py:376 #, python-format msgid "OTP QR code was emailed to user %(user)s" msgstr "OTP QR kodu %(user)s kullanıcısına gönderildi" -#: accounts/views.py:378 +#: accounts/views.py:380 msgid "User email not set, failed to send QR code" msgstr "Kullanıcı e-postası girilmemiş, QR kod gönderimi başarısız" @@ -909,16 +909,16 @@ msgstr "Sonuç" msgid "IP" msgstr "IP" -#: admin/templates/admin/logs.html:56 admin/views.py:282 instances/states.py:19 -#: logs/views.py:17 +#: admin/templates/admin/logs.html:56 admin/views.py:286 instances/states.py:19 +#: instances/views.py:419 instances/views.py:421 logs/views.py:17 msgid "Unknown" msgstr "Bilinmeyen" -#: admin/templates/admin/logs.html:56 admin/views.py:282 logs/views.py:17 +#: admin/templates/admin/logs.html:56 admin/views.py:286 logs/views.py:17 msgid "Done" msgstr "Tamamlandı" -#: admin/templates/admin/logs.html:56 admin/views.py:282 logs/views.py:17 +#: admin/templates/admin/logs.html:56 admin/views.py:286 logs/views.py:17 #: operations/templates/operations/job.html:107 msgid "Failed" msgstr "Başarısız" @@ -1055,7 +1055,7 @@ msgstr "Kullanıcı oluştur" msgid "New user" msgstr "Yeni kullanıcı" -#: admin/templates/admin/user_list.html:19 admin/views.py:122 +#: admin/templates/admin/user_list.html:19 admin/views.py:123 #: instances/templates/instances/settings_tab.html:79 templates/navbar.html:32 msgid "Users" msgstr "Kullanıcılar" @@ -1110,51 +1110,51 @@ msgstr "Burada belirlenen parolayla oturum açar." msgid "Signs in another way, such as LDAP. The current password is removed." msgstr "LDAP gibi başka bir yolla oturum açar. Mevcut parola kaldırılır." -#: admin/views.py:57 +#: admin/views.py:58 msgid "Create Group" msgstr "Grup Oluştur" -#: admin/views.py:81 +#: admin/views.py:82 msgid "Update Group" msgstr "Grubu Güncelle" -#: admin/views.py:97 +#: admin/views.py:98 msgid "Its members stay but lose the permissions it gave them." msgstr "Üyeleri kalır ancak grubun onlara verdiği izinleri kaybeder." -#: admin/views.py:103 +#: admin/views.py:104 msgid "You cannot block, delete or demote your own account" msgstr "Kendi hesabınızı engelleyemez, silemez veya yetkisini düşüremezsiniz" -#: admin/views.py:147 +#: admin/views.py:149 msgid "Create User" msgstr "Kullanıcı Oluştur" -#: admin/views.py:188 +#: admin/views.py:191 msgid "Update User" msgstr "Kullanıcı Güncelle" -#: admin/views.py:209 +#: admin/views.py:213 #, python-format msgid "Password changed for %(user)s" msgstr "%(user)s parolası değiştirildi" -#: admin/views.py:233 +#: admin/views.py:237 msgid "Their access to VMs, SSH keys and settings go; the VMs themselves stay." msgstr "" "Sanal makinelere erişimi, SSH anahtarları ve ayarları silinir; sanal " "makinelerin kendisi kalır." -#: admin/views.py:328 +#: admin/views.py:335 msgid "deleted user" msgstr "silinmiş kullanıcı" -#: admin/views.py:339 +#: admin/views.py:346 #, python-format msgid "Removed VM %(name)s deleted" msgstr "Kaldırılan sanal makine %(name)s silindi" -#: admin/views.py:346 +#: admin/views.py:353 msgid "Its owners no longer get the VM back if its UUID shows up again." msgstr "" "UUID'si yeniden görünse bile sahipleri sanal makineyi artık geri almaz." @@ -2375,7 +2375,7 @@ msgstr "" "Sunucudaki /etc/default/webvirt-gstfsd içindeki GSTFSD_KEY değerinin 64 " "onaltılık karakterini girin" -#: computes/views.py:199 +#: computes/views.py:202 #, python-format msgid "" "Its VMs keep running on the host and leave the panel; their owners are kept " @@ -2720,7 +2720,7 @@ msgstr "Klonun adını boş adlar listesinden seçin" msgid "%(quota)s: cannot create '%(clone_name)s'." msgstr "%(quota)s: '%(clone_name)s' oluşturulamıyor." -#: instances/jobs.py:197 instances/jobs.py:546 +#: instances/jobs.py:197 instances/jobs.py:549 #, python-format msgid "Instance '%(clone_name)s' already exists!" msgstr "'%(clone_name)s' sanal makinesi zaten mevcut!" @@ -2762,7 +2762,7 @@ msgstr "" msgid "Delete snapshot" msgstr "Anlık görüntüyü sil" -#: instances/jobs.py:313 vrtManager/instance.py:2286 +#: instances/jobs.py:313 vrtManager/instance.py:2298 #, python-format msgid "The VM has no external snapshot named %(name)s" msgstr "Sanal makinede %(name)s adında harici anlık görüntü yok" @@ -2797,36 +2797,36 @@ msgstr "Sanal makine artık işin çalıştığı sunucuda değil" msgid "Take snapshot" msgstr "Anlık görüntü al" -#: instances/jobs.py:381 vrtManager/instance.py:1882 +#: instances/jobs.py:381 instances/jobs.py:390 vrtManager/instance.py:1894 #, python-format msgid "A snapshot named %(name)s already exists" msgstr "%(name)s adında bir anlık görüntü zaten var" -#: instances/jobs.py:393 +#: instances/jobs.py:396 msgid "Taking the snapshot" msgstr "Anlık görüntü alınıyor" -#: instances/jobs.py:406 +#: instances/jobs.py:409 msgid "libvirt is still taking the snapshot" msgstr "libvirt anlık görüntüyü hâlâ alıyor" -#: instances/jobs.py:409 +#: instances/jobs.py:412 msgid "The snapshot was not taken" msgstr "Anlık görüntü alınmadı" -#: instances/jobs.py:432 +#: instances/jobs.py:435 msgid "Revert snapshot" msgstr "Snapshota dön" -#: instances/jobs.py:463 +#: instances/jobs.py:466 msgid "Reverting the VM" msgstr "Sanal makine geri döndürülüyor" -#: instances/jobs.py:474 +#: instances/jobs.py:477 msgid "libvirt is still reverting the VM" msgstr "libvirt sanal makineyi hâlâ geri döndürüyor" -#: instances/jobs.py:478 +#: instances/jobs.py:481 msgid "" "It cannot be told whether the VM was reverted; check it, then revert again or" " resolve this job." @@ -2834,12 +2834,12 @@ msgstr "" "Sanal makinenin geri döndürülüp döndürülmediği bilinemiyor; kontrol edin, " "sonra yeniden geri döndürün ya da bu işi çözün." -#: instances/jobs.py:495 +#: instances/jobs.py:498 msgid "The VM must be running, paused or shut off to be cloned" msgstr "" "Klonlanmak için sanal makine çalışıyor, duraklatılmış ya da kapalı olmalı" -#: instances/jobs.py:496 +#: instances/jobs.py:499 #, python-format msgid "" "The guest's file systems could not be thawed (%(error)s); thaw them with: " @@ -2848,19 +2848,19 @@ msgstr "" "Konuğun dosya sistemleri çözülemedi (%(error)s); şununla çözün: virsh " "domfsthaw %(vm)s" -#: instances/jobs.py:515 +#: instances/jobs.py:518 msgid "Clone VM" msgstr "Sanal makineyi klonla" -#: instances/jobs.py:556 instances/jobs.py:563 instances/jobs.py:831 +#: instances/jobs.py:559 instances/jobs.py:566 instances/jobs.py:834 msgid "Copying disks" msgstr "Diskler kopyalanıyor" -#: instances/jobs.py:615 +#: instances/jobs.py:618 msgid "libvirt has no result of the copy" msgstr "libvirt'te kopyanın sonucu yok" -#: instances/jobs.py:626 +#: instances/jobs.py:629 #, python-format msgid "" "The copy failed: %(error)s. The guest's file systems could not be thawed " @@ -2869,11 +2869,11 @@ msgstr "" "Kopyalama başarısız oldu: %(error)s. Konuğun dosya sistemleri çözülemedi " "(%(thaw)s); şununla çözün: virsh domfsthaw %(vm)s" -#: instances/jobs.py:629 instances/jobs.py:713 +#: instances/jobs.py:632 instances/jobs.py:716 msgid "The copy failed" msgstr "Kopyalama başarısız oldu" -#: instances/jobs.py:654 +#: instances/jobs.py:657 #, python-format msgid "" "The VM is no longer on the compute the job ran on; check these volumes, then " @@ -2882,7 +2882,7 @@ msgstr "" "Sanal makine artık işin çalıştığı sunucuda değil; şu birimleri kontrol edin, " "sonra bu işi çözün: %(volumes)s" -#: instances/jobs.py:689 +#: instances/jobs.py:692 #, python-format msgid "" "A volume of the clone was being created; check these volumes, then resolve " @@ -2891,15 +2891,15 @@ msgstr "" "Klonun bir birimi oluşturuluyordu; şu birimleri kontrol edin, sonra bu işi " "çözün: %(volumes)s" -#: instances/jobs.py:693 +#: instances/jobs.py:696 msgid "The job stopped before the copy started" msgstr "İş, kopyalama başlamadan durdu" -#: instances/jobs.py:700 +#: instances/jobs.py:703 msgid "libvirt is still copying the disks" msgstr "libvirt diskleri hâlâ kopyalıyor" -#: instances/jobs.py:703 +#: instances/jobs.py:706 #, python-format msgid "" "Another backup runs on the VM; check these volumes, then resolve this job: " @@ -2908,7 +2908,7 @@ msgstr "" "Sanal makinede başka bir yedekleme çalışıyor; şu birimleri kontrol edin, " "sonra bu işi çözün: %(volumes)s" -#: instances/jobs.py:708 +#: instances/jobs.py:711 #, python-format msgid "" "libvirt has no result of the copy; check these volumes, then resolve this " @@ -2917,140 +2917,140 @@ msgstr "" "libvirt'te kopyanın sonucu yok; şu birimleri kontrol edin, sonra bu işi " "çözün: %(volumes)s" -#: instances/jobs.py:736 instances/templates/create_instance_w1.html:60 +#: instances/jobs.py:739 instances/templates/create_instance_w1.html:60 #: instances/templates/create_instance_w2.html:356 msgid "Create VM" msgstr "Sanal makine oluştur" -#: instances/jobs.py:760 instances/jobs.py:805 instances/views.py:2491 +#: instances/jobs.py:763 instances/jobs.py:808 instances/views.py:2504 msgid "A virtual machine with this name already exists" msgstr "Bu isimde bir sanal makine mevcut" -#: instances/jobs.py:762 instances/jobs.py:802 +#: instances/jobs.py:765 instances/jobs.py:805 msgid "There is an instance with same name. Remove it and try again!" msgstr "Aynı isimde başka bir sanal makine var. Onu silip yeniden deneyin!" -#: instances/jobs.py:765 +#: instances/jobs.py:768 msgid "First you need to create or select an image" msgstr "Öncelikle bir imaj oluşturun ya da mevcut bir imajı seçin" -#: instances/jobs.py:767 +#: instances/jobs.py:770 msgid "Choose one disk source: a new disk, existing volumes or a template" msgstr "" "Tek bir disk kaynağı seçin: yeni bir disk, mevcut birimler ya da bir şablon" -#: instances/jobs.py:769 +#: instances/jobs.py:772 msgid "Image has already exist. Please check volumes or change instance name" msgstr "" "İmaj zaten mevcut. Lütfen ya makine adını değişin ya da disk alanlarını " "kontrol edin" -#: instances/jobs.py:771 +#: instances/jobs.py:774 msgid "Invalid cache mode" msgstr "Geçersiz önbellek modu" -#: instances/jobs.py:773 +#: instances/jobs.py:776 #, python-format msgid "This host offers no CPU mode or model %(mode)s" msgstr "Bu sunucu %(mode)s CPU modunu veya modelini sunmuyor" -#: instances/jobs.py:775 +#: instances/jobs.py:778 #, python-format msgid "A CD-ROM cannot use the %(bus)s bus" msgstr "CD-ROM %(bus)s veri yolunu kullanamaz" -#: instances/jobs.py:778 +#: instances/jobs.py:781 msgid "The cloud-init seed is read from a CD-ROM: choose its bus" msgstr "cloud-init tohumu bir CD-ROM'dan okunur: veri yolunu seçin" -#: instances/jobs.py:781 +#: instances/jobs.py:784 msgid "The cloud-init seed needs a directory storage pool for the disk" msgstr "cloud-init tohumu, disk için bir dizin depolama havuzu gerektirir" -#: instances/jobs.py:787 +#: instances/jobs.py:790 #, python-format msgid "This host offers no firmware %(firmware)s" msgstr "Bu sunucu %(firmware)s firmware'ini sunmuyor" -#: instances/jobs.py:789 vrtManager/instance.py:3010 +#: instances/jobs.py:792 vrtManager/instance.py:3022 msgid "This host offers no TPM 2.0: install swtpm on it" msgstr "Bu sunucu TPM 2.0 sunmuyor: üzerine swtpm kurun" -#: instances/jobs.py:850 +#: instances/jobs.py:853 msgid "Writing the cloud-init seed" msgstr "cloud-init tohumu yazılıyor" -#: instances/jobs.py:857 +#: instances/jobs.py:860 msgid "Defining the VM" msgstr "Sanal makine tanımlanıyor" -#: instances/jobs.py:890 +#: instances/jobs.py:893 #, python-format msgid "%(error)s. Remove these volumes by hand: %(volumes)s" msgstr "%(error)s. Şu birimleri elle silin: %(volumes)s" -#: instances/jobs.py:915 +#: instances/jobs.py:918 #, python-format msgid "The instance is already on %(compute)s" msgstr "Sanal makine zaten %(compute)s üzerinde" -#: instances/jobs.py:917 +#: instances/jobs.py:920 #, python-format msgid "%(compute)s is not reachable" msgstr "%(compute)s sunucusuna ulaşılamıyor" -#: instances/jobs.py:919 +#: instances/jobs.py:922 #, python-format msgid "%(compute)s is the VM's own host under another name" msgstr "%(compute)s, sanal makinenin kendi sunucusunun başka bir adı" -#: instances/jobs.py:937 +#: instances/jobs.py:940 msgid "Migrate VM" msgstr "Sanal makineyi taşı" -#: instances/jobs.py:981 +#: instances/jobs.py:984 msgid "Migrating the VM" msgstr "Sanal makine taşınıyor" -#: instances/jobs.py:1028 +#: instances/jobs.py:1031 msgid "libvirt is still migrating the VM" msgstr "libvirt sanal makineyi hâlâ taşıyor" -#: instances/jobs.py:1035 +#: instances/jobs.py:1038 msgid "The VM stayed on the source host" msgstr "Sanal makine kaynak sunucuda kaldı" -#: instances/jobs.py:1037 +#: instances/jobs.py:1040 msgid "" "The VM is on both computes or on neither; check them, then resolve this job." msgstr "" "Sanal makine ya iki sunucuda da var ya da hiçbirinde yok; kontrol edin, sonra" " bu işi çözün." -#: instances/jobs.py:1085 +#: instances/jobs.py:1088 msgid "Move disk" msgstr "Diski taşı" -#: instances/jobs.py:1092 +#: instances/jobs.py:1095 msgid "Choose a disk of the VM" msgstr "Sanal makinenin bir diskini seçin" -#: instances/jobs.py:1116 +#: instances/jobs.py:1119 msgid "Copying the disk" msgstr "Disk kopyalanıyor" -#: instances/jobs.py:1159 +#: instances/jobs.py:1162 #, python-format msgid "Another block job runs on %(dev)s; check the VM" msgstr "" "%(dev)s üzerinde başka bir blok işi çalışıyor; sanal makineyi kontrol edin" -#: instances/jobs.py:1165 +#: instances/jobs.py:1168 #, python-format msgid "The disk stayed in %(path)s; remove %(dest)s if it is there" msgstr "Disk %(path)s içinde kaldı; varsa %(dest)s dosyasını silin" -#: instances/jobs.py:1167 +#: instances/jobs.py:1170 #, python-format msgid "The definitions of %(dev)s name %(paths)s; check the VM" msgstr "%(dev)s tanımları %(paths)s gösteriyor; sanal makineyi kontrol edin" @@ -3282,7 +3282,7 @@ msgid "Disk source" msgstr "Disk kaynağı" #: instances/templates/add_instance_volume.html:21 -#: instances/templates/create_instance_w2.html:134 instances/views.py:2510 +#: instances/templates/create_instance_w2.html:134 instances/views.py:2523 msgid "New disk" msgstr "Yeni disk" @@ -3654,7 +3654,7 @@ msgstr "Özel CPU modelleri" msgid "Size (GiB)" msgstr "Boyut (GiB)" -#: instances/templates/create_instance_w2.html:161 instances/views.py:2511 +#: instances/templates/create_instance_w2.html:161 instances/views.py:2524 msgid "Existing volumes" msgstr "Mevcut birimler" @@ -3690,7 +3690,7 @@ msgstr "Aygıt" msgid "Remove" msgstr "Kaldır" -#: instances/templates/create_instance_w2.html:194 instances/views.py:2512 +#: instances/templates/create_instance_w2.html:194 instances/views.py:2525 msgid "Clone from template" msgstr "Şablondan klonla" @@ -5802,12 +5802,12 @@ msgstr "En son satırlar, en yenisi önce." msgid "All of this VM's logs" msgstr "Bu sanal makinenin tüm logları" -#: instances/utils.py:67 +#: instances/utils.py:68 #, python-format msgid "The disk files cannot be checked on %(host)s: %(err)s" msgstr "Disk dosyaları %(host)s üzerinde denetlenemiyor: %(err)s" -#: instances/utils.py:80 +#: instances/utils.py:81 msgid "" "The quota cannot be checked because a host of your virtual machines cannot be" " reached. Nothing was changed." @@ -5815,81 +5815,81 @@ msgstr "" "Sanal makinelerinizin bir sunucusuna erişilemediği için kota denetlenemiyor. " "Hiçbir şey değiştirilmedi." -#: instances/utils.py:86 +#: instances/utils.py:87 msgid "The quota of virtual machines is reached" msgstr "Sanal makine kotası doldu" -#: instances/utils.py:87 +#: instances/utils.py:88 msgid "The vCPU quota is reached" msgstr "vCPU kotası doldu" -#: instances/utils.py:88 +#: instances/utils.py:89 msgid "The memory quota is reached" msgstr "Bellek kotası doldu" -#: instances/utils.py:89 +#: instances/utils.py:90 msgid "The disk quota is reached" msgstr "Disk kotası doldu" -#: instances/utils.py:98 +#: instances/utils.py:99 #, python-format msgid "%(quota)s (%(total)s > %(limit)s)" msgstr "%(quota)s (%(total)s > %(limit)s)" -#: instances/utils.py:194 +#: instances/utils.py:195 msgid "None available device name" msgstr "Hiçbiri uygun aygıt adı değil" -#: instances/utils.py:395 +#: instances/utils.py:398 #, python-format msgid "%(hostname)s via %(address)s" msgstr "%(address)s üzerinden %(hostname)s" -#: instances/utils.py:434 +#: instances/utils.py:437 msgid "Invalid MAC address" msgstr "Geçersiz MAC adresi" -#: instances/utils.py:436 +#: instances/utils.py:439 msgid "More MAC addresses than networks" msgstr "Ağlardan daha fazla MAC adresi" -#: instances/views.py:172 +#: instances/views.py:173 msgid "Enter an IP address, a network such as 192.0.2.0/24, or a MAC address." msgstr "Bir IP adresi, 192.0.2.0/24 gibi bir ağ ya da bir MAC adresi girin." -#: instances/views.py:178 instances/views.py:212 +#: instances/views.py:179 instances/views.py:213 msgid "Too many searches are still running; try again shortly." msgstr "Çok fazla arama hâlâ çalışıyor; birazdan yeniden deneyin." -#: instances/views.py:260 +#: instances/views.py:261 #, python-format msgid "The host %(host)s of '%(name)s' cannot be reached: %(error)s" msgstr "'%(name)s' sanal makinesinin sunucusu %(host)s erişilemiyor: %(error)s" -#: instances/views.py:266 +#: instances/views.py:267 #, python-format msgid "The host of '%(name)s' cannot be reached right now." msgstr "'%(name)s' sanal makinesinin sunucusuna şu anda erişilemiyor." -#: instances/views.py:267 +#: instances/views.py:268 msgid " Jobs on it can be followed under Jobs in the menu." msgstr " Üzerindeki işler menüdeki İşler bölümünden izlenebilir." -#: instances/views.py:275 +#: instances/views.py:276 #, python-format msgid "'%(name)s' is no longer on its host." msgstr "'%(name)s' artık sunucusunda yok." -#: instances/views.py:373 +#: instances/views.py:374 msgid "There is no other host to migrate to." msgstr "Taşınacak başka bir sunucu yok." -#: instances/views.py:375 +#: instances/views.py:376 msgid "A VM migrates when it is running, paused or shut off." msgstr "" "Sanal makine çalışırken, duraklatılmışken ya da kapalıyken taşınabilir." -#: instances/views.py:377 +#: instances/views.py:378 msgid "" "A VM with snapshots cannot be migrated: its snapshots stay on this host. " "Delete them first." @@ -5897,7 +5897,7 @@ msgstr "" "Anlık görüntüsü olan bir sanal makine taşınamaz: anlık görüntüleri bu " "sunucuda kalır. Önce onları silin." -#: instances/views.py:379 +#: instances/views.py:380 msgid "" "A VM with host devices cannot be migrated: the destination may not have them." " Remove them first." @@ -5905,11 +5905,11 @@ msgstr "" "Sunucu aygıtları olan bir sanal makine taşınamaz: hedefte bu aygıtlar " "olmayabilir. Önce onları kaldırın." -#: instances/views.py:641 +#: instances/views.py:644 msgid "The VM was moved meanwhile; try again." msgstr "Sanal makine bu arada taşındı; yeniden deneyin." -#: instances/views.py:757 +#: instances/views.py:760 msgid "" "The running VM has no free PCI slot for another disk on this bus: choose the " "scsi bus if the VM has a SCSI controller, or shut the VM down and add the " @@ -5922,7 +5922,7 @@ msgstr "" "yuvaları ekle, sonraki başlatmadan itibaren ona boş yuvalar verir. Yeni bir " "birim havuzunda kalır, mevcut birim olarak eklenebilir." -#: instances/views.py:761 +#: instances/views.py:764 msgid "" "The running VM has no free PCI slot for the SCSI controller the disk needs: " "shut the VM down and add the disk then; Add PCIe slots on the Disks tab gives" @@ -5934,191 +5934,191 @@ msgstr "" "PCIe yuvaları ekle, sonraki başlatmadan itibaren ona boş yuvalar verir. Yeni " "bir birim havuzunda kalır, mevcut birim olarak eklenebilir." -#: instances/views.py:779 +#: instances/views.py:782 #, python-format msgid "Invalid disk options: %(options)s" msgstr "Geçersiz disk seçenekleri: %(options)s" -#: instances/views.py:789 instances/views.py:804 +#: instances/views.py:792 instances/views.py:807 msgid "Templates cannot be started." msgstr "Şablon makineler başlatılamaz." -#: instances/views.py:900 +#: instances/views.py:903 #, python-format msgid "Disk %(path)s was kept: a disk file that stays needs it" msgstr "%(path)s diski korundu: kalan bir disk dosyası ona ihtiyaç duyuyor" -#: instances/views.py:906 +#: instances/views.py:909 #, python-format msgid "The VM is removed, but disk %(path)s was not deleted: %(err)s" msgstr "Sanal makine kaldırıldı, ancak %(path)s diski silinmedi: %(err)s" -#: instances/views.py:915 +#: instances/views.py:918 #, python-format msgid "Disk %(path)s is used by another VM and was kept" msgstr "" "%(path)s diski başka bir sanal makine tarafından kullanılıyor ve korundu" -#: instances/views.py:1037 +#: instances/views.py:1040 #, python-format msgid "Set the gstfsd key of %(compute)s first (Computes, edit the host)" msgstr "" "Önce %(compute)s sunucusunun gstfsd anahtarını ayarlayın (Sunucular, sunucuyu" " düzenle)" -#: instances/views.py:1044 instances/views.py:1059 instances/views.py:1068 +#: instances/views.py:1047 instances/views.py:1065 instances/views.py:1074 #, python-format msgid "gstfsd error: %(err)s" msgstr "gstfsd hatası: %(err)s" -#: instances/views.py:1069 +#: instances/views.py:1075 msgid "the reply is not signed with the key" msgstr "yanıt anahtarla imzalanmamış" -#: instances/views.py:1077 +#: instances/views.py:1083 msgid "Shut the VM down, or start its QEMU guest agent, and try again" msgstr "" "Sanal makineyi kapatın ya da QEMU konuk ajanını başlatın ve yeniden deneyin" -#: instances/views.py:1090 +#: instances/views.py:1096 msgid "The change may still be made when the agent answers again." msgstr "Ajan yeniden yanıt verdiğinde değişiklik yine de yapılabilir." -#: instances/views.py:1117 +#: instances/views.py:1124 msgid "Reset root password" msgstr "Root parolasını sıfırla" -#: instances/views.py:1121 +#: instances/views.py:1128 msgid "Enter a password" msgstr "Bir parola girin" -#: instances/views.py:1135 +#: instances/views.py:1142 msgid "Select an SSH public key" msgstr "Bir SSH açık anahtarı seçin" -#: instances/views.py:1157 +#: instances/views.py:1164 #, python-format msgid "Installed new SSH public key %(keyname)s" msgstr "Yeni %(keyname)s SSH açık anahtarı yüklendi" -#: instances/views.py:1177 +#: instances/views.py:1184 msgid "Enter a whole number of vCPUs" msgstr "vCPU sayısı için bir tam sayı girin" -#: instances/views.py:1181 +#: instances/views.py:1188 msgid "Shut off the VM to change its vCPUs" msgstr "vCPU'larını değiştirmek için sanal makineyi kapatın" -#: instances/views.py:1184 +#: instances/views.py:1191 msgid "The current vCPUs cannot be more than the maximum" msgstr "Geçerli vCPU sayısı en fazla değerden büyük olamaz" -#: instances/views.py:1191 +#: instances/views.py:1198 #, python-format msgid "%(quota)s: cannot resize the CPU of '%(instance_name)s'." msgstr "%(quota)s: '%(instance_name)s' CPU'su yeniden boyutlandırılamıyor." -#: instances/views.py:1199 +#: instances/views.py:1206 #, python-format msgid "vCPUs set to %(cur)s (maximum %(max)s)" msgstr "vCPU sayısı %(cur)s olarak ayarlandı (en fazla %(max)s)" -#: instances/views.py:1218 +#: instances/views.py:1225 msgid "Enter a whole number for memory" msgstr "Bellek için bir tam sayı girin" -#: instances/views.py:1221 +#: instances/views.py:1228 msgid "The current memory cannot be more than the maximum" msgstr "Geçerli bellek en fazla değerden büyük olamaz" -#: instances/views.py:1225 +#: instances/views.py:1232 #, python-format msgid "%(quota)s: cannot resize the memory of '%(instance_name)s'." msgstr "%(quota)s: '%(instance_name)s' belleği yeniden boyutlandırılamıyor." -#: instances/views.py:1231 +#: instances/views.py:1238 #, python-format msgid "Memory set to %(cur)s MiB (maximum %(max)s MiB)" msgstr "Bellek %(cur)s MiB olarak ayarlandı (en fazla %(max)s MiB)" -#: instances/views.py:1251 +#: instances/views.py:1258 msgid "Enter disk sizes as whole GiB" msgstr "Disk boyutlarını tam GiB olarak girin" -#: instances/views.py:1255 +#: instances/views.py:1262 #, python-format msgid "%(dev)s is %(size)s: a disk cannot shrink" msgstr "%(dev)s boyutu %(size)s: disk küçültülemez" -#: instances/views.py:1263 +#: instances/views.py:1270 msgid "No disks were selected or valid for resizing." msgstr "Boyutlandırma için seçilmiş ya da geçerli disk yok." -#: instances/views.py:1272 +#: instances/views.py:1279 #, python-format msgid "%(quota)s: cannot resize the disks of '%(instance_name)s'." msgstr "%(quota)s: '%(instance_name)s' diskleri yeniden boyutlandırılamıyor." -#: instances/views.py:1284 +#: instances/views.py:1291 #, python-format msgid "The storage pool of %(dev)s cannot resize its volumes" msgstr "%(dev)s diskinin depolama havuzu birimlerini boyutlandıramaz" -#: instances/views.py:1286 +#: instances/views.py:1293 #, python-format msgid "Disk is resized: %(dev)s" msgstr "Disk boyutu değiştirildi: %(dev)s" -#: instances/views.py:1380 +#: instances/views.py:1387 msgid "The VM's machine has no PCIe slots to add" msgstr "Sanal makinenin makine tipinde eklenecek PCIe yuvası yok" -#: instances/views.py:1385 +#: instances/views.py:1392 #, python-format msgid "%(count)s PCIe slots added" msgstr "%(count)s PCIe yuvası eklendi" -#: instances/views.py:1387 +#: instances/views.py:1394 #, python-format msgid "%(count)s PCIe slots added: the VM gets them at its next start" msgstr "" "%(count)s PCIe yuvası eklendi: sanal makine bunları sonraki başlatmasında " "alır" -#: instances/views.py:1433 +#: instances/views.py:1440 #, python-format msgid "%(volume)s is already a disk of this VM" msgstr "%(volume)s zaten bu sanal makinenin bir diski" -#: instances/views.py:1523 +#: instances/views.py:1530 msgid "Volume changes are applied. But it will be activated after shutdown" msgstr "" "Birim değişiklikleri uygulandı. Ama yeniden başlatıldıktan sonra uygulanacak" -#: instances/views.py:1528 +#: instances/views.py:1535 msgid "Volume is changed successfully." msgstr "Birim başarıyla değiştirildi." -#: instances/views.py:1546 +#: instances/views.py:1553 #, python-format msgid "Disk %(dev)s is not a storage volume of this instance" msgstr "%(dev)s diski bu sanal makinenin bir depolama birimi değil" -#: instances/views.py:1553 +#: instances/views.py:1560 #, python-format msgid "Disk %(dev)s has a pending change; delete it once the VM is shut down" msgstr "" "%(dev)s diskinin bekleyen bir değişikliği var; sanal makine kapatıldığında " "silin" -#: instances/views.py:1568 +#: instances/views.py:1575 #, python-format msgid "Volume %(vol)s is used by another VM; detach it instead" msgstr "" "%(vol)s birimi başka bir sanal makine tarafından kullanılıyor; onun yerine " "ayırın" -#: instances/views.py:1580 +#: instances/views.py:1587 #, python-format msgid "" "The guest has not released disk %(dev)s yet; volume %(vol)s was kept. Delete " @@ -6127,57 +6127,62 @@ msgstr "" "Konuk sistem %(dev)s diskini henüz bırakmadı; %(vol)s birimi korundu. Sanal " "makine kapatıldığında depolama havuzundan silin." -#: instances/views.py:1591 +#: instances/views.py:1598 #, python-format msgid "Disk %(dev)s was detached, but its volume was kept: %(err)s" msgstr "%(dev)s diski ayrıldı, ancak birimi korundu: %(err)s" -#: instances/views.py:1617 +#: instances/views.py:1624 #, python-format msgid "This VM cannot take a CD-ROM on the %(bus)s bus now" msgstr "Bu sanal makineye şu anda %(bus)s veri yolunda CD-ROM eklenemez" -#: instances/views.py:1620 +#: instances/views.py:1627 msgid "A USB CD-ROM needs an ISO image: libvirt has no empty USB drive" msgstr "USB CD-ROM bir ISO imajı ister: libvirt boş USB sürücü desteklemiyor" -#: instances/views.py:1701 +#: instances/views.py:1632 +#, python-format +msgid "%(image)s is already in a CD-ROM of this VM" +msgstr "%(image)s bu sanal makinenin bir CD-ROM'unda zaten takılı" + +#: instances/views.py:1713 #, python-format msgid "Pool %(pool)s was not read again: %(err)s" msgstr "%(pool)s havuzu yeniden okunamadı: %(err)s" -#: instances/views.py:1722 +#: instances/views.py:1734 #, python-format msgid "Snapshot was not deleted: %(err)s" msgstr "Anlık görüntü silinmedi: %(err)s" -#: instances/views.py:1837 +#: instances/views.py:1849 msgid "Add at least one device to the boot order." msgstr "Ön yükleme sırasına en az bir aygıt ekleyin." -#: instances/views.py:1851 +#: instances/views.py:1863 msgid "Boot order changed. It applies at the next start." msgstr "Ön yükleme sırası değiştirildi. Sonraki başlatmada uygulanır." -#: instances/views.py:1853 +#: instances/views.py:1865 msgid "Boot order changed successfully." msgstr "Ön yükleme sırası başarıyla değiştirildi." -#: instances/views.py:1873 +#: instances/views.py:1885 msgid "The XML is empty" msgstr "XML boş" -#: instances/views.py:1877 instances/views.py:2501 +#: instances/views.py:1889 instances/views.py:2514 #, python-format msgid "The XML is not well-formed: %(error)s" msgstr "XML düzgün biçimlendirilmemiş: %(error)s" -#: instances/views.py:1879 +#: instances/views.py:1891 #, python-format msgid "The XML must keep the VM's UUID %(uuid)s." msgstr "XML, sanal makinenin %(uuid)s UUID'sini korumalıdır." -#: instances/views.py:1883 +#: instances/views.py:1895 msgid "" "The definition has changed since the editor was opened. Reload the page to " "edit the current one." @@ -6185,40 +6190,40 @@ msgstr "" "Düzenleyici açıldığından beri tanım değişti. Geçerli tanımı düzenlemek için " "sayfayı yeniden yükleyin." -#: instances/views.py:1895 +#: instances/views.py:1907 msgid "The XML definition was saved." msgstr "XML tanımı kaydedildi." -#: instances/views.py:1897 +#: instances/views.py:1909 msgid "The XML definition was saved; the VM uses it from its next start." msgstr "" "XML tanımı kaydedildi; sanal makine onu sonraki başlatmasından itibaren " "kullanır." -#: instances/views.py:1978 +#: instances/views.py:1990 msgid "Select one network interface to change" msgstr "Değiştirilecek bir ağ arabirimi seçin" -#: instances/views.py:2016 +#: instances/views.py:2028 msgid "Network Device Config is changed. Please shutdown instance to activate." msgstr "" "Ağ aygıtı yapılandırması değiştirildi. Aktifleştirmek için lütfen sanal " "makineyi kapatın." -#: instances/views.py:2018 +#: instances/views.py:2030 msgid "Network device changed" msgstr "Ağ aygıtı değiştirildi" -#: instances/views.py:2030 +#: instances/views.py:2042 msgid "No network selected" msgstr "Ağ seçilmedi" -#: instances/views.py:2035 +#: instances/views.py:2047 #, python-format msgid "The VM already has a network device with MAC %(mac)s" msgstr "Sanal makinede %(mac)s MAC adresli bir ağ aygıtı zaten var" -#: instances/views.py:2054 +#: instances/views.py:2066 msgid "" "The running VM has no free PCI slot for another network device: shut it down " "and add the device then; Add PCIe slots on the Disks tab gives it free ones " @@ -6228,21 +6233,21 @@ msgstr "" "aygıtı sonra ekleyin; Diskler sekmesindeki PCIe yuvaları ekle, sonraki " "başlatmadan itibaren ona boş yuvalar verir." -#: instances/views.py:2095 instances/views.py:2101 +#: instances/views.py:2107 instances/views.py:2113 msgid "The VM has it" msgstr "Sanal makinede var" -#: instances/views.py:2132 +#: instances/views.py:2144 #, python-format msgid "The host has no USB device %(device)s" msgstr "Sunucuda %(device)s USB aygıtı yok" -#: instances/views.py:2153 +#: instances/views.py:2165 #, python-format msgid "The host has no PCI device %(device)s" msgstr "Sunucuda %(device)s PCI aygıtı yok" -#: instances/views.py:2171 +#: instances/views.py:2183 #, python-format msgid "" "Removal of PCI device %(address)s requested: the guest has not let it go yet;" @@ -6252,20 +6257,20 @@ msgstr "" "bırakmadı; bırakana ya da sanal makine durana kadar çalışan sanal makinede " "kalır." -#: instances/views.py:2216 instances/views.py:2246 +#: instances/views.py:2228 instances/views.py:2258 msgid "Select a network interface and a QoS direction" msgstr "Bir ağ arabirimi ve bir QoS yönü seçin" -#: instances/views.py:2219 vrtManager/network.py:459 +#: instances/views.py:2231 vrtManager/network.py:459 msgid "QoS rates must be whole numbers" msgstr "QoS hızları tam sayı olmalıdır" -#: instances/views.py:2226 networks/views.py:229 +#: instances/views.py:2238 networks/views.py:229 #, python-format msgid "%(qos_dir)s QoS is set" msgstr "%(qos_dir)s QoS ayarlandı" -#: instances/views.py:2231 +#: instances/views.py:2243 #, python-format msgid "" "%(qos_dir)s QoS is set. A running VM gets it after it is powered off and on." @@ -6273,12 +6278,12 @@ msgstr "" "%(qos_dir)s QoS ayarlandı. Çalışan bir sanal makine, kapatılıp açıldıktan " "sonra bunu alır." -#: instances/views.py:2253 networks/views.py:255 +#: instances/views.py:2265 networks/views.py:255 #, python-format msgid "%(qos_dir)s QoS is deleted" msgstr "%(qos_dir)s QoS silindi" -#: instances/views.py:2258 +#: instances/views.py:2270 #, python-format msgid "" "%(qos_dir)s QoS is deleted. A running VM keeps the old limit until it is " @@ -6287,21 +6292,21 @@ msgstr "" "%(qos_dir)s QoS silindi. Çalışan bir sanal makine, kapatılıp açılana kadar " "eski sınırı korur." -#: instances/views.py:2286 +#: instances/views.py:2298 msgid "Only one owner is allowed and the one already added" msgstr "Sadece bir sahibe izin verilmiştir ve bir sahip zaten eklenmiş" -#: instances/views.py:2288 +#: instances/views.py:2300 #, python-format msgid "%(user)s is already an owner" msgstr "%(user)s zaten bir sahip" -#: instances/views.py:2332 +#: instances/views.py:2345 #, python-format msgid "Console settings were not saved: %(errors)s" msgstr "Konsol ayarları kaydedilmedi: %(errors)s" -#: instances/views.py:2354 +#: instances/views.py:2367 msgid "" "Error setting console password. You should check that your instance have an " "graphic device." @@ -6309,65 +6314,65 @@ msgstr "" "Konsol parolası ayarlanırken hata oluştu. Sanal makinenin bir grafik aygıtına" " sahip olduğundan emin olunuz." -#: instances/views.py:2401 +#: instances/views.py:2414 msgid "Shut the VM down to change whether it is a template." msgstr "Şablon olup olmadığını değiştirmek için sanal makineyi kapatın." -#: instances/views.py:2407 +#: instances/views.py:2420 #, python-format msgid "%(quota)s: '%(instance_name)s' stays a template." msgstr "%(quota)s: '%(instance_name)s' şablon olarak kalıyor." -#: instances/views.py:2489 +#: instances/views.py:2502 msgid "The XML has no name" msgstr "XML'de ad yok" -#: instances/views.py:2503 webvirtcloud/middleware.py:126 +#: instances/views.py:2516 webvirtcloud/middleware.py:126 #, python-format msgid "libvirt Error - %(exception)s" msgstr "libvirt Hatası - %(exception)s" -#: instances/views.py:2510 +#: instances/views.py:2523 msgid "An empty disk of the size you set" msgstr "Belirlediğiniz boyutta boş bir disk" -#: instances/views.py:2511 +#: instances/views.py:2524 msgid "Volumes already in a pool" msgstr "Bir havuzda zaten bulunan birimler" -#: instances/views.py:2512 +#: instances/views.py:2525 msgid "A copy of a template volume" msgstr "Bir şablon biriminin kopyası" -#: instances/views.py:2601 +#: instances/views.py:2614 msgid "You haven't defined any storage pools" msgstr "Hiç bir depolama havuzu tanımlamadınız" -#: instances/views.py:2603 +#: instances/views.py:2616 msgid "You haven't defined any network pools" msgstr "Hiç bir ağ havuzu tanımlamadınız" -#: instances/views.py:2666 +#: instances/views.py:2679 msgid "Flavor Created" msgstr "Flavor Oluşturuldu" -#: instances/views.py:2674 +#: instances/views.py:2687 msgid "Create Flavor" msgstr "Kullanıcı Oluştur" -#: instances/views.py:2689 +#: instances/views.py:2702 msgid "Flavor Updated" msgstr "Flavor Güncellendi" -#: instances/views.py:2695 +#: instances/views.py:2708 msgid "Update Flavor" msgstr "Flavor Güncelle" -#: instances/views.py:2707 +#: instances/views.py:2720 msgid "Flavor Deleted" msgstr "Flavor Silindi" -#: instances/views.py:2713 +#: instances/views.py:2726 msgid "Only the size template goes; VMs made from it keep their size." msgstr "" "Yalnızca boyut şablonu silinir; ondan oluşturulan sanal makineler boyutlarını" @@ -8879,61 +8884,61 @@ msgstr "Bağlantı kapandı (%(reason)s)" msgid "Connection Failed: %(host)s is not connected" msgstr "Bağlantı başarısız: %(host)s bağlı değil" -#: vrtManager/instance.py:134 +#: vrtManager/instance.py:138 msgid "A running or paused VM cannot be migrated offline" msgstr "Çalışan veya duraklatılmış bir sanal makine çevrimdışı taşınamaz" -#: vrtManager/instance.py:137 +#: vrtManager/instance.py:141 msgid "The VM can be migrated when it is running, paused or shut off" msgstr "Sanal makine çalışırken, duraklatılmışken veya kapalıyken taşınabilir" -#: vrtManager/instance.py:160 +#: vrtManager/instance.py:164 msgid "A VM with snapshots cannot be migrated" msgstr "Anlık görüntüleri olan bir sanal makine taşınamaz" -#: vrtManager/instance.py:163 +#: vrtManager/instance.py:167 msgid "A VM with a saved state cannot be migrated" msgstr "Kaydedilmiş durumu olan bir sanal makine taşınamaz" -#: vrtManager/instance.py:170 +#: vrtManager/instance.py:174 msgid "A VM with host devices cannot be migrated; remove them first" msgstr "Sunucu aygıtları olan bir sanal makine taşınamaz; önce onları kaldırın" -#: vrtManager/instance.py:176 +#: vrtManager/instance.py:180 #, python-format msgid "The destination host does not have these disks of the VM: %(disks)s" msgstr "Hedef sunucuda sanal makinenin şu diskleri yok: %(disks)s" -#: vrtManager/instance.py:177 +#: vrtManager/instance.py:181 #, python-format msgid "%(target)s (%(source)s)" msgstr "%(target)s (%(source)s)" -#: vrtManager/instance.py:185 +#: vrtManager/instance.py:189 msgid "Destination host emulator is different. Cannot be migrated" msgstr "Hedef sunucunun emülatörü farklı. Taşınamaz" -#: vrtManager/instance.py:316 +#: vrtManager/instance.py:320 msgid "an image is not copied; eject it first" msgstr "bir imaj kopyalanmaz; önce onu çıkarın" -#: vrtManager/instance.py:319 +#: vrtManager/instance.py:323 msgid "a read-only or encrypted disk is not copied" msgstr "salt okunur veya şifreli bir disk kopyalanmaz" -#: vrtManager/instance.py:322 +#: vrtManager/instance.py:326 msgid "only raw and qcow2 disks are copied" msgstr "yalnızca raw ve qcow2 diskler kopyalanır" -#: vrtManager/instance.py:324 +#: vrtManager/instance.py:328 msgid "no storage pool of the source host has it" msgstr "kaynak sunucunun hiçbir depolama havuzunda yok" -#: vrtManager/instance.py:326 +#: vrtManager/instance.py:330 msgid "a disk with a backing file is not copied" msgstr "temel (backing) dosyası olan bir disk kopyalanmaz" -#: vrtManager/instance.py:346 +#: vrtManager/instance.py:350 #, python-format msgid "" "%(target)s (%(path)s): the destination host does not share it; choose a pool " @@ -8942,12 +8947,12 @@ msgstr "" "%(target)s (%(path)s): hedef sunucu bunu paylaşmıyor; kopyalanacağı bir havuz" " seçin" -#: vrtManager/instance.py:350 +#: vrtManager/instance.py:354 #, python-format msgid "%(target)s (%(path)s): %(refusal)s" msgstr "%(target)s (%(path)s): %(refusal)s" -#: vrtManager/instance.py:355 +#: vrtManager/instance.py:359 #, python-format msgid "" "%(target)s (%(path)s): the destination host has no pool %(pool)s for disk " @@ -8955,7 +8960,7 @@ msgid "" msgstr "" "%(target)s (%(path)s): hedef sunucuda disk dosyaları için %(pool)s havuzu yok" -#: vrtManager/instance.py:362 +#: vrtManager/instance.py:366 #, python-format msgid "" "%(target)s (%(path)s): pool %(pool)s of the destination host already has a " @@ -8964,17 +8969,17 @@ msgstr "" "%(target)s (%(path)s): hedef sunucunun %(pool)s havuzunda zaten %(file)s " "dosyası var" -#: vrtManager/instance.py:366 +#: vrtManager/instance.py:370 #, python-format msgid "%(target)s (%(path)s): another disk is copied to %(dest)s" msgstr "%(target)s (%(path)s): başka bir disk %(dest)s konumuna kopyalanıyor" -#: vrtManager/instance.py:371 +#: vrtManager/instance.py:375 #, python-format msgid "%(target)s: the VM has no disk file to copy" msgstr "%(target)s: sanal makinenin kopyalanacak disk dosyası yok" -#: vrtManager/instance.py:375 +#: vrtManager/instance.py:379 #, python-format msgid "" "%(target)s (%(path)s) of the next start: the destination host does not share " @@ -8983,12 +8988,12 @@ msgstr "" "Sonraki başlatmanın %(target)s (%(path)s) diski: hedef sunucu bunu " "paylaşmıyor" -#: vrtManager/instance.py:379 +#: vrtManager/instance.py:383 #, python-format msgid "The disks cannot be migrated: %(problems)s" msgstr "Diskler taşınamaz: %(problems)s" -#: vrtManager/instance.py:392 +#: vrtManager/instance.py:396 #, python-format msgid "" "%(error)s; remove the partial disk copies from the destination host: " @@ -8996,33 +9001,33 @@ msgid "" msgstr "" "%(error)s; yarım kalan disk kopyalarını hedef sunucudan kaldırın: %(copies)s" -#: vrtManager/instance.py:409 +#: vrtManager/instance.py:413 #, python-format msgid "" "%(error)s; remove the partial disk copies from the destination host: %(left)s" msgstr "" "%(error)s; yarım kalan disk kopyalarını hedef sunucudan kaldırın: %(left)s" -#: vrtManager/instance.py:426 +#: vrtManager/instance.py:430 #, python-format msgid "The destination host cannot see the NVRAM file %(path)s" msgstr "Hedef sunucu %(path)s NVRAM dosyasını göremiyor" -#: vrtManager/instance.py:499 +#: vrtManager/instance.py:503 #, python-format msgid "%(type)s disk, cannot be checked" msgstr "%(type)s disk, kontrol edilemiyor" -#: vrtManager/instance.py:539 +#: vrtManager/instance.py:543 #, python-format msgid "The destination host already has a VM %(key)s" msgstr "Hedef sunucuda zaten %(key)s sanal makinesi var" -#: vrtManager/instance.py:561 +#: vrtManager/instance.py:565 msgid "The VM was started on the source host during the migration" msgstr "Sanal makine taşıma sırasında kaynak sunucuda başlatıldı" -#: vrtManager/instance.py:577 +#: vrtManager/instance.py:581 #, python-format msgid "" "%(error)s; the VM may now be defined only on the destination host: check both" @@ -9031,7 +9036,7 @@ msgstr "" "%(error)s; sanal makine artık yalnızca hedef sunucuda tanımlı olabilir: iki " "sunucuyu da kontrol edin" -#: vrtManager/instance.py:583 +#: vrtManager/instance.py:587 #, python-format msgid "" "%(error)s; the VM is now defined on both hosts, remove it from the " @@ -9040,7 +9045,7 @@ msgstr "" "%(error)s; sanal makine artık iki sunucuda da tanımlı, hedeften kaldırın: " "%(undo_error)s" -#: vrtManager/instance.py:589 +#: vrtManager/instance.py:593 msgid "" "Snapshot names are 1-64 letters, digits, '.', '_' or '-' and do not start " "with '.'" @@ -9048,7 +9053,7 @@ msgstr "" "Anlık görüntü adları 1-64 harf, rakam, '.', '_' veya '-' karakterinden oluşur" " ve '.' ile başlamaz" -#: vrtManager/instance.py:1082 +#: vrtManager/instance.py:1086 msgid "" "A device other than a disk or NIC is in the boot order: change it in the XML " "editor" @@ -9056,100 +9061,100 @@ msgstr "" "Önyükleme sırasında disk veya NIC dışında bir aygıt var: bunu XML " "düzenleyicide değiştirin" -#: vrtManager/instance.py:1094 +#: vrtManager/instance.py:1098 msgid "Invalid Device Type for boot order" msgstr "Ön yükleme sırası için geçersiz aygıt türü" -#: vrtManager/instance.py:1097 +#: vrtManager/instance.py:1101 #, python-format msgid "Boot device %(dev)s is not in the definition" msgstr "Ön yükleme aygıtı %(dev)s tanımda yok" -#: vrtManager/instance.py:1117 +#: vrtManager/instance.py:1121 #, python-format msgid "CD-ROM %(dev)s is not in the running definition" msgstr "CD-ROM %(dev)s çalışan tanımda yok" -#: vrtManager/instance.py:1118 +#: vrtManager/instance.py:1122 #, python-format msgid "CD-ROM %(dev)s is not in the persistent definition" msgstr "CD-ROM %(dev)s kalıcı tanımda yok" -#: vrtManager/instance.py:1130 +#: vrtManager/instance.py:1134 #, python-format msgid "Media of %(dev)s changed in the running VM only: %(err)s" msgstr "%(dev)s ortamı yalnızca çalışan sanal makinede değişti: %(err)s" -#: vrtManager/instance.py:1141 +#: vrtManager/instance.py:1145 #, python-format msgid "ISO image %(image)s was not found" msgstr "ISO imajı %(image)s bulunamadı" -#: vrtManager/instance.py:1143 +#: vrtManager/instance.py:1147 #, python-format msgid "ISO image %(image)s is in more than one storage pool" msgstr "ISO imajı %(image)s birden fazla depolama havuzunda var" -#: vrtManager/instance.py:1250 +#: vrtManager/instance.py:1254 #, python-format msgid "Disk %(target_dev)s is not in the VM's definition" msgstr "Disk %(target_dev)s sanal makinenin tanımında yok" -#: vrtManager/instance.py:1378 +#: vrtManager/instance.py:1382 msgid "Please shutdown the instance then try to enable vCPU hotplug" msgstr "" "vCPU hotplug özelliğini etkinleştirmek için önce sanal makineyi kapatın" -#: vrtManager/instance.py:1841 +#: vrtManager/instance.py:1853 msgid "" "The VM has external snapshots; internal snapshots cannot be mixed with them" msgstr "" "Sanal makinenin harici anlık görüntüleri var; dahili anlık görüntüler " "bunlarla karıştırılamaz" -#: vrtManager/instance.py:1873 +#: vrtManager/instance.py:1885 msgid "A snapshot with memory is not quiesced; it keeps the whole guest state" msgstr "" "Bellekli bir anlık görüntüde dosya sistemleri dondurulmaz; tüm konuk durumunu" " saklar" -#: vrtManager/instance.py:1875 +#: vrtManager/instance.py:1887 msgid "Only a running VM's file systems can be frozen" msgstr "Yalnızca çalışan bir sanal makinenin dosya sistemleri dondurulabilir" -#: vrtManager/instance.py:1877 +#: vrtManager/instance.py:1889 msgid "The QEMU guest agent is not connected; it freezes the file systems" msgstr "QEMU konuk aracısı bağlı değil; dosya sistemlerini o dondurur" -#: vrtManager/instance.py:1880 +#: vrtManager/instance.py:1892 msgid "" "The VM has internal snapshots; external snapshots cannot be mixed with them" msgstr "" "Sanal makinenin dahili anlık görüntüleri var; harici anlık görüntüler " "bunlarla karıştırılamaz" -#: vrtManager/instance.py:1885 +#: vrtManager/instance.py:1897 msgid "Newer snapshots exist after the last revert; delete them first" msgstr "" "Son geri dönüşten sonra daha yeni anlık görüntüler var; önce onları silin" -#: vrtManager/instance.py:1888 +#: vrtManager/instance.py:1900 msgid "No snapshot is current; revert to a snapshot first" msgstr "Geçerli anlık görüntü yok; önce bir anlık görüntüye geri dönün" -#: vrtManager/instance.py:1894 +#: vrtManager/instance.py:1906 #, python-format msgid "Eject the media from %(dev)s first" msgstr "Önce %(dev)s içindeki ortamı çıkarın" -#: vrtManager/instance.py:1896 +#: vrtManager/instance.py:1908 #, python-format msgid "Disk %(dev)s is not a file; external snapshots need file disks" msgstr "" "Disk %(dev)s bir dosya değil; harici anlık görüntüler dosya diskleri " "gerektirir" -#: vrtManager/instance.py:1904 +#: vrtManager/instance.py:1916 #, python-format msgid "" "The storage pools could not be refreshed, so their free space is unknown: " @@ -9157,21 +9162,21 @@ msgid "" msgstr "" "Depolama havuzları yenilenemedi, bu yüzden boş alanları bilinmiyor: %(err)s" -#: vrtManager/instance.py:1925 +#: vrtManager/instance.py:1937 msgid "Memory is saved only from a running VM" msgstr "Bellek yalnızca çalışan bir sanal makineden kaydedilir" -#: vrtManager/instance.py:1927 +#: vrtManager/instance.py:1939 msgid "The VM has no disk to keep its memory next to" msgstr "Sanal makinenin, belleğinin yanına kaydedileceği bir diski yok" -#: vrtManager/instance.py:1931 +#: vrtManager/instance.py:1943 #, python-format msgid "%(disk)s is not in a storage pool; memory is saved only into one" msgstr "" "%(disk)s bir depolama havuzunda değil; bellek yalnızca bir havuza kaydedilir" -#: vrtManager/instance.py:1962 +#: vrtManager/instance.py:1974 #, python-format msgid "" "Storage pool %(pool)s has %(free).1f GiB free; the snapshot needs %(size).1f " @@ -9182,7 +9187,7 @@ msgstr "" "%(size).1f GiB gerektiriyor (sanal makinenin oradaki disklerinin " "%%%(percent)g kadarı, en az %(minimum)g GiB, ve kaydediliyorsa bellek)" -#: vrtManager/instance.py:1980 +#: vrtManager/instance.py:1992 msgid "" "This snapshot was taken by an older version on a UEFI VM and cannot be " "reverted; delete it instead" @@ -9190,7 +9195,7 @@ msgstr "" "Bu anlık görüntü UEFI bir sanal makinede eski bir sürümle alındı ve geri " "dönülemez; bunun yerine silin" -#: vrtManager/instance.py:2010 +#: vrtManager/instance.py:2022 #, python-format msgid "" "The revert failed twice; try again in a moment (%(error)s). The VM is " @@ -9199,7 +9204,7 @@ msgstr "" "Geri dönüş iki kez başarısız oldu; biraz sonra tekrar deneyin (%(error)s). " "Sanal makine çalışıyor." -#: vrtManager/instance.py:2012 +#: vrtManager/instance.py:2024 #, python-format msgid "" "The revert failed twice; try again in a moment (%(error)s). The VM is shut " @@ -9208,13 +9213,13 @@ msgstr "" "Geri dönüş iki kez başarısız oldu; biraz sonra tekrar deneyin (%(error)s). " "Sanal makine kapalı." -#: vrtManager/instance.py:2175 +#: vrtManager/instance.py:2187 msgid "A disk moves when its VM is defined and running, paused or shut off" msgstr "" "Bir disk, sanal makinesi tanımlıyken ve çalışırken, duraklatılmışken veya " "kapalıyken taşınır" -#: vrtManager/instance.py:2177 +#: vrtManager/instance.py:2189 msgid "" "A disk of a VM with snapshots, a saved state or a running block job does not " "move" @@ -9222,7 +9227,7 @@ msgstr "" "Anlık görüntüleri, kaydedilmiş durumu veya çalışan bir blok işi olan sanal " "makinenin diski taşınmaz" -#: vrtManager/instance.py:2185 +#: vrtManager/instance.py:2197 #, python-format msgid "" "%(dev)s is not a disk file of the VM, the same in its running and next " @@ -9231,132 +9236,132 @@ msgstr "" "%(dev)s, sanal makinenin çalışan ve sonraki başlatma tanımlarında aynı olan " "bir disk dosyası değil" -#: vrtManager/instance.py:2190 +#: vrtManager/instance.py:2202 #, python-format msgid "%(dev)s does not move: only writable raw and qcow2 disks do" msgstr "%(dev)s taşınmaz: yalnızca yazılabilir raw ve qcow2 diskler taşınır" -#: vrtManager/instance.py:2197 +#: vrtManager/instance.py:2209 #, python-format msgid "%(dev)s does not move: no storage pool has %(path)s" msgstr "%(dev)s taşınmaz: hiçbir depolama havuzunda %(path)s yok" -#: vrtManager/instance.py:2199 +#: vrtManager/instance.py:2211 #, python-format msgid "%(dev)s does not move: it has a backing file" msgstr "%(dev)s taşınmaz: temel (backing) dosyası var" -#: vrtManager/instance.py:2202 +#: vrtManager/instance.py:2214 #, python-format msgid "%(pool_name)s is not an active pool of disk files of this host" msgstr "%(pool_name)s bu sunucunun etkin bir disk dosyası havuzu değil" -#: vrtManager/instance.py:2205 +#: vrtManager/instance.py:2217 #, python-format msgid "%(dev)s is in pool %(pool_name)s already" msgstr "%(dev)s zaten %(pool_name)s havuzunda" -#: vrtManager/instance.py:2209 +#: vrtManager/instance.py:2221 #, python-format msgid "Pool %(pool_name)s already has a file %(name)s" msgstr "%(pool_name)s havuzunda zaten %(name)s dosyası var" -#: vrtManager/instance.py:2233 +#: vrtManager/instance.py:2245 #, python-format msgid "The copy of %(dev)s ended before it was complete" msgstr "%(dev)s kopyası tamamlanmadan sona erdi" -#: vrtManager/instance.py:2278 +#: vrtManager/instance.py:2290 #, python-format msgid "%(error)s; remove %(dest)s if it is there: %(cleanup_error)s" msgstr "%(error)s; varsa %(dest)s dosyasını kaldırın: %(cleanup_error)s" -#: vrtManager/instance.py:2280 +#: vrtManager/instance.py:2292 #, python-format msgid "%(error)s; the VM may use %(dest)s now: check its disk %(dev)s" msgstr "" "%(error)s; sanal makine şu anda %(dest)s dosyasını kullanıyor olabilir: " "%(dev)s diskini kontrol edin" -#: vrtManager/instance.py:2287 +#: vrtManager/instance.py:2299 #, python-format msgid "The VM has no internal snapshot named %(name)s" msgstr "Sanal makinenin %(name)s adlı dahili anlık görüntüsü yok" -#: vrtManager/instance.py:2296 +#: vrtManager/instance.py:2308 msgid "The VM has a saved state; start it or remove the saved state first" msgstr "" "Sanal makinenin kaydedilmiş durumu var; önce başlatın veya kaydedilmiş durumu" " kaldırın" -#: vrtManager/instance.py:2298 +#: vrtManager/instance.py:2310 msgid "A snapshot job is still running on this VM; try again when it ends" msgstr "" "Bu sanal makinede hâlâ bir anlık görüntü işi çalışıyor; bittiğinde tekrar " "deneyin" -#: vrtManager/instance.py:2308 +#: vrtManager/instance.py:2320 msgid "Shut the VM down to revert to an internal snapshot" msgstr "Dahili bir anlık görüntüye geri dönmek için sanal makineyi kapatın" -#: vrtManager/instance.py:2402 +#: vrtManager/instance.py:2414 msgid "Cannot clone a VM whose NVRAM is not a file" msgstr "NVRAM'i dosya olmayan bir sanal makine klonlanamaz" -#: vrtManager/instance.py:2470 +#: vrtManager/instance.py:2482 #, python-format msgid "Clone failed (%(err)s); remove these copies by hand: %(path)s" msgstr "" "Klonlama başarısız oldu (%(err)s); bu kopyaları elle kaldırın: %(path)s" -#: vrtManager/instance.py:2480 +#: vrtManager/instance.py:2492 msgid "Shut the VM down before cloning it" msgstr "Klonlamadan önce sanal makineyi kapatın" -#: vrtManager/instance.py:2534 +#: vrtManager/instance.py:2546 #, python-format msgid "Clone failed (%(err)s); remove these copies by hand: %(leftovers)s" msgstr "" "Klonlama başarısız oldu (%(err)s); bu kopyaları elle kaldırın: %(leftovers)s" -#: vrtManager/instance.py:2545 +#: vrtManager/instance.py:2557 msgid "Live clone needs libvirt 11.10 or later; shut the VM down to clone it" msgstr "" "Canlı klonlama libvirt 11.10 veya sonrasını gerektirir; klonlamak için sanal " "makineyi kapatın" -#: vrtManager/instance.py:2548 +#: vrtManager/instance.py:2560 msgid "A VM with a TPM is cloned only shut down" msgstr "TPM'i olan bir sanal makine yalnızca kapalıyken klonlanır" -#: vrtManager/instance.py:2551 +#: vrtManager/instance.py:2563 #, python-format msgid "Disk %(dev)s is not a local file; shut the VM down to clone it" msgstr "" "Disk %(dev)s yerel bir dosya değil; klonlamak için sanal makineyi kapatın" -#: vrtManager/instance.py:2553 +#: vrtManager/instance.py:2565 #, python-format msgid "Disk %(dev)s is shareable; shut the VM down to clone it" msgstr "Disk %(dev)s paylaşılabilir; klonlamak için sanal makineyi kapatın" -#: vrtManager/instance.py:2558 +#: vrtManager/instance.py:2570 #, python-format msgid "Disk %(dev)s changes at the next start; shut the VM down to clone it" msgstr "" "Disk %(dev)s sonraki başlatmada değişiyor; klonlamak için sanal makineyi " "kapatın" -#: vrtManager/instance.py:2560 +#: vrtManager/instance.py:2572 msgid "Another job is running on the VM; clone it when that ends" msgstr "Sanal makinede başka bir iş çalışıyor; o bittiğinde klonlayın" -#: vrtManager/instance.py:2573 +#: vrtManager/instance.py:2585 #, python-format msgid "Volume %(name)s already exists in storage pool %(pool)s" msgstr "%(name)s birimi %(pool)s depolama havuzunda zaten var" -#: vrtManager/instance.py:2592 +#: vrtManager/instance.py:2604 #, python-format msgid "" "Storage pool %(pool)s has %(free).1f GiB free; the clone needs %(size).1f GiB" @@ -9366,20 +9371,20 @@ msgstr "" "gerektiriyor (kopyalanan diskler, artı bunların %%%(percent)g kadarı, en az " "%(minimum)g GiB)" -#: vrtManager/instance.py:2731 +#: vrtManager/instance.py:2743 msgid "A network interface that is a host device is removed in the XML editor" msgstr "Sunucu aygıtı olan bir ağ arabirimi XML düzenleyicide kaldırılır" -#: vrtManager/instance.py:2747 +#: vrtManager/instance.py:2759 #, python-format msgid "No network interface with MAC %(old_mac)s" msgstr "MAC adresi %(old_mac)s olan ağ arabirimi yok" -#: vrtManager/instance.py:2750 +#: vrtManager/instance.py:2762 msgid "A network interface that is a host device is changed in the XML editor" msgstr "Sunucu aygıtı olan bir ağ arabirimi XML düzenleyicide değiştirilir" -#: vrtManager/instance.py:2841 +#: vrtManager/instance.py:2853 msgid "" "A VM changes its PCI devices while it runs, or is shut off without a saved " "state" @@ -9387,14 +9392,14 @@ msgstr "" "Sanal makine PCI aygıtlarını çalışırken veya kaydedilmiş durumu olmadan " "kapalıyken değiştirir" -#: vrtManager/instance.py:2853 +#: vrtManager/instance.py:2865 #, python-format msgid "%(err)s; whether the VM has PCI device %(address)s now is not known" msgstr "" "%(err)s; sanal makinede şu anda %(address)s PCI aygıtının olup olmadığı " "bilinmiyor" -#: vrtManager/instance.py:2855 +#: vrtManager/instance.py:2867 #, python-format msgid "" "%(err)s; PCI device %(address)s: the VM is not running, its next start has it" @@ -9402,7 +9407,7 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: sanal makine çalışmıyor, sonraki başlatmada " "var" -#: vrtManager/instance.py:2857 +#: vrtManager/instance.py:2869 #, python-format msgid "" "%(err)s; PCI device %(address)s: the VM is not running, its next start does " @@ -9411,7 +9416,7 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: sanal makine çalışmıyor, sonraki başlatmada " "yok" -#: vrtManager/instance.py:2858 +#: vrtManager/instance.py:2870 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM has it, its next start has it" @@ -9419,7 +9424,7 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede var, sonraki " "başlatmada var" -#: vrtManager/instance.py:2860 +#: vrtManager/instance.py:2872 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM has it, its next start does " @@ -9428,7 +9433,7 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede var, sonraki " "başlatmada yok" -#: vrtManager/instance.py:2862 +#: vrtManager/instance.py:2874 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM does not have it, its next " @@ -9437,7 +9442,7 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede yok, sonraki " "başlatmada var" -#: vrtManager/instance.py:2864 +#: vrtManager/instance.py:2876 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM does not have it, its next " @@ -9446,29 +9451,29 @@ msgstr "" "%(err)s; PCI aygıtı %(address)s: çalışan sanal makinede yok, sonraki " "başlatmada yok" -#: vrtManager/instance.py:2898 +#: vrtManager/instance.py:2910 #, python-format msgid "The VM has no PCI device %(address)s" msgstr "Sanal makinede %(address)s PCI aygıtı yok" -#: vrtManager/instance.py:2916 +#: vrtManager/instance.py:2928 msgid "The VM has no USB controller" msgstr "Sanal makinede USB denetleyicisi yok" -#: vrtManager/instance.py:2935 +#: vrtManager/instance.py:2947 msgid "The VM has no such USB device" msgstr "Sanal makinede böyle bir USB aygıtı yok" -#: vrtManager/instance.py:2976 +#: vrtManager/instance.py:2988 msgid "The VM has its own RNG device: change it in the XML editor" msgstr "" "Sanal makinenin kendi RNG aygıtı var: bunu XML düzenleyicide değiştirin" -#: vrtManager/instance.py:3003 +#: vrtManager/instance.py:3015 msgid "The VM has its own TPM: change it in the XML editor" msgstr "Sanal makinenin kendi TPM'i var: bunu XML düzenleyicide değiştirin" -#: vrtManager/instance.py:3022 +#: vrtManager/instance.py:3034 #, python-format msgid "Unknown crash action %(action)s" msgstr "Bilinmeyen çökme eylemi %(action)s" diff --git a/locale/zh/LC_MESSAGES/django.mo b/locale/zh/LC_MESSAGES/django.mo index 4c3b25c28ce071a1478ff3aeef913b38b5ace09e..386a1d2b2f40b9becbb9254505a2f75873bbaf8a 100644 GIT binary patch delta 43024 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

LI?_IvkyRx>{R2E%kWsNf=9}dEBFU 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 %(limit)s)" msgstr "%(quota)s(%(total)s > %(limit)s)" -#: instances/utils.py:194 +#: instances/utils.py:195 msgid "None available device name" msgstr "没有可用的设备名称" -#: instances/utils.py:395 +#: instances/utils.py:398 #, python-format msgid "%(hostname)s via %(address)s" msgstr "%(hostname)s,经由 %(address)s" -#: instances/utils.py:434 +#: instances/utils.py:437 msgid "Invalid MAC address" msgstr "无效的 MAC 地址" -#: instances/utils.py:436 +#: instances/utils.py:439 msgid "More MAC addresses than networks" msgstr "MAC 地址数量多于网络数量" -#: instances/views.py:172 +#: instances/views.py:173 msgid "Enter an IP address, a network such as 192.0.2.0/24, or a MAC address." msgstr "请输入 IP 地址、网络(如 192.0.2.0/24)或 MAC 地址。" -#: instances/views.py:178 instances/views.py:212 +#: instances/views.py:179 instances/views.py:213 msgid "Too many searches are still running; try again shortly." msgstr "仍在运行的搜索过多;请稍后再试。" -#: instances/views.py:260 +#: instances/views.py:261 #, python-format msgid "The host %(host)s of '%(name)s' cannot be reached: %(error)s" msgstr "无法连接“%(name)s”所在的主机 %(host)s:%(error)s" -#: instances/views.py:266 +#: instances/views.py:267 #, python-format msgid "The host of '%(name)s' cannot be reached right now." msgstr "目前无法连接“%(name)s”所在的主机。" -#: instances/views.py:267 +#: instances/views.py:268 msgid " Jobs on it can be followed under Jobs in the menu." msgstr " 其上的任务可在菜单的“任务”中跟踪。" -#: instances/views.py:275 +#: instances/views.py:276 #, python-format msgid "'%(name)s' is no longer on its host." msgstr "“%(name)s”已不在其主机上。" -#: instances/views.py:373 +#: instances/views.py:374 msgid "There is no other host to migrate to." msgstr "没有其他可迁移到的主机。" -#: instances/views.py:375 +#: instances/views.py:376 msgid "A VM migrates when it is running, paused or shut off." msgstr "虚拟机在运行、暂停或关机状态下均可迁移。" -#: instances/views.py:377 +#: instances/views.py:378 msgid "" "A VM with snapshots cannot be migrated: its snapshots stay on this host. " "Delete them first." msgstr "有快照的虚拟机无法迁移:其快照保留在本主机上。请先删除快照。" -#: instances/views.py:379 +#: instances/views.py:380 msgid "" "A VM with host devices cannot be migrated: the destination may not have them." " Remove them first." msgstr "有主机设备的虚拟机无法迁移:目标主机可能没有这些设备。请先移除它们。" -#: instances/views.py:641 +#: instances/views.py:644 msgid "The VM was moved meanwhile; try again." msgstr "该虚拟机在此期间已被移动;请重试。" -#: instances/views.py:757 +#: instances/views.py:760 msgid "" "The running VM has no free PCI slot for another disk on this bus: choose the " "scsi bus if the VM has a SCSI controller, or shut the VM down and add the " @@ -5624,7 +5624,7 @@ msgstr "" "运行中的虚拟机在此总线上没有可用 PCI 插槽来添加磁盘:如果虚拟机有 SCSI 控制器,请选择 scsi " "总线;或关闭虚拟机后再添加磁盘。“磁盘”选项卡上的“添加 PCIe 插槽”可使其从下次启动起获得可用插槽。新卷会保留在其存储池中,可作为现有卷挂载。" -#: instances/views.py:761 +#: instances/views.py:764 msgid "" "The running VM has no free PCI slot for the SCSI controller the disk needs: " "shut the VM down and add the disk then; Add PCIe slots on the Disks tab gives" @@ -5634,272 +5634,277 @@ msgstr "" "运行中的虚拟机没有可用 PCI 插槽来添加磁盘所需的 SCSI 控制器:请关闭虚拟机后再添加磁盘。“磁盘”选项卡上的“添加 PCIe " "插槽”可使其从下次启动起获得可用插槽。新卷会保留在其存储池中,可作为现有卷挂载。" -#: instances/views.py:779 +#: instances/views.py:782 #, python-format msgid "Invalid disk options: %(options)s" msgstr "无效的磁盘选项:%(options)s" -#: instances/views.py:789 instances/views.py:804 +#: instances/views.py:792 instances/views.py:807 msgid "Templates cannot be started." msgstr "模板无法启动。" -#: instances/views.py:900 +#: instances/views.py:903 #, python-format msgid "Disk %(path)s was kept: a disk file that stays needs it" msgstr "磁盘 %(path)s 已保留:某个保留的磁盘文件依赖它" -#: instances/views.py:906 +#: instances/views.py:909 #, python-format msgid "The VM is removed, but disk %(path)s was not deleted: %(err)s" msgstr "虚拟机已删除,但磁盘 %(path)s 未被删除:%(err)s" -#: instances/views.py:915 +#: instances/views.py:918 #, python-format msgid "Disk %(path)s is used by another VM and was kept" msgstr "磁盘 %(path)s 正被另一台虚拟机使用,已保留" -#: instances/views.py:1037 +#: instances/views.py:1040 #, python-format msgid "Set the gstfsd key of %(compute)s first (Computes, edit the host)" msgstr "请先设置 %(compute)s 的 gstfsd 密钥(计算节点,编辑该主机)" -#: instances/views.py:1044 instances/views.py:1059 instances/views.py:1068 +#: instances/views.py:1047 instances/views.py:1065 instances/views.py:1074 #, python-format msgid "gstfsd error: %(err)s" msgstr "gstfsd 错误:%(err)s" -#: instances/views.py:1069 +#: instances/views.py:1075 msgid "the reply is not signed with the key" msgstr "回复未使用该密钥签名" -#: instances/views.py:1077 +#: instances/views.py:1083 msgid "Shut the VM down, or start its QEMU guest agent, and try again" msgstr "请关闭虚拟机,或启动其 QEMU 客户机代理,然后重试" -#: instances/views.py:1090 +#: instances/views.py:1096 msgid "The change may still be made when the agent answers again." msgstr "当代理再次响应时,此更改仍可能生效。" -#: instances/views.py:1117 +#: instances/views.py:1124 msgid "Reset root password" msgstr "重置 root 密码" -#: instances/views.py:1121 +#: instances/views.py:1128 msgid "Enter a password" msgstr "请输入密码" -#: instances/views.py:1135 +#: instances/views.py:1142 msgid "Select an SSH public key" msgstr "请选择 SSH 公钥" -#: instances/views.py:1157 +#: instances/views.py:1164 #, python-format msgid "Installed new SSH public key %(keyname)s" msgstr "已安装新的 SSH 公钥 %(keyname)s" -#: instances/views.py:1177 +#: instances/views.py:1184 msgid "Enter a whole number of vCPUs" msgstr "请输入整数个 vCPU" -#: instances/views.py:1181 +#: instances/views.py:1188 msgid "Shut off the VM to change its vCPUs" msgstr "请关闭虚拟机以更改其 vCPU" -#: instances/views.py:1184 +#: instances/views.py:1191 msgid "The current vCPUs cannot be more than the maximum" msgstr "当前 vCPU 数不能超过最大值" -#: instances/views.py:1191 +#: instances/views.py:1198 #, python-format msgid "%(quota)s: cannot resize the CPU of '%(instance_name)s'." msgstr "%(quota)s:无法调整“%(instance_name)s”的 CPU。" -#: instances/views.py:1199 +#: instances/views.py:1206 #, python-format msgid "vCPUs set to %(cur)s (maximum %(max)s)" msgstr "vCPU 已设为 %(cur)s(最大 %(max)s)" -#: instances/views.py:1218 +#: instances/views.py:1225 msgid "Enter a whole number for memory" msgstr "请输入整数内存值" -#: instances/views.py:1221 +#: instances/views.py:1228 msgid "The current memory cannot be more than the maximum" msgstr "当前内存不能超过最大值" -#: instances/views.py:1225 +#: instances/views.py:1232 #, python-format msgid "%(quota)s: cannot resize the memory of '%(instance_name)s'." msgstr "%(quota)s:无法调整“%(instance_name)s”的内存。" -#: instances/views.py:1231 +#: instances/views.py:1238 #, python-format msgid "Memory set to %(cur)s MiB (maximum %(max)s MiB)" msgstr "内存已设为 %(cur)s MiB(最大 %(max)s MiB)" -#: instances/views.py:1251 +#: instances/views.py:1258 msgid "Enter disk sizes as whole GiB" msgstr "请以整数 GiB 输入磁盘大小" -#: instances/views.py:1255 +#: instances/views.py:1262 #, python-format msgid "%(dev)s is %(size)s: a disk cannot shrink" msgstr "%(dev)s 为 %(size)s:磁盘不能缩小" -#: instances/views.py:1263 +#: instances/views.py:1270 msgid "No disks were selected or valid for resizing." msgstr "未选择磁盘或没有可调整大小的有效磁盘。" -#: instances/views.py:1272 +#: instances/views.py:1279 #, python-format msgid "%(quota)s: cannot resize the disks of '%(instance_name)s'." msgstr "%(quota)s:无法调整“%(instance_name)s”的磁盘。" -#: instances/views.py:1284 +#: instances/views.py:1291 #, python-format msgid "The storage pool of %(dev)s cannot resize its volumes" msgstr "%(dev)s 所在的存储池无法调整其卷的大小" -#: instances/views.py:1286 +#: instances/views.py:1293 #, python-format msgid "Disk is resized: %(dev)s" msgstr "磁盘已调整大小:%(dev)s" -#: instances/views.py:1380 +#: instances/views.py:1387 msgid "The VM's machine has no PCIe slots to add" msgstr "该虚拟机的机器类型没有可添加的 PCIe 插槽" -#: instances/views.py:1385 +#: instances/views.py:1392 #, python-format msgid "%(count)s PCIe slots added" msgstr "已添加 %(count)s 个 PCIe 插槽" -#: instances/views.py:1387 +#: instances/views.py:1394 #, python-format msgid "%(count)s PCIe slots added: the VM gets them at its next start" msgstr "已添加 %(count)s 个 PCIe 插槽:虚拟机在下次启动时获得它们" -#: instances/views.py:1433 +#: instances/views.py:1440 #, python-format msgid "%(volume)s is already a disk of this VM" msgstr "%(volume)s 已是此虚拟机的磁盘" -#: instances/views.py:1523 +#: instances/views.py:1530 msgid "Volume changes are applied. But it will be activated after shutdown" msgstr "卷更改已应用,但将在关机后生效" -#: instances/views.py:1528 +#: instances/views.py:1535 msgid "Volume is changed successfully." msgstr "卷已成功更改。" -#: instances/views.py:1546 +#: instances/views.py:1553 #, python-format msgid "Disk %(dev)s is not a storage volume of this instance" msgstr "磁盘 %(dev)s 不是此虚拟机的存储卷" -#: instances/views.py:1553 +#: instances/views.py:1560 #, python-format msgid "Disk %(dev)s has a pending change; delete it once the VM is shut down" msgstr "磁盘 %(dev)s 有待生效的更改;请在虚拟机关机后删除它" -#: instances/views.py:1568 +#: instances/views.py:1575 #, python-format msgid "Volume %(vol)s is used by another VM; detach it instead" msgstr "卷 %(vol)s 正被另一台虚拟机使用;请改为分离它" -#: instances/views.py:1580 +#: instances/views.py:1587 #, python-format msgid "" "The guest has not released disk %(dev)s yet; volume %(vol)s was kept. Delete " "it from the storage pool once the VM is shut down." msgstr "客户机尚未释放磁盘 %(dev)s;卷 %(vol)s 已保留。请在虚拟机关机后从存储池中删除它。" -#: instances/views.py:1591 +#: instances/views.py:1598 #, python-format msgid "Disk %(dev)s was detached, but its volume was kept: %(err)s" msgstr "磁盘 %(dev)s 已分离,但其卷已保留:%(err)s" -#: instances/views.py:1617 +#: instances/views.py:1624 #, python-format msgid "This VM cannot take a CD-ROM on the %(bus)s bus now" msgstr "该虚拟机现在无法在 %(bus)s 总线上添加 CD-ROM" -#: instances/views.py:1620 +#: instances/views.py:1627 msgid "A USB CD-ROM needs an ISO image: libvirt has no empty USB drive" msgstr "USB CD-ROM 需要 ISO 镜像:libvirt 不支持空的 USB 驱动器" -#: instances/views.py:1701 +#: instances/views.py:1632 +#, python-format +msgid "%(image)s is already in a CD-ROM of this VM" +msgstr "%(image)s 已在此虚拟机的某个光驱中" + +#: instances/views.py:1713 #, python-format msgid "Pool %(pool)s was not read again: %(err)s" msgstr "未重新读取存储池 %(pool)s:%(err)s" -#: instances/views.py:1722 +#: instances/views.py:1734 #, python-format msgid "Snapshot was not deleted: %(err)s" msgstr "快照未删除:%(err)s" -#: instances/views.py:1837 +#: instances/views.py:1849 msgid "Add at least one device to the boot order." msgstr "请至少向启动顺序中添加一个设备。" -#: instances/views.py:1851 +#: instances/views.py:1863 msgid "Boot order changed. It applies at the next start." msgstr "启动顺序已更改,将在下次启动时生效。" -#: instances/views.py:1853 +#: instances/views.py:1865 msgid "Boot order changed successfully." msgstr "启动顺序已成功更改。" -#: instances/views.py:1873 +#: instances/views.py:1885 msgid "The XML is empty" msgstr "XML 为空" -#: instances/views.py:1877 instances/views.py:2501 +#: instances/views.py:1889 instances/views.py:2514 #, python-format msgid "The XML is not well-formed: %(error)s" msgstr "XML 格式不正确:%(error)s" -#: instances/views.py:1879 +#: instances/views.py:1891 #, python-format msgid "The XML must keep the VM's UUID %(uuid)s." msgstr "XML 必须保留虚拟机的 UUID %(uuid)s。" -#: instances/views.py:1883 +#: instances/views.py:1895 msgid "" "The definition has changed since the editor was opened. Reload the page to " "edit the current one." msgstr "自打开编辑器以来定义已被更改。请重新加载页面以编辑当前定义。" -#: instances/views.py:1895 +#: instances/views.py:1907 msgid "The XML definition was saved." msgstr "XML 定义已保存。" -#: instances/views.py:1897 +#: instances/views.py:1909 msgid "The XML definition was saved; the VM uses it from its next start." msgstr "XML 定义已保存;虚拟机从下次启动起使用它。" -#: instances/views.py:1978 +#: instances/views.py:1990 msgid "Select one network interface to change" msgstr "请选择一个要更改的网络接口" -#: instances/views.py:2016 +#: instances/views.py:2028 msgid "Network Device Config is changed. Please shutdown instance to activate." msgstr "网络设备配置已更改。请关闭虚拟机以使其生效。" -#: instances/views.py:2018 +#: instances/views.py:2030 msgid "Network device changed" msgstr "网络设备已更改" -#: instances/views.py:2030 +#: instances/views.py:2042 msgid "No network selected" msgstr "未选择网络" -#: instances/views.py:2035 +#: instances/views.py:2047 #, python-format msgid "The VM already has a network device with MAC %(mac)s" msgstr "虚拟机已有 MAC 地址为 %(mac)s 的网络设备" -#: instances/views.py:2054 +#: instances/views.py:2066 msgid "" "The running VM has no free PCI slot for another network device: shut it down " "and add the device then; Add PCIe slots on the Disks tab gives it free ones " @@ -5907,137 +5912,137 @@ msgid "" msgstr "" "运行中的虚拟机没有可用 PCI 插槽来添加网络设备:请关机后再添加设备。“磁盘”选项卡上的“添加 PCIe 插槽”可使其从下次启动起获得可用插槽。" -#: instances/views.py:2095 instances/views.py:2101 +#: instances/views.py:2107 instances/views.py:2113 msgid "The VM has it" msgstr "虚拟机已有此设备" -#: instances/views.py:2132 +#: instances/views.py:2144 #, python-format msgid "The host has no USB device %(device)s" msgstr "主机上没有 USB 设备 %(device)s" -#: instances/views.py:2153 +#: instances/views.py:2165 #, python-format msgid "The host has no PCI device %(device)s" msgstr "主机上没有 PCI 设备 %(device)s" -#: instances/views.py:2171 +#: instances/views.py:2183 #, python-format msgid "" "Removal of PCI device %(address)s requested: the guest has not let it go yet;" " it stays in the running VM until it does or the VM stops." msgstr "已请求移除 PCI 设备 %(address)s:客户机尚未释放它;在客户机释放或虚拟机停止之前,它仍保留在运行中的虚拟机中。" -#: instances/views.py:2216 instances/views.py:2246 +#: instances/views.py:2228 instances/views.py:2258 msgid "Select a network interface and a QoS direction" msgstr "请选择网络接口和 QoS 方向" -#: instances/views.py:2219 vrtManager/network.py:459 +#: instances/views.py:2231 vrtManager/network.py:459 msgid "QoS rates must be whole numbers" msgstr "QoS 速率必须为整数" -#: instances/views.py:2226 networks/views.py:229 +#: instances/views.py:2238 networks/views.py:229 #, python-format msgid "%(qos_dir)s QoS is set" msgstr "%(qos_dir)s QoS 已设置" -#: instances/views.py:2231 +#: instances/views.py:2243 #, python-format msgid "" "%(qos_dir)s QoS is set. A running VM gets it after it is powered off and on." msgstr "%(qos_dir)s QoS 已设置。运行中的虚拟机需关机再开机后才能生效。" -#: instances/views.py:2253 networks/views.py:255 +#: instances/views.py:2265 networks/views.py:255 #, python-format msgid "%(qos_dir)s QoS is deleted" msgstr "%(qos_dir)s QoS 已删除" -#: instances/views.py:2258 +#: instances/views.py:2270 #, python-format msgid "" "%(qos_dir)s QoS is deleted. A running VM keeps the old limit until it is " "powered off and on." msgstr "%(qos_dir)s QoS 已删除。运行中的虚拟机在关机再开机之前保留旧的限制。" -#: instances/views.py:2286 +#: instances/views.py:2298 msgid "Only one owner is allowed and the one already added" msgstr "只允许一个所有者,且已添加" -#: instances/views.py:2288 +#: instances/views.py:2300 #, python-format msgid "%(user)s is already an owner" msgstr "%(user)s 已是所有者" -#: instances/views.py:2332 +#: instances/views.py:2345 #, python-format msgid "Console settings were not saved: %(errors)s" msgstr "控制台设置未保存:%(errors)s" -#: instances/views.py:2354 +#: instances/views.py:2367 msgid "" "Error setting console password. You should check that your instance have an " "graphic device." msgstr "设置控制台密码出错。请检查虚拟机是否有图形设备。" -#: instances/views.py:2401 +#: instances/views.py:2414 msgid "Shut the VM down to change whether it is a template." msgstr "请关闭虚拟机以更改其是否为模板。" -#: instances/views.py:2407 +#: instances/views.py:2420 #, python-format msgid "%(quota)s: '%(instance_name)s' stays a template." msgstr "%(quota)s:“%(instance_name)s”仍为模板。" -#: instances/views.py:2489 +#: instances/views.py:2502 msgid "The XML has no name" msgstr "XML 中没有名称" -#: instances/views.py:2503 webvirtcloud/middleware.py:126 +#: instances/views.py:2516 webvirtcloud/middleware.py:126 #, python-format msgid "libvirt Error - %(exception)s" msgstr "libvirt 错误 - %(exception)s" -#: instances/views.py:2510 +#: instances/views.py:2523 msgid "An empty disk of the size you set" msgstr "按设定大小创建的空磁盘" -#: instances/views.py:2511 +#: instances/views.py:2524 msgid "Volumes already in a pool" msgstr "存储池中已有的卷" -#: instances/views.py:2512 +#: instances/views.py:2525 msgid "A copy of a template volume" msgstr "模板卷的副本" -#: instances/views.py:2601 +#: instances/views.py:2614 msgid "You haven't defined any storage pools" msgstr "您尚未定义任何存储池" -#: instances/views.py:2603 +#: instances/views.py:2616 msgid "You haven't defined any network pools" msgstr "您尚未定义任何网络池" -#: instances/views.py:2666 +#: instances/views.py:2679 msgid "Flavor Created" msgstr "规格已创建" -#: instances/views.py:2674 +#: instances/views.py:2687 msgid "Create Flavor" msgstr "创建规格" -#: instances/views.py:2689 +#: instances/views.py:2702 msgid "Flavor Updated" msgstr "规格已更新" -#: instances/views.py:2695 +#: instances/views.py:2708 msgid "Update Flavor" msgstr "更新规格" -#: instances/views.py:2707 +#: instances/views.py:2720 msgid "Flavor Deleted" msgstr "规格已删除" -#: instances/views.py:2713 +#: instances/views.py:2726 msgid "Only the size template goes; VMs made from it keep their size." msgstr "仅删除此规格;由它创建的虚拟机保持其大小。" @@ -8428,270 +8433,270 @@ msgstr "连接已关闭(%(reason)s)" msgid "Connection Failed: %(host)s is not connected" msgstr "连接失败:%(host)s 未连接" -#: vrtManager/instance.py:134 +#: vrtManager/instance.py:138 msgid "A running or paused VM cannot be migrated offline" msgstr "运行中或已暂停的虚拟机不能离线迁移" -#: vrtManager/instance.py:137 +#: vrtManager/instance.py:141 msgid "The VM can be migrated when it is running, paused or shut off" msgstr "虚拟机在运行、暂停或关机时可以迁移" -#: vrtManager/instance.py:160 +#: vrtManager/instance.py:164 msgid "A VM with snapshots cannot be migrated" msgstr "有快照的虚拟机不能迁移" -#: vrtManager/instance.py:163 +#: vrtManager/instance.py:167 msgid "A VM with a saved state cannot be migrated" msgstr "有保存的状态的虚拟机不能迁移" -#: vrtManager/instance.py:170 +#: vrtManager/instance.py:174 msgid "A VM with host devices cannot be migrated; remove them first" msgstr "有主机设备的虚拟机不能迁移;请先移除它们" -#: vrtManager/instance.py:176 +#: vrtManager/instance.py:180 #, python-format msgid "The destination host does not have these disks of the VM: %(disks)s" msgstr "目标主机没有该虚拟机的这些磁盘:%(disks)s" -#: vrtManager/instance.py:177 +#: vrtManager/instance.py:181 #, python-format msgid "%(target)s (%(source)s)" msgstr "%(target)s(%(source)s)" -#: vrtManager/instance.py:185 +#: vrtManager/instance.py:189 msgid "Destination host emulator is different. Cannot be migrated" msgstr "目标主机的模拟器不同,无法迁移" -#: vrtManager/instance.py:316 +#: vrtManager/instance.py:320 msgid "an image is not copied; eject it first" msgstr "镜像不会被复制;请先弹出它" -#: vrtManager/instance.py:319 +#: vrtManager/instance.py:323 msgid "a read-only or encrypted disk is not copied" msgstr "只读或加密的磁盘不会被复制" -#: vrtManager/instance.py:322 +#: vrtManager/instance.py:326 msgid "only raw and qcow2 disks are copied" msgstr "只复制 raw 和 qcow2 磁盘" -#: vrtManager/instance.py:324 +#: vrtManager/instance.py:328 msgid "no storage pool of the source host has it" msgstr "源主机的任何存储池中都没有它" -#: vrtManager/instance.py:326 +#: vrtManager/instance.py:330 msgid "a disk with a backing file is not copied" msgstr "有后备文件的磁盘不会被复制" -#: vrtManager/instance.py:346 +#: vrtManager/instance.py:350 #, python-format msgid "" "%(target)s (%(path)s): the destination host does not share it; choose a pool " "to copy it to" msgstr "%(target)s (%(path)s):目标主机不共享它;请选择要复制到的存储池" -#: vrtManager/instance.py:350 +#: vrtManager/instance.py:354 #, python-format msgid "%(target)s (%(path)s): %(refusal)s" msgstr "%(target)s (%(path)s):%(refusal)s" -#: vrtManager/instance.py:355 +#: vrtManager/instance.py:359 #, python-format msgid "" "%(target)s (%(path)s): the destination host has no pool %(pool)s for disk " "files" msgstr "%(target)s (%(path)s):目标主机没有用于磁盘文件的存储池 %(pool)s" -#: vrtManager/instance.py:362 +#: vrtManager/instance.py:366 #, python-format msgid "" "%(target)s (%(path)s): pool %(pool)s of the destination host already has a " "file %(file)s" msgstr "%(target)s (%(path)s):目标主机的存储池 %(pool)s 中已有文件 %(file)s" -#: vrtManager/instance.py:366 +#: vrtManager/instance.py:370 #, python-format msgid "%(target)s (%(path)s): another disk is copied to %(dest)s" msgstr "%(target)s (%(path)s):另一个磁盘已复制到 %(dest)s" -#: vrtManager/instance.py:371 +#: vrtManager/instance.py:375 #, python-format msgid "%(target)s: the VM has no disk file to copy" msgstr "%(target)s:虚拟机没有可复制的磁盘文件" -#: vrtManager/instance.py:375 +#: vrtManager/instance.py:379 #, python-format msgid "" "%(target)s (%(path)s) of the next start: the destination host does not share " "it" msgstr "下次启动的 %(target)s (%(path)s):目标主机不共享它" -#: vrtManager/instance.py:379 +#: vrtManager/instance.py:383 #, python-format msgid "The disks cannot be migrated: %(problems)s" msgstr "磁盘无法迁移:%(problems)s" -#: vrtManager/instance.py:392 +#: vrtManager/instance.py:396 #, python-format msgid "" "%(error)s; remove the partial disk copies from the destination host: " "%(copies)s" msgstr "%(error)s;请从目标主机删除不完整的磁盘副本:%(copies)s" -#: vrtManager/instance.py:409 +#: vrtManager/instance.py:413 #, python-format msgid "" "%(error)s; remove the partial disk copies from the destination host: %(left)s" msgstr "%(error)s;请从目标主机删除不完整的磁盘副本:%(left)s" -#: vrtManager/instance.py:426 +#: vrtManager/instance.py:430 #, python-format msgid "The destination host cannot see the NVRAM file %(path)s" msgstr "目标主机看不到 NVRAM 文件 %(path)s" -#: vrtManager/instance.py:499 +#: vrtManager/instance.py:503 #, python-format msgid "%(type)s disk, cannot be checked" msgstr "%(type)s 磁盘,无法检查" -#: vrtManager/instance.py:539 +#: vrtManager/instance.py:543 #, python-format msgid "The destination host already has a VM %(key)s" msgstr "目标主机上已有虚拟机 %(key)s" -#: vrtManager/instance.py:561 +#: vrtManager/instance.py:565 msgid "The VM was started on the source host during the migration" msgstr "迁移期间虚拟机在源主机上被启动" -#: vrtManager/instance.py:577 +#: vrtManager/instance.py:581 #, python-format msgid "" "%(error)s; the VM may now be defined only on the destination host: check both" " hosts" msgstr "%(error)s;虚拟机现在可能只在目标主机上定义:请检查两台主机" -#: vrtManager/instance.py:583 +#: vrtManager/instance.py:587 #, python-format msgid "" "%(error)s; the VM is now defined on both hosts, remove it from the " "destination: %(undo_error)s" msgstr "%(error)s;虚拟机现在在两台主机上都有定义,请从目标主机删除它:%(undo_error)s" -#: vrtManager/instance.py:589 +#: vrtManager/instance.py:593 msgid "" "Snapshot names are 1-64 letters, digits, '.', '_' or '-' and do not start " "with '.'" msgstr "快照名称为 1-64 个字母、数字、'.'、'_' 或 '-',且不能以 '.' 开头" -#: vrtManager/instance.py:1082 +#: vrtManager/instance.py:1086 msgid "" "A device other than a disk or NIC is in the boot order: change it in the XML " "editor" msgstr "启动顺序中有磁盘或网卡以外的设备:请在 XML 编辑器中修改" -#: vrtManager/instance.py:1094 +#: vrtManager/instance.py:1098 msgid "Invalid Device Type for boot order" msgstr "启动顺序的设备类型无效" -#: vrtManager/instance.py:1097 +#: vrtManager/instance.py:1101 #, python-format msgid "Boot device %(dev)s is not in the definition" msgstr "启动设备 %(dev)s 不在定义中" -#: vrtManager/instance.py:1117 +#: vrtManager/instance.py:1121 #, python-format msgid "CD-ROM %(dev)s is not in the running definition" msgstr "CD-ROM %(dev)s 不在运行中的定义中" -#: vrtManager/instance.py:1118 +#: vrtManager/instance.py:1122 #, python-format msgid "CD-ROM %(dev)s is not in the persistent definition" msgstr "CD-ROM %(dev)s 不在持久定义中" -#: vrtManager/instance.py:1130 +#: vrtManager/instance.py:1134 #, python-format msgid "Media of %(dev)s changed in the running VM only: %(err)s" msgstr "%(dev)s 的介质仅在运行中的虚拟机中更改:%(err)s" -#: vrtManager/instance.py:1141 +#: vrtManager/instance.py:1145 #, python-format msgid "ISO image %(image)s was not found" msgstr "未找到 ISO 镜像 %(image)s" -#: vrtManager/instance.py:1143 +#: vrtManager/instance.py:1147 #, python-format msgid "ISO image %(image)s is in more than one storage pool" msgstr "ISO 镜像 %(image)s 位于多个存储池中" -#: vrtManager/instance.py:1250 +#: vrtManager/instance.py:1254 #, python-format msgid "Disk %(target_dev)s is not in the VM's definition" msgstr "磁盘 %(target_dev)s 不在虚拟机的定义中" -#: vrtManager/instance.py:1378 +#: vrtManager/instance.py:1382 msgid "Please shutdown the instance then try to enable vCPU hotplug" msgstr "请先关闭虚拟机,再启用 vCPU 热插拔" -#: vrtManager/instance.py:1841 +#: vrtManager/instance.py:1853 msgid "" "The VM has external snapshots; internal snapshots cannot be mixed with them" msgstr "虚拟机有外部快照;内部快照不能与其混用" -#: vrtManager/instance.py:1873 +#: vrtManager/instance.py:1885 msgid "A snapshot with memory is not quiesced; it keeps the whole guest state" msgstr "含内存的快照不会静默文件系统;它保存整个客户机状态" -#: vrtManager/instance.py:1875 +#: vrtManager/instance.py:1887 msgid "Only a running VM's file systems can be frozen" msgstr "只有运行中的虚拟机的文件系统可以冻结" -#: vrtManager/instance.py:1877 +#: vrtManager/instance.py:1889 msgid "The QEMU guest agent is not connected; it freezes the file systems" msgstr "QEMU 客户机代理未连接;文件系统由它冻结" -#: vrtManager/instance.py:1880 +#: vrtManager/instance.py:1892 msgid "" "The VM has internal snapshots; external snapshots cannot be mixed with them" msgstr "虚拟机有内部快照;外部快照不能与其混用" -#: vrtManager/instance.py:1885 +#: vrtManager/instance.py:1897 msgid "Newer snapshots exist after the last revert; delete them first" msgstr "上次还原后存在更新的快照;请先删除它们" -#: vrtManager/instance.py:1888 +#: vrtManager/instance.py:1900 msgid "No snapshot is current; revert to a snapshot first" msgstr "没有当前快照;请先还原到某个快照" -#: vrtManager/instance.py:1894 +#: vrtManager/instance.py:1906 #, python-format msgid "Eject the media from %(dev)s first" msgstr "请先弹出 %(dev)s 中的介质" -#: vrtManager/instance.py:1896 +#: vrtManager/instance.py:1908 #, python-format msgid "Disk %(dev)s is not a file; external snapshots need file disks" msgstr "磁盘 %(dev)s 不是文件;外部快照需要文件磁盘" -#: vrtManager/instance.py:1904 +#: vrtManager/instance.py:1916 #, python-format msgid "" "The storage pools could not be refreshed, so their free space is unknown: " "%(err)s" msgstr "无法刷新存储池,其可用空间未知:%(err)s" -#: vrtManager/instance.py:1925 +#: vrtManager/instance.py:1937 msgid "Memory is saved only from a running VM" msgstr "只能保存运行中的虚拟机的内存" -#: vrtManager/instance.py:1927 +#: vrtManager/instance.py:1939 msgid "The VM has no disk to keep its memory next to" msgstr "虚拟机没有可存放其内存的磁盘" -#: vrtManager/instance.py:1931 +#: vrtManager/instance.py:1943 #, python-format msgid "%(disk)s is not in a storage pool; memory is saved only into one" msgstr "%(disk)s 不在存储池中;内存只能保存到存储池中" -#: vrtManager/instance.py:1962 +#: vrtManager/instance.py:1974 #, python-format msgid "" "Storage pool %(pool)s has %(free).1f GiB free; the snapshot needs %(size).1f " @@ -8701,156 +8706,156 @@ msgstr "" "存储池 %(pool)s 可用 %(free).1f GiB;快照需要 %(size).1f GiB(其中虚拟机磁盘的 %(percent)g%%,至少 " "%(minimum)g GiB,若保存内存则另加内存)" -#: vrtManager/instance.py:1980 +#: vrtManager/instance.py:1992 msgid "" "This snapshot was taken by an older version on a UEFI VM and cannot be " "reverted; delete it instead" msgstr "此快照由旧版本在 UEFI 虚拟机上创建,无法还原;请将其删除" -#: vrtManager/instance.py:2010 +#: vrtManager/instance.py:2022 #, python-format msgid "" "The revert failed twice; try again in a moment (%(error)s). The VM is " "running." msgstr "还原两次失败;请稍后重试(%(error)s)。虚拟机正在运行。" -#: vrtManager/instance.py:2012 +#: vrtManager/instance.py:2024 #, python-format msgid "" "The revert failed twice; try again in a moment (%(error)s). The VM is shut " "off." msgstr "还原两次失败;请稍后重试(%(error)s)。虚拟机已关机。" -#: vrtManager/instance.py:2175 +#: vrtManager/instance.py:2187 msgid "A disk moves when its VM is defined and running, paused or shut off" msgstr "仅当虚拟机已定义且处于运行、暂停或关机状态时才能移动磁盘" -#: vrtManager/instance.py:2177 +#: vrtManager/instance.py:2189 msgid "" "A disk of a VM with snapshots, a saved state or a running block job does not " "move" msgstr "有快照、保存的状态或正在运行块任务的虚拟机的磁盘不能移动" -#: vrtManager/instance.py:2185 +#: vrtManager/instance.py:2197 #, python-format msgid "" "%(dev)s is not a disk file of the VM, the same in its running and next " "start's definition" msgstr "%(dev)s 不是该虚拟机在运行中的定义和下次启动定义中相同的磁盘文件" -#: vrtManager/instance.py:2190 +#: vrtManager/instance.py:2202 #, python-format msgid "%(dev)s does not move: only writable raw and qcow2 disks do" msgstr "%(dev)s 不能移动:只能移动可写的 raw 和 qcow2 磁盘" -#: vrtManager/instance.py:2197 +#: vrtManager/instance.py:2209 #, python-format msgid "%(dev)s does not move: no storage pool has %(path)s" msgstr "%(dev)s 不能移动:没有存储池包含 %(path)s" -#: vrtManager/instance.py:2199 +#: vrtManager/instance.py:2211 #, python-format msgid "%(dev)s does not move: it has a backing file" msgstr "%(dev)s 不能移动:它有后备文件" -#: vrtManager/instance.py:2202 +#: vrtManager/instance.py:2214 #, python-format msgid "%(pool_name)s is not an active pool of disk files of this host" msgstr "%(pool_name)s 不是此主机上活动的磁盘文件存储池" -#: vrtManager/instance.py:2205 +#: vrtManager/instance.py:2217 #, python-format msgid "%(dev)s is in pool %(pool_name)s already" msgstr "%(dev)s 已在存储池 %(pool_name)s 中" -#: vrtManager/instance.py:2209 +#: vrtManager/instance.py:2221 #, python-format msgid "Pool %(pool_name)s already has a file %(name)s" msgstr "存储池 %(pool_name)s 中已有文件 %(name)s" -#: vrtManager/instance.py:2233 +#: vrtManager/instance.py:2245 #, python-format msgid "The copy of %(dev)s ended before it was complete" msgstr "%(dev)s 的复制在完成前结束" -#: vrtManager/instance.py:2278 +#: vrtManager/instance.py:2290 #, python-format msgid "%(error)s; remove %(dest)s if it is there: %(cleanup_error)s" msgstr "%(error)s;如果 %(dest)s 存在请将其删除:%(cleanup_error)s" -#: vrtManager/instance.py:2280 +#: vrtManager/instance.py:2292 #, python-format msgid "%(error)s; the VM may use %(dest)s now: check its disk %(dev)s" msgstr "%(error)s;虚拟机现在可能在使用 %(dest)s:请检查其磁盘 %(dev)s" -#: vrtManager/instance.py:2287 +#: vrtManager/instance.py:2299 #, python-format msgid "The VM has no internal snapshot named %(name)s" msgstr "虚拟机没有名为 %(name)s 的内部快照" -#: vrtManager/instance.py:2296 +#: vrtManager/instance.py:2308 msgid "The VM has a saved state; start it or remove the saved state first" msgstr "虚拟机有保存的状态;请先启动它或删除保存的状态" -#: vrtManager/instance.py:2298 +#: vrtManager/instance.py:2310 msgid "A snapshot job is still running on this VM; try again when it ends" msgstr "此虚拟机上仍有快照任务在运行;请在其结束后重试" -#: vrtManager/instance.py:2308 +#: vrtManager/instance.py:2320 msgid "Shut the VM down to revert to an internal snapshot" msgstr "请关闭虚拟机后再还原到内部快照" -#: vrtManager/instance.py:2402 +#: vrtManager/instance.py:2414 msgid "Cannot clone a VM whose NVRAM is not a file" msgstr "NVRAM 不是文件的虚拟机无法克隆" -#: vrtManager/instance.py:2470 +#: vrtManager/instance.py:2482 #, python-format msgid "Clone failed (%(err)s); remove these copies by hand: %(path)s" msgstr "克隆失败(%(err)s);请手动删除这些副本:%(path)s" -#: vrtManager/instance.py:2480 +#: vrtManager/instance.py:2492 msgid "Shut the VM down before cloning it" msgstr "请先关闭虚拟机再克隆" -#: vrtManager/instance.py:2534 +#: vrtManager/instance.py:2546 #, python-format msgid "Clone failed (%(err)s); remove these copies by hand: %(leftovers)s" msgstr "克隆失败(%(err)s);请手动删除这些副本:%(leftovers)s" -#: vrtManager/instance.py:2545 +#: vrtManager/instance.py:2557 msgid "Live clone needs libvirt 11.10 or later; shut the VM down to clone it" msgstr "在线克隆需要 libvirt 11.10 或更高版本;请关闭虚拟机后再克隆" -#: vrtManager/instance.py:2548 +#: vrtManager/instance.py:2560 msgid "A VM with a TPM is cloned only shut down" msgstr "带 TPM 的虚拟机只能在关机时克隆" -#: vrtManager/instance.py:2551 +#: vrtManager/instance.py:2563 #, python-format msgid "Disk %(dev)s is not a local file; shut the VM down to clone it" msgstr "磁盘 %(dev)s 不是本地文件;请关闭虚拟机后再克隆" -#: vrtManager/instance.py:2553 +#: vrtManager/instance.py:2565 #, python-format msgid "Disk %(dev)s is shareable; shut the VM down to clone it" msgstr "磁盘 %(dev)s 是可共享的;请关闭虚拟机后再克隆" -#: vrtManager/instance.py:2558 +#: vrtManager/instance.py:2570 #, python-format msgid "Disk %(dev)s changes at the next start; shut the VM down to clone it" msgstr "磁盘 %(dev)s 在下次启动时会改变;请关闭虚拟机后再克隆" -#: vrtManager/instance.py:2560 +#: vrtManager/instance.py:2572 msgid "Another job is running on the VM; clone it when that ends" msgstr "虚拟机上有另一个任务正在运行;请在其结束后再克隆" -#: vrtManager/instance.py:2573 +#: vrtManager/instance.py:2585 #, python-format msgid "Volume %(name)s already exists in storage pool %(pool)s" msgstr "卷 %(name)s 已存在于存储池 %(pool)s 中" -#: vrtManager/instance.py:2592 +#: vrtManager/instance.py:2604 #, python-format msgid "" "Storage pool %(pool)s has %(free).1f GiB free; the clone needs %(size).1f GiB" @@ -8859,92 +8864,92 @@ msgstr "" "存储池 %(pool)s 可用 %(free).1f GiB;克隆需要 %(size).1f GiB(复制的磁盘,再加其 %(percent)g%%,至少" " %(minimum)g GiB)" -#: vrtManager/instance.py:2731 +#: vrtManager/instance.py:2743 msgid "A network interface that is a host device is removed in the XML editor" msgstr "作为主机设备的网络接口需在 XML 编辑器中删除" -#: vrtManager/instance.py:2747 +#: vrtManager/instance.py:2759 #, python-format msgid "No network interface with MAC %(old_mac)s" msgstr "没有 MAC 为 %(old_mac)s 的网络接口" -#: vrtManager/instance.py:2750 +#: vrtManager/instance.py:2762 msgid "A network interface that is a host device is changed in the XML editor" msgstr "作为主机设备的网络接口需在 XML 编辑器中修改" -#: vrtManager/instance.py:2841 +#: vrtManager/instance.py:2853 msgid "" "A VM changes its PCI devices while it runs, or is shut off without a saved " "state" msgstr "虚拟机只能在运行时或无保存的状态的关机时更改其 PCI 设备" -#: vrtManager/instance.py:2853 +#: vrtManager/instance.py:2865 #, python-format msgid "%(err)s; whether the VM has PCI device %(address)s now is not known" msgstr "%(err)s;虚拟机现在是否有 PCI 设备 %(address)s 未知" -#: vrtManager/instance.py:2855 +#: vrtManager/instance.py:2867 #, python-format msgid "" "%(err)s; PCI device %(address)s: the VM is not running, its next start has it" msgstr "%(err)s;PCI 设备 %(address)s:虚拟机未运行,下次启动时有它" -#: vrtManager/instance.py:2857 +#: vrtManager/instance.py:2869 #, python-format msgid "" "%(err)s; PCI device %(address)s: the VM is not running, its next start does " "not have it" msgstr "%(err)s;PCI 设备 %(address)s:虚拟机未运行,下次启动时没有它" -#: vrtManager/instance.py:2858 +#: vrtManager/instance.py:2870 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM has it, its next start has it" msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机有它,下次启动时有它" -#: vrtManager/instance.py:2860 +#: vrtManager/instance.py:2872 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM has it, its next start does " "not have it" msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机有它,下次启动时没有它" -#: vrtManager/instance.py:2862 +#: vrtManager/instance.py:2874 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM does not have it, its next " "start has it" msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机没有它,下次启动时有它" -#: vrtManager/instance.py:2864 +#: vrtManager/instance.py:2876 #, python-format msgid "" "%(err)s; PCI device %(address)s: the running VM does not have it, its next " "start does not have it" msgstr "%(err)s;PCI 设备 %(address)s:运行中的虚拟机没有它,下次启动时没有它" -#: vrtManager/instance.py:2898 +#: vrtManager/instance.py:2910 #, python-format msgid "The VM has no PCI device %(address)s" msgstr "虚拟机没有 PCI 设备 %(address)s" -#: vrtManager/instance.py:2916 +#: vrtManager/instance.py:2928 msgid "The VM has no USB controller" msgstr "虚拟机没有 USB 控制器" -#: vrtManager/instance.py:2935 +#: vrtManager/instance.py:2947 msgid "The VM has no such USB device" msgstr "虚拟机没有此 USB 设备" -#: vrtManager/instance.py:2976 +#: vrtManager/instance.py:2988 msgid "The VM has its own RNG device: change it in the XML editor" msgstr "虚拟机有自己的 RNG 设备:请在 XML 编辑器中修改" -#: vrtManager/instance.py:3003 +#: vrtManager/instance.py:3015 msgid "The VM has its own TPM: change it in the XML editor" msgstr "虚拟机有自己的 TPM:请在 XML 编辑器中修改" -#: vrtManager/instance.py:3022 +#: vrtManager/instance.py:3034 #, python-format msgid "Unknown crash action %(action)s" msgstr "未知的崩溃操作 %(action)s"