diff --git a/instances/templates/instances/settings_tab.html b/instances/templates/instances/settings_tab.html index 568aaa6b..2cd8944c 100644 --- a/instances/templates/instances/settings_tab.html +++ b/instances/templates/instances/settings_tab.html @@ -877,155 +877,99 @@ {% endif %} {% if can_change %}
+ {# what the VM is (its name, a template or not), then what the guest sees and what happens when it crashes #}
-
{% csrf_token %} -
-
-

{% bs_icon 'pencil-square' %} {% trans "VM details" %}

-

{% trans "A title and description to identify the VM." %}

+
+

{% trans "VM details" %}

+ {% csrf_token %} +
+ +
-
- - - - -
- -
+
+ +
-
- -
{% csrf_token %} -
-
- -

{% trans "A template is a VM to clone: it is not counted in quotas and cannot be started." %}

+
+
-
-
- - -
-

- {% if not request.user.is_superuser and not request.user.is_staff %}{% trans "Only administrators and staff can change this." %} - {% elif instance.status != 5 %}{% trans "Shut the VM down to change this." %}{% endif %} -

+ +
{% csrf_token %} +
+ +
-
- +

{% trans "A template is a VM to clone: it is not counted in quotas and cannot be started." %} + {% if not request.user.is_superuser and not request.user.is_staff %}{% trans "Only administrators and staff can change this." %} + {% elif instance.status != 5 %}{% trans "Shut the VM down to change this." %}{% endif %}

+ +
{% if request.user.is_superuser %} -
{% csrf_token %} -
-
- -

{% trans "The graphics device the guest sees." %}

-
-
-
-
- -
-
- -
-
-
+
+
+

{% trans "Devices the guest sees" %}

+ {% trans "Changes apply from the next start; the guest agent's at once." %}
- -
{% csrf_token %} -
-
- -

{% trans "A virtio device that feeds the guest's entropy from the host: a new VM does not wait for it at boot. From the next start." %}

+ {% csrf_token %} + + + {% trans "The graphics device the guest sees." %} + +
{% csrf_token %} + +
+
-
-
- - -
- {% if instance.config_rng == "custom" %} -

{% trans "The VM has its own RNG device: change it in the XML editor." %}

- {% endif %} + {% if instance.config_rng == "custom" %}{% trans "The VM has its own RNG device: change it in the XML editor." %}{% else %}{% trans "Feeds the guest's entropy from the host, so a new VM does not wait for it at boot." %}{% endif %} + +
{% csrf_token %} + +
+
-
- -
{% csrf_token %} -
-
- -

{% trans "An emulated TPM 2.0, as Windows 11 needs with UEFI Secure Boot. Its state stays on the host until the VM is destroyed: a TPM added again has it back. From the next start." %}

+ + {% if instance.config_tpm == "custom" %}{% trans "The VM has its own TPM: change it in the XML editor." %} + {% elif not instance.config_tpm and not tpm_support %}{% trans "This host offers no TPM 2.0: install swtpm on it." %} + {% elif instance.config_tpm %}{% trans "Turned off, its state stays on the host until the VM is destroyed; turned on again, it is back." %} + {% else %}{% trans "Windows 11 needs it, with UEFI Secure Boot." %}{% endif %} + +
{% csrf_token %} + + +
+
-
-
- - -
- {% if instance.config_tpm == "custom" %} -

{% trans "The VM has its own TPM: change it in the XML editor." %}

- {% elif not instance.config_tpm and not tpm_support %} -

{% trans "This host offers no TPM 2.0: install swtpm on it." %}

- {% endif %} -
-
- -
{% csrf_token %} -
-
- -

{% trans "For a crash the guest reports, not a hang. Stop keeps a VM that crashes again and again down for a look. From the next start." %}

-
-
- {% if instance.config_on_crash == "restart" or instance.config_on_crash == "destroy" %} -
-
- -
-
- -
-
- {% else %} -

{% blocktrans with action=instance.config_on_crash %}{{ action }}: change it in the XML editor.{% endblocktrans %}

- {% endif %} -
-
-
-
{% csrf_token %} -
-
- -

{% trans "The channel to the agent in the guest: a running VM gets it at once." %}

-

{% trans "Agent" %}: - {% if instance.status != 1 and instance.status != 3 %}{% trans "VM not running" %} - {% elif not instance.guest_agent %}{% trans "No channel" %} - {% elif instance.guest_agent_ready %}{% trans "Connected" %} - {% else %}{% trans "Not connected" %}{% endif %} -

-
-
-
-
- -
-
- -
-
+ + {% if not instance.config_guest_agent %}{% trans "The channel to the agent in the guest: a running VM gets it at once." %} + {% elif instance.status != 1 and instance.status != 3 %}{% trans "VM not running" %} + {% elif not instance.guest_agent %}{% trans "No channel" %} + {% elif instance.guest_agent_ready %}{% trans "Connected" %} + {% else %}{% trans "Not connected: is the agent installed and running in the guest?" %}{% endif %} + + +
+
{% csrf_token %} +

{% trans "When the guest crashes" %}

+
+ {% if instance.config_on_crash == "restart" or instance.config_on_crash == "destroy" %} +
+ + + +
+ {% trans "For a crash the guest reports, not a hang. Stop keeps a VM that crashes again and again down for a look. From the next start." %} + {% else %} +

{% blocktrans with action=instance.config_on_crash %}{{ action }}: change it in the XML editor.{% endblocktrans %}

+ {% endif %}
{% endif %} diff --git a/instances/tests/test_pending_edits.py b/instances/tests/test_pending_edits.py index 2d74442e..d63ef94e 100644 --- a/instances/tests/test_pending_edits.py +++ b/instances/tests/test_pending_edits.py @@ -208,20 +208,22 @@ class PendingEditsTestCase(TestCase): hotplug = {"0": {"enabled": "yes", "hotpluggable": "no", "order": "1"}, "1": {"enabled": "yes", "hotpluggable": "yes", "order": "2"}} doc = self.page(get_guest_agent=(None, object()), get_vcpus=({}, hotplug)) - self.assertEqual(doc.xpath("//select[@name='guest_agent']/option[@selected]/@value"), ["True"]) + # the agent switch shows the pending channel on; flipping it posts off + self.assertEqual(doc.xpath("//input[@id='guest_agent']/@checked"), ["checked"]) + self.assertEqual(doc.xpath("//input[@name='guest_agent']/@value"), ["False"]) # the switch shows the pending hot plug on; flipping it posts off self.assertEqual(doc.xpath("//input[@id='vcpu_hotplug']/@checked"), ["checked"]) self.assertEqual(doc.xpath("//input[@name='vcpu_hotplug']/@value"), ["False"]) - self.assertIn("No channel", doc.xpath("string(//form[.//select[@name='guest_agent']])")) + self.assertIn("No channel", doc.xpath("string(//form[.//input[@name='guest_agent']])")) def test_a_custom_rng_or_crash_action_is_left_to_the_xml_editor(self): doc = self.page(get_rng=("custom", "custom"), get_on_crash=("preserve", "preserve")) self.assertIsNotNone(doc.xpath("//input[@name='rng']")[0].get("disabled")) - self.assertEqual(doc.xpath("//select[@name='on_crash']"), []) + self.assertEqual(doc.xpath("//input[@name='on_crash']"), []) self.assertIn("preserve: change it in the XML editor.", doc.xpath("string(//p[@id='on_crash'])")) doc = self.page(get_rng=("virtio", "virtio"), get_on_crash=("restart", "restart")) # read from the persistent definition self.assertEqual(doc.xpath("//input[@name='rng']/@checked"), ["checked"]) - self.assertEqual(doc.xpath("//select[@name='on_crash']/option[@selected]/@value"), ["restart"]) + self.assertEqual(doc.xpath("//input[@name='on_crash'][@checked]/@value"), ["restart"]) def test_the_tpm_switch_is_off_where_it_cannot_change(self): tpm = "//input[@name='tpm']" @@ -229,11 +231,11 @@ class PendingEditsTestCase(TestCase): self.assertEqual((doc.xpath(f"{tpm}/@checked"), doc.xpath(f"{tpm}/@disabled")), (["checked"], [])) doc = self.page(get_tpm=("custom", "custom")) self.assertTrue(doc.xpath(f"{tpm}/@disabled")) - self.assertIn("change it in the XML editor", doc.xpath("string(//p[@id='tpm-state'])")) + self.assertIn("change it in the XML editor", doc.xpath("string(//span[@id='tpm-help'])")) # no swtpm: none can be added, one the VM has can still go doc = self.page(get_tpm=(None, None), tpm_model=None) self.assertTrue(doc.xpath(f"{tpm}/@disabled")) - self.assertIn("install swtpm", doc.xpath("string(//p[@id='tpm-state'])")) + self.assertIn("install swtpm", doc.xpath("string(//span[@id='tpm-help'])")) doc = self.page(get_tpm=("emulator", "emulator"), tpm_model=None) self.assertEqual(doc.xpath(f"{tpm}/@disabled"), []) diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index 48769ec7..aac2c94a 100644 Binary files a/locale/tr/LC_MESSAGES/django.mo and b/locale/tr/LC_MESSAGES/django.mo differ diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index 1564bc6b..69f393e1 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-03 19:32+0000\n" +"POT-Creation-Date: 2026-11-04 04:57+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" @@ -710,10 +710,7 @@ msgstr "Üyeler" #: instances/templates/instances/nic_qos_form.html:23 #: instances/templates/instances/settings_tab.html:410 #: instances/templates/instances/settings_tab.html:644 -#: instances/templates/instances/settings_tab.html:893 -#: instances/templates/instances/settings_tab.html:935 -#: instances/templates/instances/settings_tab.html:995 -#: instances/templates/instances/settings_tab.html:1025 +#: instances/templates/instances/settings_tab.html:894 #: networks/templates/add_network_qos.html:36 #: networks/templates/network.html:336 networks/templates/network.html:376 #: networks/templates/network.html:403 networks/templates/network.html:442 @@ -878,7 +875,6 @@ msgstr "Kaldırılan sanal makinelerde ara" #: admin/templates/admin/tombstone_list.html:28 #: instances/templates/instance.html:27 -#: instances/templates/instances/settings_tab.html:901 msgid "Template" msgstr "Şablon" @@ -2137,14 +2133,13 @@ msgstr "vCPU" #: console/templates/console-vnc.html:13 #: console/templates/console-xterm.html:16 #: instances/templates/allinstances_index_grouped.html:36 -#: instances/templates/instances/settings_tab.html:1012 +#: instances/templates/instances/settings_tab.html:954 #: networks/templates/network.html:260 msgid "Connected" msgstr "Bağlı" #: computes/templates/computes/list.html:73 computes/templates/overview.html:21 #: instances/templates/allinstances_index_grouped.html:38 -#: instances/templates/instances/settings_tab.html:1013 msgid "Not connected" msgstr "Bağlı değil" @@ -3594,7 +3589,7 @@ msgid "Firmware" msgstr "Üretici yazılımı" #: instances/templates/create_instance_w2.html:86 -#: instances/templates/instances/settings_tab.html:969 +#: instances/templates/instances/settings_tab.html:933 msgid "TPM 2.0" msgstr "TPM 2.0" @@ -3696,7 +3691,9 @@ msgstr "NIC tipi" msgid "Network filter" msgstr "Ağ filtresi" -#: instances/templates/create_instance_w2.html:293 vrtManager/nodedevs.py:30 +#: instances/templates/create_instance_w2.html:293 +#: instances/templates/instances/settings_tab.html:916 +#: vrtManager/nodedevs.py:30 msgid "Video" msgstr "Görüntü" @@ -3709,8 +3706,9 @@ msgid "Input device" msgstr "Girdi aygıtı" #: instances/templates/create_instance_w2.html:334 +#: instances/templates/instances/settings_tab.html:946 msgid "Guest agent" -msgstr "Misafir aracı" +msgstr "Konuk ajanı" #: instances/templates/create_instance_w2.html:338 msgid "Cloud-init seed" @@ -3768,15 +3766,15 @@ msgstr "Yenile" #: instances/templates/instance.html:45 msgid "Guest agent off" -msgstr "Misafir aracı kapalı" +msgstr "Konuk ajanı kapalı" #: instances/templates/instance.html:47 msgid "Guest agent connected" -msgstr "Misafir aracı bağlı" +msgstr "Konuk ajanı bağlı" #: instances/templates/instance.html:49 msgid "Guest agent not connected" -msgstr "Misafir aracı bağlı değil" +msgstr "Konuk ajanı bağlı değil" #: instances/templates/instance.html:51 #, python-format @@ -4570,7 +4568,7 @@ msgstr "" "sağlar." #: instances/templates/instances/resize_tab.html:77 -#: instances/templates/instances/settings_tab.html:913 +#: instances/templates/instances/settings_tab.html:906 msgid "Shut the VM down to change this." msgstr "Bunu değiştirmek için sanal makineyi kapatın." @@ -5342,7 +5340,7 @@ msgid "Optional details" msgstr "İsteğe bağlı ayrıntılar" #: instances/templates/instances/settings_tab.html:856 -#: instances/templates/instances/settings_tab.html:888 +#: instances/templates/instances/settings_tab.html:886 msgid "Title" msgstr "Başlık" @@ -5358,84 +5356,105 @@ msgstr "" msgid "Cloning runs as a background job." msgstr "Klonlama arka planda bir iş olarak çalışır." -#: instances/templates/instances/settings_tab.html:884 +#: instances/templates/instances/settings_tab.html:883 msgid "VM details" msgstr "Sanal makine ayrıntıları" -#: instances/templates/instances/settings_tab.html:885 -msgid "A title and description to identify the VM." -msgstr "Sanal makineyi tanımlamak için bir başlık ve açıklama." - #: instances/templates/instances/settings_tab.html:902 +msgid "Use as a template" +msgstr "Şablon olarak kullan" + +#: instances/templates/instances/settings_tab.html:904 msgid "" "A template is a VM to clone: it is not counted in quotas and cannot be " "started." msgstr "" "Şablon, klonlanacak bir sanal makinedir: kotalarda sayılmaz ve başlatılamaz." -#: instances/templates/instances/settings_tab.html:909 -msgid "Use as a template" -msgstr "Şablon olarak kullan" - -#: instances/templates/instances/settings_tab.html:912 +#: instances/templates/instances/settings_tab.html:905 msgid "Only administrators and staff can change this." msgstr "Bunu yalnızca yöneticiler ve personel değiştirebilir." -#: instances/templates/instances/settings_tab.html:922 -msgid "Primary video model" -msgstr "Birincil video modeli" +#: instances/templates/instances/settings_tab.html:912 +msgid "Devices the guest sees" +msgstr "Konuk sistemin gördüğü aygıtlar" -#: instances/templates/instances/settings_tab.html:923 +#: instances/templates/instances/settings_tab.html:913 +msgid "Changes apply from the next start; the guest agent's at once." +msgstr "Değişiklikler sonraki başlatmada geçerli olur; konuk ajanınki hemen." + +#: instances/templates/instances/settings_tab.html:922 msgid "The graphics device the guest sees." msgstr "Konuk sistemin gördüğü grafik aygıtı." -#: instances/templates/instances/settings_tab.html:944 -msgid "Random number generator" -msgstr "Rastgele sayı üreteci" - -#: instances/templates/instances/settings_tab.html:945 -msgid "" -"A virtio device that feeds the guest's entropy from the host: a new VM does " -"not wait for it at boot. From the next start." -msgstr "" -"Konuk sistemin entropisini sunucudan besleyen bir virtio aygıtı: yeni bir " -"sanal makine açılışta onu beklemez. Sonraki başlatmadan itibaren." - -#: instances/templates/instances/settings_tab.html:951 +#: instances/templates/instances/settings_tab.html:925 msgid "Virtio RNG" msgstr "Virtio RNG" -#: instances/templates/instances/settings_tab.html:954 +#: instances/templates/instances/settings_tab.html:930 msgid "The VM has its own RNG device: change it in the XML editor." msgstr "Sanal makinenin kendi RNG aygıtı var: XML düzenleyicide değiştirin." -#: instances/templates/instances/settings_tab.html:962 -msgid "TPM" -msgstr "TPM" - -#: instances/templates/instances/settings_tab.html:963 +#: instances/templates/instances/settings_tab.html:930 msgid "" -"An emulated TPM 2.0, as Windows 11 needs with UEFI Secure Boot. Its state " -"stays on the host until the VM is destroyed: a TPM added again has it back. " -"From the next start." +"Feeds the guest's entropy from the host, so a new VM does not wait for it at " +"boot." msgstr "" -"Windows 11'in UEFI Secure Boot ile birlikte istediği emüle edilmiş bir TPM " -"2.0. Durumu sanal makine yok edilene kadar sunucuda kalır: yeniden eklenen " -"TPM onu geri alır. Bir sonraki başlatmadan itibaren." +"Konuk sistemin entropisini sunucudan besler; yeni bir sanal makine açılışta " +"onu beklemez." -#: instances/templates/instances/settings_tab.html:972 +#: instances/templates/instances/settings_tab.html:939 msgid "The VM has its own TPM: change it in the XML editor." msgstr "Sanal makinenin kendi TPM'i var: XML düzenleyicide değiştirin." -#: instances/templates/instances/settings_tab.html:974 +#: instances/templates/instances/settings_tab.html:940 msgid "This host offers no TPM 2.0: install swtpm on it." msgstr "Bu sunucu TPM 2.0 sunmuyor: üzerine swtpm kurun." -#: instances/templates/instances/settings_tab.html:982 +#: instances/templates/instances/settings_tab.html:941 +msgid "" +"Turned off, its state stays on the host until the VM is destroyed; turned on " +"again, it is back." +msgstr "" +"Kapatıldığında durumu, sanal makine silinene kadar sunucuda kalır; yeniden " +"açıldığında geri gelir." + +#: instances/templates/instances/settings_tab.html:942 +msgid "Windows 11 needs it, with UEFI Secure Boot." +msgstr "Windows 11, UEFI Secure Boot ile birlikte bunu ister." + +#: instances/templates/instances/settings_tab.html:951 +msgid "The channel to the agent in the guest: a running VM gets it at once." +msgstr "" +"Konuk sistemdeki ajana giden kanal: çalışan bir sanal makine onu hemen alır." + +#: instances/templates/instances/settings_tab.html:952 +msgid "VM not running" +msgstr "Sanal makine çalışmıyor" + +#: instances/templates/instances/settings_tab.html:953 +msgid "No channel" +msgstr "Kanal yok" + +#: instances/templates/instances/settings_tab.html:955 +msgid "Not connected: is the agent installed and running in the guest?" +msgstr "Bağlı değil: ajan konuk sistemde kurulu ve çalışıyor mu?" + +#: instances/templates/instances/settings_tab.html:960 msgid "When the guest crashes" msgstr "Konuk sistem çöktüğünde" -#: instances/templates/instances/settings_tab.html:983 +#: instances/templates/instances/settings_tab.html:965 +msgid "Restart" +msgstr "Yeniden başlat" + +#: instances/templates/instances/settings_tab.html:967 +#: interfaces/templates/interface.html:16 networks/templates/network.html:16 +#: storages/templates/storage.html:18 +msgid "Stop" +msgstr "Durdur" + +#: instances/templates/instances/settings_tab.html:969 msgid "" "For a crash the guest reports, not a hang. Stop keeps a VM that crashes again" " and again down for a look. From the next start." @@ -5444,50 +5463,11 @@ msgstr "" " tekrar çöken bir sanal makineyi incelemek için kapalı tutar. Sonraki " "başlatmadan itibaren." -#: instances/templates/instances/settings_tab.html:990 -msgid "Restart" -msgstr "Yeniden başlat" - -#: instances/templates/instances/settings_tab.html:991 -#: interfaces/templates/interface.html:16 networks/templates/network.html:16 -#: storages/templates/storage.html:18 -msgid "Stop" -msgstr "Durdur" - -#: instances/templates/instances/settings_tab.html:999 +#: instances/templates/instances/settings_tab.html:971 #, python-format msgid "%(action)s: change it in the XML editor." msgstr "%(action)s: XML düzenleyicide değiştirin." -#: instances/templates/instances/settings_tab.html:1007 -msgid "QEMU guest agent" -msgstr "QEMU konuk ajanı" - -#: instances/templates/instances/settings_tab.html:1008 -msgid "The channel to the agent in the guest: a running VM gets it at once." -msgstr "" -"Konuk sistemdeki ajana giden kanal: çalışan bir sanal makine onu hemen alır." - -#: instances/templates/instances/settings_tab.html:1009 -msgid "Agent" -msgstr "Ajan" - -#: instances/templates/instances/settings_tab.html:1010 -msgid "VM not running" -msgstr "Sanal makine çalışmıyor" - -#: instances/templates/instances/settings_tab.html:1011 -msgid "No channel" -msgstr "Kanal yok" - -#: instances/templates/instances/settings_tab.html:1020 -msgid "Enabled" -msgstr "Etkin" - -#: instances/templates/instances/settings_tab.html:1021 -msgid "Disabled" -msgstr "Devredışı" - #: instances/templates/instances/snapshots_tab.html:11 msgid "Snapshots" msgstr "Anlık görüntüler" diff --git a/locale/zh/LC_MESSAGES/django.mo b/locale/zh/LC_MESSAGES/django.mo index b83f6937..51ed5af2 100644 Binary files a/locale/zh/LC_MESSAGES/django.mo and b/locale/zh/LC_MESSAGES/django.mo differ diff --git a/locale/zh/LC_MESSAGES/django.po b/locale/zh/LC_MESSAGES/django.po index 87a37795..98baa14c 100644 --- a/locale/zh/LC_MESSAGES/django.po +++ b/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-11-03 19:32+0000\n" +"POT-Creation-Date: 2026-11-04 04:57+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -692,10 +692,7 @@ msgstr "成员" #: instances/templates/instances/nic_qos_form.html:23 #: instances/templates/instances/settings_tab.html:410 #: instances/templates/instances/settings_tab.html:644 -#: instances/templates/instances/settings_tab.html:893 -#: instances/templates/instances/settings_tab.html:935 -#: instances/templates/instances/settings_tab.html:995 -#: instances/templates/instances/settings_tab.html:1025 +#: instances/templates/instances/settings_tab.html:894 #: networks/templates/add_network_qos.html:36 #: networks/templates/network.html:336 networks/templates/network.html:376 #: networks/templates/network.html:403 networks/templates/network.html:442 @@ -856,7 +853,6 @@ msgstr "搜索已移除的虚拟机" #: admin/templates/admin/tombstone_list.html:28 #: instances/templates/instance.html:27 -#: instances/templates/instances/settings_tab.html:901 msgid "Template" msgstr "模板" @@ -2068,14 +2064,13 @@ msgstr "vCPU" #: console/templates/console-vnc.html:13 #: console/templates/console-xterm.html:16 #: instances/templates/allinstances_index_grouped.html:36 -#: instances/templates/instances/settings_tab.html:1012 +#: instances/templates/instances/settings_tab.html:954 #: networks/templates/network.html:260 msgid "Connected" msgstr "已连接" #: computes/templates/computes/list.html:73 computes/templates/overview.html:21 #: instances/templates/allinstances_index_grouped.html:38 -#: instances/templates/instances/settings_tab.html:1013 msgid "Not connected" msgstr "未连接" @@ -3461,7 +3456,7 @@ msgid "Firmware" msgstr "固件" #: instances/templates/create_instance_w2.html:86 -#: instances/templates/instances/settings_tab.html:969 +#: instances/templates/instances/settings_tab.html:933 msgid "TPM 2.0" msgstr "TPM 2.0" @@ -3563,7 +3558,9 @@ msgstr "网卡类型" msgid "Network filter" msgstr "网络过滤器" -#: instances/templates/create_instance_w2.html:293 vrtManager/nodedevs.py:30 +#: instances/templates/create_instance_w2.html:293 +#: instances/templates/instances/settings_tab.html:916 +#: vrtManager/nodedevs.py:30 msgid "Video" msgstr "显卡" @@ -3576,6 +3573,7 @@ msgid "Input device" msgstr "输入设备" #: instances/templates/create_instance_w2.html:334 +#: instances/templates/instances/settings_tab.html:946 msgid "Guest agent" msgstr "客户机代理" @@ -4380,7 +4378,7 @@ msgid "Lets vCPUs up to the maximum be turned on and off while the VM runs." msgstr "允许在虚拟机运行时开启或关闭不超过最大数量的 vCPU。" #: instances/templates/instances/resize_tab.html:77 -#: instances/templates/instances/settings_tab.html:913 +#: instances/templates/instances/settings_tab.html:906 msgid "Shut the VM down to change this." msgstr "请先关闭虚拟机再修改此项。" @@ -5097,7 +5095,7 @@ msgid "Optional details" msgstr "可选详情" #: instances/templates/instances/settings_tab.html:856 -#: instances/templates/instances/settings_tab.html:888 +#: instances/templates/instances/settings_tab.html:886 msgid "Title" msgstr "标题" @@ -5111,128 +5109,109 @@ msgstr "克隆不会获得虚拟机的任何主机设备:一个主机设备只 msgid "Cloning runs as a background job." msgstr "克隆作为后台任务运行。" -#: instances/templates/instances/settings_tab.html:884 +#: instances/templates/instances/settings_tab.html:883 msgid "VM details" msgstr "虚拟机详情" -#: instances/templates/instances/settings_tab.html:885 -msgid "A title and description to identify the VM." -msgstr "用于识别虚拟机的标题和描述。" - #: instances/templates/instances/settings_tab.html:902 +msgid "Use as a template" +msgstr "用作模板" + +#: instances/templates/instances/settings_tab.html:904 msgid "" "A template is a VM to clone: it is not counted in quotas and cannot be " "started." msgstr "模板是用于克隆的虚拟机:不计入配额,且无法启动。" -#: instances/templates/instances/settings_tab.html:909 -msgid "Use as a template" -msgstr "用作模板" - -#: instances/templates/instances/settings_tab.html:912 +#: instances/templates/instances/settings_tab.html:905 msgid "Only administrators and staff can change this." msgstr "只有管理员和工作人员可以更改此项。" -#: instances/templates/instances/settings_tab.html:922 -msgid "Primary video model" -msgstr "主显卡型号" +#: instances/templates/instances/settings_tab.html:912 +msgid "Devices the guest sees" +msgstr "客户机看到的设备" -#: instances/templates/instances/settings_tab.html:923 +#: instances/templates/instances/settings_tab.html:913 +msgid "Changes apply from the next start; the guest agent's at once." +msgstr "更改在下次启动时生效;客户机代理的更改立即生效。" + +#: instances/templates/instances/settings_tab.html:922 msgid "The graphics device the guest sees." msgstr "客户机看到的图形设备。" -#: instances/templates/instances/settings_tab.html:944 -msgid "Random number generator" -msgstr "随机数生成器" - -#: instances/templates/instances/settings_tab.html:945 -msgid "" -"A virtio device that feeds the guest's entropy from the host: a new VM does " -"not wait for it at boot. From the next start." -msgstr "一个从主机为客户机提供熵的 virtio 设备:新虚拟机启动时无需等待熵。下次启动时生效。" - -#: instances/templates/instances/settings_tab.html:951 +#: instances/templates/instances/settings_tab.html:925 msgid "Virtio RNG" msgstr "Virtio RNG" -#: instances/templates/instances/settings_tab.html:954 +#: instances/templates/instances/settings_tab.html:930 msgid "The VM has its own RNG device: change it in the XML editor." msgstr "该虚拟机有自定义的 RNG 设备:请在 XML 编辑器中更改。" -#: instances/templates/instances/settings_tab.html:962 -msgid "TPM" -msgstr "TPM" - -#: instances/templates/instances/settings_tab.html:963 +#: instances/templates/instances/settings_tab.html:930 msgid "" -"An emulated TPM 2.0, as Windows 11 needs with UEFI Secure Boot. Its state " -"stays on the host until the VM is destroyed: a TPM added again has it back. " -"From the next start." -msgstr "" -"模拟的 TPM 2.0,Windows 11 配合 UEFI 安全启动时需要。其状态保留在主机上,直到虚拟机被销毁:再次添加 TPM " -"时会恢复该状态。下次启动时生效。" +"Feeds the guest's entropy from the host, so a new VM does not wait for it at " +"boot." +msgstr "从主机为客户机提供熵,新虚拟机启动时无需等待。" -#: instances/templates/instances/settings_tab.html:972 +#: instances/templates/instances/settings_tab.html:939 msgid "The VM has its own TPM: change it in the XML editor." msgstr "该虚拟机有自定义的 TPM:请在 XML 编辑器中更改。" -#: instances/templates/instances/settings_tab.html:974 +#: instances/templates/instances/settings_tab.html:940 msgid "This host offers no TPM 2.0: install swtpm on it." msgstr "此主机不提供 TPM 2.0:请在其上安装 swtpm。" -#: instances/templates/instances/settings_tab.html:982 +#: instances/templates/instances/settings_tab.html:941 +msgid "" +"Turned off, its state stays on the host until the VM is destroyed; turned on " +"again, it is back." +msgstr "关闭后,其状态保留在主机上,直到虚拟机被销毁;再次开启时会恢复。" + +#: instances/templates/instances/settings_tab.html:942 +msgid "Windows 11 needs it, with UEFI Secure Boot." +msgstr "Windows 11 需要它,并需 UEFI 安全启动。" + +#: instances/templates/instances/settings_tab.html:951 +msgid "The channel to the agent in the guest: a running VM gets it at once." +msgstr "通往客户机内代理的通道:运行中的虚拟机会立即获得。" + +#: instances/templates/instances/settings_tab.html:952 +msgid "VM not running" +msgstr "虚拟机未运行" + +#: instances/templates/instances/settings_tab.html:953 +msgid "No channel" +msgstr "无通道" + +#: instances/templates/instances/settings_tab.html:955 +msgid "Not connected: is the agent installed and running in the guest?" +msgstr "未连接:客户机中是否已安装并运行代理?" + +#: instances/templates/instances/settings_tab.html:960 msgid "When the guest crashes" msgstr "客户机崩溃时" -#: instances/templates/instances/settings_tab.html:983 -msgid "" -"For a crash the guest reports, not a hang. Stop keeps a VM that crashes again" -" and again down for a look. From the next start." -msgstr "适用于客户机报告的崩溃,而非挂起。“停止”会让反复崩溃的虚拟机保持停止状态以便排查。下次启动时生效。" - -#: instances/templates/instances/settings_tab.html:990 +#: instances/templates/instances/settings_tab.html:965 msgid "Restart" msgstr "重启" -#: instances/templates/instances/settings_tab.html:991 +#: instances/templates/instances/settings_tab.html:967 #: interfaces/templates/interface.html:16 networks/templates/network.html:16 #: storages/templates/storage.html:18 msgid "Stop" msgstr "停止" -#: instances/templates/instances/settings_tab.html:999 +#: instances/templates/instances/settings_tab.html:969 +msgid "" +"For a crash the guest reports, not a hang. Stop keeps a VM that crashes again" +" and again down for a look. From the next start." +msgstr "适用于客户机报告的崩溃,而非挂起。“停止”会让反复崩溃的虚拟机保持停止状态以便排查。下次启动时生效。" + +#: instances/templates/instances/settings_tab.html:971 #, python-format msgid "%(action)s: change it in the XML editor." msgstr "%(action)s:请在 XML 编辑器中更改。" -#: instances/templates/instances/settings_tab.html:1007 -msgid "QEMU guest agent" -msgstr "QEMU 客户机代理" - -#: instances/templates/instances/settings_tab.html:1008 -msgid "The channel to the agent in the guest: a running VM gets it at once." -msgstr "通往客户机内代理的通道:运行中的虚拟机会立即获得。" - -#: instances/templates/instances/settings_tab.html:1009 -msgid "Agent" -msgstr "代理" - -#: instances/templates/instances/settings_tab.html:1010 -msgid "VM not running" -msgstr "虚拟机未运行" - -#: instances/templates/instances/settings_tab.html:1011 -msgid "No channel" -msgstr "无通道" - -#: instances/templates/instances/settings_tab.html:1020 -msgid "Enabled" -msgstr "已启用" - -#: instances/templates/instances/settings_tab.html:1021 -msgid "Disabled" -msgstr "已禁用" - #: instances/templates/instances/snapshots_tab.html:11 msgid "Snapshots" msgstr "快照" diff --git a/static/css/webvirtcloud.css b/static/css/webvirtcloud.css index 6410b970..7586a151 100644 --- a/static/css/webvirtcloud.css +++ b/static/css/webvirtcloud.css @@ -132,6 +132,17 @@ th[aria-sort="ascending"]:not([data-sort-method="none"])::after { /* the access tab's two login buttons line up */ .access-act { min-width: 9rem; } +/* the options tab: one row per device the guest sees, its name, its control and a note */ +.option-row { + display: flex; + flex-wrap: wrap; + align-items: center; + column-gap: 1rem; + row-gap: .25rem; + padding: .6rem 0; +} +.option-name { flex: 0 0 8rem; } + /* the resize tab: one cell per vCPU up to the maximum, filled when on; memory now within its maximum */ .vcpu-cell { display: inline-flex;