-
-
-
{% 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 %}
+
+
+
+
{% 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;