diff --git a/instances/templates/instances/snapshots_tab.html b/instances/templates/instances/snapshots_tab.html index a9e1771a..c0ccb411 100755 --- a/instances/templates/instances/snapshots_tab.html +++ b/instances/templates/instances/snapshots_tab.html @@ -8,115 +8,126 @@ {% vm_state instance.status as state %}
-

{% trans "Snapshots" %} · {{ state.0 }}

+ {# the VM's history, newest first: now, where a new snapshot is taken, then each snapshot; the VM goes on from the filled one #} {% if busy %}
{% trans "A disk job is running on this VM; snapshot actions are unavailable until it ends." %}
{% endif %} - {# an external snapshot is the way: each disk goes on in a new file, the VM keeps running #} -
{% csrf_token %}{% submission_key %} -
-
- - -
-
- - -
-
- -
+
+
+ +

{% trans "Now" %} {{ state.0 }}

+ {# an external snapshot is the way: each disk goes on in a new file, the VM keeps running #} + {% csrf_token %}{% submission_key %} +
+
+ + +
+
+ + +
+
+ +
+
+
+
+ + +
+
+ {% if instance.status == 1 and instance.guest_agent_ready %} + + {% else %} + + {% endif %} + +
+
+

+ {% if instance.internal_snapshots %}{% trans "The VM has internal snapshots: delete them before taking an external one." %} + {% elif instance.newer_than_current_snapshot %}{% trans "Snapshots newer than the one reverted to exist: delete them before taking a new one." %} + {% else %}{% trans "Each disk goes on in a new file next to it; the VM keeps running." %} + {% if instance.status == 1 %}{% trans "With memory, the VM pauses while its memory is saved." %}{% endif %} + {% if instance.status != 1 %}{% trans "Memory and frozen file systems are for a running VM." %}{% elif not instance.guest_agent_ready %}{% trans "Freezing needs the guest agent, which is not connected." %}{% endif %}{% endif %} +

+ +
+ {% trans "Internal snapshot: a fallback for a VM that cannot take an external one" %} +
{% csrf_token %}{% submission_key %} +

+ {% if instance.status == 1 %}{% trans "The disks and memory go into the disk files. The VM does not respond while its memory is saved, which can take long: avoid it in production." %} + {% elif instance.status == 3 %}{% trans "The disks and memory go into the disk files; the paused VM stays paused." %} + {% else %}{% trans "The disks go into their files." %}{% endif %} +

+
+
+ + +
+
+ + +
+
+ +
+
+ {% if instance.external_snapshots %}

{% trans "The VM has external snapshots: the two kinds do not mix." %}

{% endif %} +
+
-
-
- - -
-
- {% if instance.status == 1 and instance.guest_agent_ready %} - + {% if instance.snapshots %} +
    + {% for snap in instance.snapshots %} +
  1. + +
    + {{ snap.name }} {{ snap.date|date:"Y-m-d H:i" }} + {% if snap.description %}
    {{ snap.description }}
    {% endif %} +
    {% if snap.external %}{% trans "external" %}{% if snap.memory %}, {% trans "with memory" %}{% endif %}{% else %}{% trans "internal" %}{% endif %}{% if snap.current %}; {% trans "the VM goes on from this one" %}{% endif %}
    +
    + {% if snap.external %} +
    {% csrf_token %}{% submission_key %} + + +
    +
    {% csrf_token %}{% submission_key %} + + +
    {% else %} - +
    {% csrf_token %}{% submission_key %} + + +
    +
    {% csrf_token %} + + +
    {% endif %} - -
+ + {% endfor %} + + {% else %} +
+ +

{% trans "The VM has no snapshot." %}

-

- {% if instance.internal_snapshots %}{% trans "The VM has internal snapshots: delete them before taking an external one." %} - {% elif instance.newer_than_current_snapshot %}{% trans "Snapshots newer than the one reverted to exist: delete them before taking a new one." %} - {% else %}{% trans "Each disk goes on in a new file next to it; the VM keeps running." %} - {% if instance.status == 1 %}{% trans "With memory, the VM pauses while its memory is saved." %}{% endif %} - {% if instance.status != 1 %}{% trans "Memory and frozen file systems are for a running VM." %}{% elif not instance.guest_agent_ready %}{% trans "Freezing needs the guest agent, which is not connected." %}{% endif %}{% endif %} -

- -
- {% trans "Internal snapshot: a fallback for a VM that cannot take an external one" %} -
{% csrf_token %}{% submission_key %} -

- {% if instance.status == 1 %}{% trans "The disks and memory go into the disk files. The VM does not respond while its memory is saved, which can take long: avoid it in production." %} - {% elif instance.status == 3 %}{% trans "The disks and memory go into the disk files; the paused VM stays paused." %} - {% else %}{% trans "The disks go into their files." %}{% endif %} -

-
-
- - -
-
- - -
-
- -
-
- {% if instance.external_snapshots %}

{% trans "The VM has external snapshots: the two kinds do not mix." %}

{% endif %} -
-
- {% if instance.snapshots %} -
    - {% for snap in instance.snapshots %} -
  • -
    - {{ snap.name }}{% if snap.description %} · {{ snap.description }}{% endif %} - · {% if snap.external %}{% trans "external" %}{% if snap.memory %}, {% trans "with memory" %}{% endif %}{% else %}{% trans "internal" %}{% endif %}{% if snap.current %}, {% trans "current" %}{% endif %} · {{ snap.date|date:"Y-m-d H:i" }} -
    - {% if snap.external %} -
    {% csrf_token %}{% submission_key %} - - -
    -
    {% csrf_token %}{% submission_key %} - - -
    - {% else %} -
    {% csrf_token %}{% submission_key %} - - -
    -
    {% csrf_token %} - - -
    - {% endif %} -
  • - {% endfor %} -
+ {% endif %} +
{% if instance.internal_snapshots and instance.status != 5 %}

{% trans "Shut the VM down to revert to an internal snapshot." %}

{% endif %} - {% else %} -

{% trans "The VM has no snapshot." %}

- {% endif %}

{% blocktrans %}Times in {{ TIME_ZONE }}. A VM with snapshots cannot be migrated.{% endblocktrans %}

diff --git a/instances/tests/test_snapshot_views.py b/instances/tests/test_snapshot_views.py index e514795d..37c955e5 100644 --- a/instances/tests/test_snapshot_views.py +++ b/instances/tests/test_snapshot_views.py @@ -219,7 +219,7 @@ class SnapshotTabTestCase(TestCase): def test_one_list_newest_first_each_with_its_kind(self): doc = self.page(internal=[self.snap("i")], external=[self.snap("e", date=datetime(2026, 2, 1), memory=True)]) - rows = [" ".join(li.text_content().split()) for li in doc.xpath("//ul[@id='snapshot-list']/li")] + rows = [" ".join(li.text_content().split()) for li in doc.xpath("//ol[@id='snapshot-list']/li")] self.assertEqual([row.split(" ")[0] for row in rows], ["e", "i"]) self.assertIn("external, with memory", rows[0]) self.assertIn("internal", rows[1]) diff --git a/locale/tr/LC_MESSAGES/django.mo b/locale/tr/LC_MESSAGES/django.mo index aac2c94a..acac1c2c 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 69f393e1..b6159a1a 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-04 04:57+0000\n" +"POT-Creation-Date: 2026-11-04 05:47+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" @@ -436,8 +436,8 @@ msgstr "%(name)s API anahtarı için işlemler" #: instances/templates/create_flavors.html:11 #: instances/templates/instances/settings_tab.html:251 #: instances/templates/instances/settings_tab.html:325 -#: instances/templates/instances/snapshots_tab.html:96 -#: instances/templates/instances/snapshots_tab.html:110 +#: instances/templates/instances/snapshots_tab.html:103 +#: instances/templates/instances/snapshots_tab.html:117 #: networks/templates/network.html:168 storages/templates/storage.html:152 #: templates/common/confirm_delete.html:5 #: templates/common/confirm_delete.html:9 @@ -1728,8 +1728,8 @@ msgstr "Kayıtlı, korumak için boş bırakın" #: computes/forms.py:28 computes/templates/computes/instances.html:45 #: instances/templates/instances/settings_tab.html:858 #: instances/templates/instances/settings_tab.html:890 -#: instances/templates/instances/snapshots_tab.html:23 -#: instances/templates/instances/snapshots_tab.html:67 +#: instances/templates/instances/snapshots_tab.html:27 +#: instances/templates/instances/snapshots_tab.html:71 msgid "Description" msgstr "Tanım" @@ -5468,10 +5468,6 @@ msgstr "" msgid "%(action)s: change it in the XML editor." msgstr "%(action)s: XML düzenleyicide değiştirin." -#: instances/templates/instances/snapshots_tab.html:11 -msgid "Snapshots" -msgstr "Anlık görüntüler" - #: instances/templates/instances/snapshots_tab.html:13 msgid "" "A disk job is running on this VM; snapshot actions are unavailable until it " @@ -5480,44 +5476,48 @@ msgstr "" "Bu sanal makinede bir disk işi çalışıyor; bitene kadar anlık görüntü " "işlemleri kullanılamaz." -#: instances/templates/instances/snapshots_tab.html:16 -#: instances/templates/instances/snapshots_tab.html:27 +#: instances/templates/instances/snapshots_tab.html:18 +msgid "Now" +msgstr "Şimdi" + +#: instances/templates/instances/snapshots_tab.html:20 +#: instances/templates/instances/snapshots_tab.html:31 msgid "Take a snapshot" msgstr "Anlık görüntü al" -#: instances/templates/instances/snapshots_tab.html:19 -#: instances/templates/instances/snapshots_tab.html:20 -#: instances/templates/instances/snapshots_tab.html:63 -#: instances/templates/instances/snapshots_tab.html:64 +#: instances/templates/instances/snapshots_tab.html:23 +#: instances/templates/instances/snapshots_tab.html:24 +#: instances/templates/instances/snapshots_tab.html:67 +#: instances/templates/instances/snapshots_tab.html:68 msgid "Snapshot name" msgstr "Anlık görüntü adı" -#: instances/templates/instances/snapshots_tab.html:20 -#: instances/templates/instances/snapshots_tab.html:64 +#: instances/templates/instances/snapshots_tab.html:24 +#: instances/templates/instances/snapshots_tab.html:68 msgid "Letters, digits, '.', '_' or '-'; not starting with '.'" msgstr "Harfler, rakamlar, '.', '_' veya '-'; '.' ile başlamaz" -#: instances/templates/instances/snapshots_tab.html:24 -#: instances/templates/instances/snapshots_tab.html:68 +#: instances/templates/instances/snapshots_tab.html:28 +#: instances/templates/instances/snapshots_tab.html:72 msgid "Description (optional)" msgstr "Açıklama (isteğe bağlı)" -#: instances/templates/instances/snapshots_tab.html:34 +#: instances/templates/instances/snapshots_tab.html:38 msgid "Save memory too" msgstr "Belleği de kaydet" -#: instances/templates/instances/snapshots_tab.html:42 +#: instances/templates/instances/snapshots_tab.html:46 msgid "Freeze the guest's file systems" msgstr "Konuk sistemin dosya sistemlerini dondur" -#: instances/templates/instances/snapshots_tab.html:46 +#: instances/templates/instances/snapshots_tab.html:50 msgid "" "The VM has internal snapshots: delete them before taking an external one." msgstr "" "Sanal makinenin dahili anlık görüntüleri var: harici bir tane almadan önce " "onları silin." -#: instances/templates/instances/snapshots_tab.html:47 +#: instances/templates/instances/snapshots_tab.html:51 msgid "" "Snapshots newer than the one reverted to exist: delete them before taking a " "new one." @@ -5525,38 +5525,38 @@ msgstr "" "Geri dönülen anlık görüntüden daha yeni anlık görüntüler var: yenisini " "almadan önce onları silin." -#: instances/templates/instances/snapshots_tab.html:48 +#: instances/templates/instances/snapshots_tab.html:52 msgid "Each disk goes on in a new file next to it; the VM keeps running." msgstr "" "Her disk yanındaki yeni bir dosyada devam eder; sanal makine çalışmaya devam " "eder." -#: instances/templates/instances/snapshots_tab.html:49 +#: instances/templates/instances/snapshots_tab.html:53 msgid "With memory, the VM pauses while its memory is saved." msgstr "" "Bellekle birlikte alınırsa sanal makine, belleği kaydedilirken duraklatılır." -#: instances/templates/instances/snapshots_tab.html:50 +#: instances/templates/instances/snapshots_tab.html:54 msgid "Memory and frozen file systems are for a running VM." msgstr "" "Bellek ve dondurulmuş dosya sistemleri çalışan bir sanal makine içindir." -#: instances/templates/instances/snapshots_tab.html:50 +#: instances/templates/instances/snapshots_tab.html:54 msgid "Freezing needs the guest agent, which is not connected." msgstr "Dondurma için konuk ajanı gerekir, ancak bağlı değil." -#: instances/templates/instances/snapshots_tab.html:54 +#: instances/templates/instances/snapshots_tab.html:58 msgid "Internal snapshot: a fallback for a VM that cannot take an external one" msgstr "" "Dahili anlık görüntü: harici anlık görüntü alamayan bir sanal makine için " "yedek yol" -#: instances/templates/instances/snapshots_tab.html:55 -#: instances/templates/instances/snapshots_tab.html:71 +#: instances/templates/instances/snapshots_tab.html:59 +#: instances/templates/instances/snapshots_tab.html:75 msgid "Take an internal snapshot" msgstr "Dahili anlık görüntü al" -#: instances/templates/instances/snapshots_tab.html:57 +#: instances/templates/instances/snapshots_tab.html:61 msgid "" "The disks and memory go into the disk files. The VM does not respond while " "its memory is saved, which can take long: avoid it in production." @@ -5564,46 +5564,46 @@ msgstr "" "Diskler ve bellek disk dosyalarına yazılır. Belleği kaydedilirken sanal " "makine yanıt vermez ve bu uzun sürebilir: üretim ortamında kaçının." -#: instances/templates/instances/snapshots_tab.html:58 +#: instances/templates/instances/snapshots_tab.html:62 msgid "" "The disks and memory go into the disk files; the paused VM stays paused." msgstr "" "Diskler ve bellek disk dosyalarına yazılır; duraklatılmış sanal makine " "duraklatılmış kalır." -#: instances/templates/instances/snapshots_tab.html:59 +#: instances/templates/instances/snapshots_tab.html:63 msgid "The disks go into their files." msgstr "Diskler kendi dosyalarına yazılır." -#: instances/templates/instances/snapshots_tab.html:74 +#: instances/templates/instances/snapshots_tab.html:78 msgid "The VM has external snapshots: the two kinds do not mix." msgstr "" "Sanal makinenin harici anlık görüntüleri var: iki tür bir arada kullanılamaz." -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "external" msgstr "harici" -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "with memory" msgstr "bellekle" -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "internal" msgstr "dahili" -#: instances/templates/instances/snapshots_tab.html:83 -msgid "current" -msgstr "geçerli" +#: instances/templates/instances/snapshots_tab.html:90 +msgid "the VM goes on from this one" +msgstr "sanal makine bundan devam ediyor" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 #, python-format msgid "Revert to snapshot %(name)s? Changes made since it are lost." msgstr "" "%(name)s anlık görüntüsüne dönülsün mü? O zamandan beri yapılan değişiklikler" " kaybolur." -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "" "The VM is powered off and starts again from the snapshot's disks, as after a " "power cut." @@ -5611,13 +5611,13 @@ msgstr "" "Sanal makine kapatılır ve bir elektrik kesintisinden sonraki gibi anlık " "görüntünün diskleriyle yeniden başlar." -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "The VM is powered off and comes back paused on the snapshot's disks." msgstr "" "Sanal makine kapatılır ve anlık görüntünün diskleriyle duraklatılmış olarak " "geri gelir." -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "" "These disks are detached; their writes since the current snapshot are " "discarded and their files are kept:" @@ -5625,16 +5625,16 @@ msgstr "" "Bu diskler ayrılır; geçerli anlık görüntüden beri yapılan yazmaları atılır ve" " dosyaları korunur:" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "Firmware variables (NVRAM) are not restored." msgstr "Üretici yazılımı değişkenleri (NVRAM) geri yüklenmez." -#: instances/templates/instances/snapshots_tab.html:90 -#: instances/templates/instances/snapshots_tab.html:104 +#: instances/templates/instances/snapshots_tab.html:97 +#: instances/templates/instances/snapshots_tab.html:111 msgid "Revert" msgstr "Geri dön" -#: instances/templates/instances/snapshots_tab.html:95 +#: instances/templates/instances/snapshots_tab.html:102 #, python-format msgid "" "Delete snapshot %(name)s? Its files are merged with the disks; the VM's data " @@ -5643,7 +5643,7 @@ msgstr "" "%(name)s anlık görüntüsü silinsin mi? Dosyaları disklerle birleştirilir; " "sanal makinenin verileri korunur." -#: instances/templates/instances/snapshots_tab.html:102 +#: instances/templates/instances/snapshots_tab.html:109 #, python-format msgid "" "Revert to snapshot %(name)s? Disk changes made since it are lost; a snapshot " @@ -5653,23 +5653,23 @@ msgstr "" "değişiklikleri kaybolur; çalışan bir sanal makinenin anlık görüntüsü onu o " "anki hâliyle yeniden başlatır." -#: instances/templates/instances/snapshots_tab.html:104 -#: instances/templates/instances/snapshots_tab.html:116 +#: instances/templates/instances/snapshots_tab.html:111 +#: instances/templates/instances/snapshots_tab.html:130 msgid "Shut the VM down to revert to an internal snapshot." msgstr "Dahili bir anlık görüntüye dönmek için sanal makineyi kapatın." -#: instances/templates/instances/snapshots_tab.html:109 +#: instances/templates/instances/snapshots_tab.html:116 #, python-format msgid "Delete snapshot %(name)s? The VM's current disks are not changed." msgstr "" "%(name)s anlık görüntüsü silinsin mi? Sanal makinenin geçerli diskleri " "değişmez." -#: instances/templates/instances/snapshots_tab.html:118 +#: instances/templates/instances/snapshots_tab.html:126 msgid "The VM has no snapshot." msgstr "Sanal makinenin anlık görüntüsü yok." -#: instances/templates/instances/snapshots_tab.html:120 +#: instances/templates/instances/snapshots_tab.html:131 #, python-format msgid "Times in %(TIME_ZONE)s. A VM with snapshots cannot be migrated." msgstr "" diff --git a/locale/zh/LC_MESSAGES/django.mo b/locale/zh/LC_MESSAGES/django.mo index 51ed5af2..40114fcc 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 98baa14c..935a790e 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-04 04:57+0000\n" +"POT-Creation-Date: 2026-11-04 05:47+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -431,8 +431,8 @@ msgstr "API 令牌 %(name)s 的操作" #: instances/templates/create_flavors.html:11 #: instances/templates/instances/settings_tab.html:251 #: instances/templates/instances/settings_tab.html:325 -#: instances/templates/instances/snapshots_tab.html:96 -#: instances/templates/instances/snapshots_tab.html:110 +#: instances/templates/instances/snapshots_tab.html:103 +#: instances/templates/instances/snapshots_tab.html:117 #: networks/templates/network.html:168 storages/templates/storage.html:152 #: templates/common/confirm_delete.html:5 #: templates/common/confirm_delete.html:9 @@ -1674,8 +1674,8 @@ msgstr "已保存,留空则保持不变" #: computes/forms.py:28 computes/templates/computes/instances.html:45 #: instances/templates/instances/settings_tab.html:858 #: instances/templates/instances/settings_tab.html:890 -#: instances/templates/instances/snapshots_tab.html:23 -#: instances/templates/instances/snapshots_tab.html:67 +#: instances/templates/instances/snapshots_tab.html:27 +#: instances/templates/instances/snapshots_tab.html:71 msgid "Description" msgstr "描述" @@ -5212,176 +5212,176 @@ msgstr "适用于客户机报告的崩溃,而非挂起。“停止”会让反 msgid "%(action)s: change it in the XML editor." msgstr "%(action)s:请在 XML 编辑器中更改。" -#: instances/templates/instances/snapshots_tab.html:11 -msgid "Snapshots" -msgstr "快照" - #: instances/templates/instances/snapshots_tab.html:13 msgid "" "A disk job is running on this VM; snapshot actions are unavailable until it " "ends." msgstr "此虚拟机正在运行磁盘任务;任务结束前快照操作不可用。" -#: instances/templates/instances/snapshots_tab.html:16 -#: instances/templates/instances/snapshots_tab.html:27 +#: instances/templates/instances/snapshots_tab.html:18 +msgid "Now" +msgstr "现在" + +#: instances/templates/instances/snapshots_tab.html:20 +#: instances/templates/instances/snapshots_tab.html:31 msgid "Take a snapshot" msgstr "创建快照" -#: instances/templates/instances/snapshots_tab.html:19 -#: instances/templates/instances/snapshots_tab.html:20 -#: instances/templates/instances/snapshots_tab.html:63 -#: instances/templates/instances/snapshots_tab.html:64 +#: instances/templates/instances/snapshots_tab.html:23 +#: instances/templates/instances/snapshots_tab.html:24 +#: instances/templates/instances/snapshots_tab.html:67 +#: instances/templates/instances/snapshots_tab.html:68 msgid "Snapshot name" msgstr "快照名称" -#: instances/templates/instances/snapshots_tab.html:20 -#: instances/templates/instances/snapshots_tab.html:64 +#: instances/templates/instances/snapshots_tab.html:24 +#: instances/templates/instances/snapshots_tab.html:68 msgid "Letters, digits, '.', '_' or '-'; not starting with '.'" msgstr "字母、数字、“.”、“_”或“-”;不能以“.”开头" -#: instances/templates/instances/snapshots_tab.html:24 -#: instances/templates/instances/snapshots_tab.html:68 +#: instances/templates/instances/snapshots_tab.html:28 +#: instances/templates/instances/snapshots_tab.html:72 msgid "Description (optional)" msgstr "描述(可选)" -#: instances/templates/instances/snapshots_tab.html:34 +#: instances/templates/instances/snapshots_tab.html:38 msgid "Save memory too" msgstr "同时保存内存" -#: instances/templates/instances/snapshots_tab.html:42 +#: instances/templates/instances/snapshots_tab.html:46 msgid "Freeze the guest's file systems" msgstr "冻结客户机的文件系统" -#: instances/templates/instances/snapshots_tab.html:46 +#: instances/templates/instances/snapshots_tab.html:50 msgid "" "The VM has internal snapshots: delete them before taking an external one." msgstr "该虚拟机有内部快照:请先删除它们再创建外部快照。" -#: instances/templates/instances/snapshots_tab.html:47 +#: instances/templates/instances/snapshots_tab.html:51 msgid "" "Snapshots newer than the one reverted to exist: delete them before taking a " "new one." msgstr "存在比所恢复快照更新的快照:请先删除它们再创建新快照。" -#: instances/templates/instances/snapshots_tab.html:48 +#: instances/templates/instances/snapshots_tab.html:52 msgid "Each disk goes on in a new file next to it; the VM keeps running." msgstr "每个磁盘在其旁边的新文件中继续写入;虚拟机保持运行。" -#: instances/templates/instances/snapshots_tab.html:49 +#: instances/templates/instances/snapshots_tab.html:53 msgid "With memory, the VM pauses while its memory is saved." msgstr "包含内存时,虚拟机在保存内存期间暂停。" -#: instances/templates/instances/snapshots_tab.html:50 +#: instances/templates/instances/snapshots_tab.html:54 msgid "Memory and frozen file systems are for a running VM." msgstr "内存和冻结文件系统仅适用于运行中的虚拟机。" -#: instances/templates/instances/snapshots_tab.html:50 +#: instances/templates/instances/snapshots_tab.html:54 msgid "Freezing needs the guest agent, which is not connected." msgstr "冻结需要客户机代理,但它未连接。" -#: instances/templates/instances/snapshots_tab.html:54 +#: instances/templates/instances/snapshots_tab.html:58 msgid "Internal snapshot: a fallback for a VM that cannot take an external one" msgstr "内部快照:用于无法创建外部快照的虚拟机的备用方案" -#: instances/templates/instances/snapshots_tab.html:55 -#: instances/templates/instances/snapshots_tab.html:71 +#: instances/templates/instances/snapshots_tab.html:59 +#: instances/templates/instances/snapshots_tab.html:75 msgid "Take an internal snapshot" msgstr "创建内部快照" -#: instances/templates/instances/snapshots_tab.html:57 +#: instances/templates/instances/snapshots_tab.html:61 msgid "" "The disks and memory go into the disk files. The VM does not respond while " "its memory is saved, which can take long: avoid it in production." msgstr "磁盘和内存保存到磁盘文件中。保存内存期间虚拟机不响应,可能耗时较长:生产环境中请避免使用。" -#: instances/templates/instances/snapshots_tab.html:58 +#: instances/templates/instances/snapshots_tab.html:62 msgid "" "The disks and memory go into the disk files; the paused VM stays paused." msgstr "磁盘和内存保存到磁盘文件中;已暂停的虚拟机保持暂停。" -#: instances/templates/instances/snapshots_tab.html:59 +#: instances/templates/instances/snapshots_tab.html:63 msgid "The disks go into their files." msgstr "磁盘保存到各自的文件中。" -#: instances/templates/instances/snapshots_tab.html:74 +#: instances/templates/instances/snapshots_tab.html:78 msgid "The VM has external snapshots: the two kinds do not mix." msgstr "该虚拟机已有外部快照:两种快照不能混用。" -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "external" msgstr "外部" -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "with memory" msgstr "含内存" -#: instances/templates/instances/snapshots_tab.html:83 +#: instances/templates/instances/snapshots_tab.html:90 msgid "internal" msgstr "内部" -#: instances/templates/instances/snapshots_tab.html:83 -msgid "current" -msgstr "当前" +#: instances/templates/instances/snapshots_tab.html:90 +msgid "the VM goes on from this one" +msgstr "虚拟机从此快照继续" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 #, python-format msgid "Revert to snapshot %(name)s? Changes made since it are lost." msgstr "恢复到快照 %(name)s?此后所做的更改将丢失。" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "" "The VM is powered off and starts again from the snapshot's disks, as after a " "power cut." msgstr "虚拟机将关机,并从快照的磁盘重新启动,如同断电后一样。" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "The VM is powered off and comes back paused on the snapshot's disks." msgstr "虚拟机将关机,并在快照的磁盘上以暂停状态恢复。" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "" "These disks are detached; their writes since the current snapshot are " "discarded and their files are kept:" msgstr "以下磁盘将被分离;它们自当前快照以来的写入将被丢弃,文件会保留:" -#: instances/templates/instances/snapshots_tab.html:89 +#: instances/templates/instances/snapshots_tab.html:96 msgid "Firmware variables (NVRAM) are not restored." msgstr "固件变量(NVRAM)不会恢复。" -#: instances/templates/instances/snapshots_tab.html:90 -#: instances/templates/instances/snapshots_tab.html:104 +#: instances/templates/instances/snapshots_tab.html:97 +#: instances/templates/instances/snapshots_tab.html:111 msgid "Revert" msgstr "恢复" -#: instances/templates/instances/snapshots_tab.html:95 +#: instances/templates/instances/snapshots_tab.html:102 #, python-format msgid "" "Delete snapshot %(name)s? Its files are merged with the disks; the VM's data " "is kept." msgstr "删除快照 %(name)s?其文件将合并到磁盘中;虚拟机的数据会保留。" -#: instances/templates/instances/snapshots_tab.html:102 +#: instances/templates/instances/snapshots_tab.html:109 #, python-format msgid "" "Revert to snapshot %(name)s? Disk changes made since it are lost; a snapshot " "of a running VM starts it again as it was then." msgstr "恢复到快照 %(name)s?此后的磁盘更改将丢失;运行中虚拟机的快照会使其以当时的状态重新启动。" -#: instances/templates/instances/snapshots_tab.html:104 -#: instances/templates/instances/snapshots_tab.html:116 +#: instances/templates/instances/snapshots_tab.html:111 +#: instances/templates/instances/snapshots_tab.html:130 msgid "Shut the VM down to revert to an internal snapshot." msgstr "请先关闭虚拟机,再恢复到内部快照。" -#: instances/templates/instances/snapshots_tab.html:109 +#: instances/templates/instances/snapshots_tab.html:116 #, python-format msgid "Delete snapshot %(name)s? The VM's current disks are not changed." msgstr "删除快照 %(name)s?虚拟机的当前磁盘不会改变。" -#: instances/templates/instances/snapshots_tab.html:118 +#: instances/templates/instances/snapshots_tab.html:126 msgid "The VM has no snapshot." msgstr "该虚拟机没有快照。" -#: instances/templates/instances/snapshots_tab.html:120 +#: instances/templates/instances/snapshots_tab.html:131 #, python-format msgid "Times in %(TIME_ZONE)s. A VM with snapshots cannot be migrated." msgstr "时间以 %(TIME_ZONE)s 显示。有快照的虚拟机无法迁移。" diff --git a/static/css/webvirtcloud.css b/static/css/webvirtcloud.css index 7586a151..f87750cd 100644 --- a/static/css/webvirtcloud.css +++ b/static/css/webvirtcloud.css @@ -205,6 +205,31 @@ button.vcpu-cell:disabled { opacity: .65; } .boot-text { min-width: 10rem; flex-basis: 10rem; } .boot-chain .boot-spare-only, .boot-spare .boot-chain-only { display: none !important; } +/* the snapshots tab: the VM's history as a line, newest first; now on top, the snapshot the VM goes on from filled */ +.snap-line { position: relative; padding-left: 1.75rem; } +.snap-line::before { + content: ""; + position: absolute; + left: calc(.5rem - 1px); + top: .75rem; + bottom: .75rem; + border-left: 2px solid var(--bs-border-color); +} +.snap-node { position: relative; padding: .5rem 0; } +.snap-dot { + position: absolute; + left: -1.75rem; + top: .75rem; + width: 1rem; + height: 1rem; + border-radius: 50%; + border: 2px solid var(--bs-primary); + background: var(--bs-body-bg); +} +.snap-dot.bg-success, .snap-dot.bg-warning, .snap-dot.bg-secondary { border-color: transparent; } +.snap-dot.snap-current { background: var(--bs-primary); } +.snap-dot.snap-none { border-color: var(--bs-border-color); } + /* a log message keeps a readable width when its table scrolls on a phone */ .log-message { min-width: 16rem;