1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-10 04:06:47 +00:00

feat(operations): a job's error and warning show in the reader's language

A job stored its error and its result's warning as English text, much
of it built with the values in it (volume paths, a disk, libvirt's
error), so no catalog could translate it, and the job pages and panel
showed English whatever the language.

A job now stores them as messages: our English text, marked for
translation, and its values; libvirt's own text is a message without
values and is shown as it is. The jobs API and pages put them in the
reader's language. OperationError keeps its text and values apart for
the same reason, so a refusal raised while a job is submitted is shown
translated too. Messages one after another still read as sentences.

Errors stored before are kept as one message each, shown as they were.
This commit is contained in:
catborise 2026-11-02 23:49:45 +03:00
parent 0eab09e19d
commit 1e66367bb4
29 changed files with 927 additions and 333 deletions

Binary file not shown.

View file

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-11-02 20:32+0000\n"
"POT-Creation-Date: 2026-11-02 20:42+0000\n"
"PO-Revision-Date: 2020-11-04 12:00+0000\n"
"Last-Translator: catborise <muhammetalisag@gmail.com>, 2020\n"
"Language-Team: Turkish (https://www.transifex.com/catborise/teams/110663/"
@ -2125,8 +2125,7 @@ msgid "of %(memory)s"
msgstr "/ %(memory)s"
#: computes/templates/computes/list.html:58 computes/templates/overview.html:58
#: instances/forms.py:15 instances/jobs.py:132
#: instances/templates/allinstances_index_grouped.html:16
#: instances/forms.py:15 instances/templates/allinstances_index_grouped.html:16
#: instances/templates/allinstances_index_nongrouped.html:14
#: instances/templates/create_instance_w2.html:63
#: instances/templates/instances/settings_tab.html:852
@ -2654,201 +2653,364 @@ msgstr ""
msgid "The name of the virtual machine must not contain any special characters"
msgstr "Sanal makine adı özel karakterler içeremez"
#: instances/jobs.py:133
msgid "memory (MiB)"
msgstr "bellek (MiB)"
#: instances/jobs.py:68
msgid "The VM moved to another compute after the job was queued"
msgstr "İş kuyruğa alındıktan sonra sanal makine başka bir sunucuya taşındı"
#: instances/jobs.py:136
#, python-format
msgid "Enter a whole number of %(what)s for the clone"
msgstr "Klon için %(what)s olarak bir tam sayı girin"
msgid "Enter a whole number of vCPUs for the clone"
msgstr "Klon için vCPU sayısını tam sayı olarak girin"
#: instances/jobs.py:160
#: instances/jobs.py:138
msgid "Enter a whole number of memory (MiB) for the clone"
msgstr "Klon için belleği (MiB) tam sayı olarak girin"
#: instances/jobs.py:165
msgid "Choose the clone's name from the list of free names"
msgstr "Klonun adını boş adlar listesinden seçin"
#: instances/jobs.py:187
#: instances/jobs.py:192
#, python-format
msgid "User '%(quota_msg)s' quota reached, cannot create '%(clone_name)s'!"
msgstr ""
"%(quota_msg)s' Kullanıcı kotası doldu, '%(clone_name)s' in CPU su yeniden "
"boyutlandırılamıyor!"
#: instances/jobs.py:190 instances/jobs.py:527
#: instances/jobs.py:195 instances/jobs.py:532
#, python-format
msgid "Instance '%(clone_name)s' already exists!"
msgstr "'%(clone_name)s' sanal makinesi zaten mevcut!"
#: instances/jobs.py:193
#: instances/jobs.py:197
#, python-format
msgid "Instance name '%(clone_name)s' contains invalid characters!"
msgstr "Sanal makine adı '%(clone_name)s' geçersiz karakterler içermektedir!"
#: instances/jobs.py:195
#: instances/jobs.py:200
#, python-format
msgid "Instance MAC '%(clone_mac)s' invalid format!"
msgstr "Sanal makine MAC adresi '%(clone_mac)s' geçersiz biçemde belirtilmiş!"
#: instances/jobs.py:198
#: instances/jobs.py:202
#, python-format
msgid "Disk name '%(disk_name)s' contains invalid characters!"
msgstr "Disk adı '%(disk_name)s' geçersiz karakterler içeriyor!"
#: instances/jobs.py:217
#: instances/jobs.py:222
#, python-format
msgid "The clone is made, but not as asked: %(error)s"
msgstr "Klon oluşturuldu, ama istendiği gibi değil: %(error)s"
#: instances/jobs.py:288
#: instances/jobs.py:270
msgid "The VM was not defined and no volume of it was left."
msgstr "Sanal makine tanımlanmadı ve ondan geriye birim kalmadı."
#: instances/jobs.py:272
#, python-format
msgid ""
"The VM was not defined; check these volumes, then resolve this job: "
"%(volumes)s"
msgstr ""
"Sanal makine tanımlanmadı; şu birimleri kontrol edin, sonra bu işi çözün: "
"%(volumes)s"
#: instances/jobs.py:293
msgid "Delete snapshot"
msgstr "Anlık görüntüyü sil"
#: instances/jobs.py:311
#: instances/jobs.py:303
#, 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"
#: instances/jobs.py:316
msgid "Merging the snapshot"
msgstr "Anlık görüntü birleştiriliyor"
#: instances/jobs.py:333
#: instances/jobs.py:335
msgid "The VM is no longer on its compute"
msgstr "Sanal makine artık kendi sunucusunda değil"
#: instances/jobs.py:338
msgid "libvirt is still merging the snapshot"
msgstr "libvirt anlık görüntüyü hâlâ birleştiriyor"
#: instances/jobs.py:354
#: instances/jobs.py:346
msgid ""
"The snapshot is still listed and no merge runs. It cannot be told whether "
"the disks changed; check the VM before deleting the snapshot again or "
"reverting to it."
msgstr ""
"Anlık görüntü hâlâ listede ve çalışan bir birleştirme yok. Disklerin değişip "
"değişmediği bilinemiyor; anlık görüntüyü yeniden silmeden ya da ona dönmeden "
"önce sanal makineyi kontrol edin."
#: instances/jobs.py:353
msgid "The VM is no longer on the compute the job ran on"
msgstr "Sanal makine artık işin çalıştığı sunucuda değil"
#: instances/jobs.py:359
msgid "Take snapshot"
msgstr "Anlık görüntü al"
#: instances/jobs.py:378
#: instances/jobs.py:371
#, 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:383
msgid "Taking the snapshot"
msgstr "Anlık görüntü alınıyor"
#: instances/jobs.py:391
#: instances/jobs.py:396
msgid "libvirt is still taking the snapshot"
msgstr "libvirt anlık görüntüyü hâlâ alıyor"
#: instances/jobs.py:417
#: instances/jobs.py:399
msgid "The snapshot was not taken"
msgstr "Anlık görüntü alınmadı"
#: instances/jobs.py:422
msgid "Revert snapshot"
msgstr "Snapshota dön"
#: instances/jobs.py:446
#: instances/jobs.py:451
msgid "Reverting the VM"
msgstr "Sanal makine geri döndürülüyor"
#: instances/jobs.py:457
#: instances/jobs.py:462
msgid "libvirt is still reverting the VM"
msgstr "libvirt sanal makineyi hâlâ geri döndürüyor"
#: instances/jobs.py:498
#: instances/jobs.py:466
msgid ""
"It cannot be told whether the VM was reverted; check it, then revert again "
"or resolve this job."
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:483
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:484
#, python-format
msgid ""
"The guest's file systems could not be thawed (%(error)s); thaw them with: "
"virsh domfsthaw %(vm)s"
msgstr ""
"Konuğun dosya sistemleri çözülemedi (%(error)s); şununla çözün: virsh "
"domfsthaw %(vm)s"
#: instances/jobs.py:503
msgid "Clone VM"
msgstr "Sanal makineyi klonla"
#: instances/jobs.py:537 instances/jobs.py:544 instances/jobs.py:787
#: instances/jobs.py:542 instances/jobs.py:549 instances/jobs.py:805
msgid "Copying disks"
msgstr "Diskler kopyalanıyor"
#: instances/jobs.py:671
#: instances/jobs.py:600
msgid "libvirt has no result of the copy"
msgstr "libvirt'te kopyanın sonucu yok"
#: instances/jobs.py:611
#, python-format
msgid ""
"The copy failed: %(error)s. The guest's file systems could not be thawed "
"(%(thaw)s); thaw them with: virsh domfsthaw %(vm)s"
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:614 instances/jobs.py:698
msgid "The copy failed"
msgstr "Kopyalama başarısız oldu"
#: instances/jobs.py:639
#, python-format
msgid ""
"The VM is no longer on the compute the job ran on; check these volumes, then "
"resolve this job: %(volumes)s"
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:674
#, python-format
msgid ""
"A volume of the clone was being created; check these volumes, then resolve "
"this job: %(volumes)s"
msgstr ""
"Klonun bir birimi oluşturuluyordu; şu birimleri kontrol edin, sonra bu işi "
"çözün: %(volumes)s"
#: instances/jobs.py:678
msgid "The job stopped before the copy started"
msgstr "İş, kopyalama başlamadan durdu"
#: instances/jobs.py:685
msgid "libvirt is still copying the disks"
msgstr "libvirt diskleri hâlâ kopyalıyor"
#: instances/jobs.py:703 instances/templates/create_instance_w1.html:60
#: instances/jobs.py:688
#, python-format
msgid ""
"Another backup runs on the VM; check these volumes, then resolve this job: "
"%(volumes)s"
msgstr ""
"Sanal makinede başka bir yedekleme çalışıyor; şu birimleri kontrol edin, "
"sonra bu işi çözün: %(volumes)s"
#: instances/jobs.py:693
#, python-format
msgid ""
"libvirt has no result of the copy; check these volumes, then resolve this "
"job: %(volumes)s"
msgstr ""
"libvirt'te kopyanın sonucu yok; şu birimleri kontrol edin, sonra bu işi "
"çözün: %(volumes)s"
#: instances/jobs.py:721 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:726 instances/views.py:2477
#: instances/jobs.py:744 instances/views.py:2477
msgid "A virtual machine with this name already exists"
msgstr "Bu isimde bir sanal makine mevcut"
#: instances/jobs.py:728
#: instances/jobs.py:746
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:731
#: instances/jobs.py:749
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:733
#: instances/jobs.py:751
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:735
#: instances/jobs.py:753
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:737
#: instances/jobs.py:755
msgid "Invalid cache mode"
msgstr "Geçersiz önbellek modu"
#: instances/jobs.py:739
#: instances/jobs.py:757
#, 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:741
#: instances/jobs.py:759
#, python-format
msgid "A CD-ROM cannot use the %(bus)s bus"
msgstr "CD-ROM %(bus)s veri yolunu kullanamaz"
#: instances/jobs.py:744
#: instances/jobs.py:762
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:747
#: instances/jobs.py:765
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:753
#: instances/jobs.py:771
#, python-format
msgid "This host offers no firmware %(firmware)s"
msgstr "Bu sunucu %(firmware)s firmware'ini sunmuyor"
#: instances/jobs.py:755
#: instances/jobs.py:773
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:806
#: instances/jobs.py:824
msgid "Writing the cloud-init seed"
msgstr "cloud-init tohumu yazılıyor"
#: instances/jobs.py:813
#: instances/jobs.py:831
msgid "Defining the VM"
msgstr "Sanal makine tanımlanıyor"
#: instances/jobs.py:870
#: instances/jobs.py:864
#, python-format
msgid "%(error)s. Remove these volumes by hand: %(volumes)s"
msgstr "%(error)s. Şu birimleri elle silin: %(volumes)s"
#: instances/jobs.py:889
#, python-format
msgid "The instance is already on %(compute)s"
msgstr "Sanal makine zaten %(compute)s üzerinde"
#: instances/jobs.py:872
#: instances/jobs.py:891
#, python-format
msgid "%(compute)s is not reachable"
msgstr "%(compute)s sunucusuna ulaşılamıyor"
#: instances/jobs.py:874
#: instances/jobs.py:893
#, 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:892
#: instances/jobs.py:911
msgid "Migrate VM"
msgstr "Sanal makineyi taşı"
#: instances/jobs.py:936
#: instances/jobs.py:955
msgid "Migrating the VM"
msgstr "Sanal makine taşınıyor"
#: instances/jobs.py:970
#: instances/jobs.py:989
msgid "libvirt is still migrating the VM"
msgstr "libvirt sanal makineyi hâlâ taşıyor"
#: instances/jobs.py:1011
#: instances/jobs.py:996
msgid "The VM stayed on the source host"
msgstr "Sanal makine kaynak sunucuda kaldı"
#: instances/jobs.py:998
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:1030
msgid "Move disk"
msgstr "Diski taşı"
#: instances/jobs.py:1042
#: instances/jobs.py:1037
msgid "Choose a disk of the VM"
msgstr "Sanal makinenin bir diskini seçin"
#: instances/jobs.py:1061
msgid "Copying the disk"
msgstr "Disk kopyalanıyor"
#: instances/jobs.py:1104
#, 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:1110
#, 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:1112
#, 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"
#: instances/models.py:18
msgid "label"
msgstr "etiket"
@ -7438,11 +7600,35 @@ msgstr ""
"Harfler, rakamlar, nokta, tire ve alt çizgi. Kopya, filtrenin kurallarını ve "
"başvurularını içerir."
#: operations/api/serializers.py:35
#: operations/api/serializers.py:37
#, python-format
msgid "%(phase)s (over its time limit)"
msgstr "%(phase)s (süre sınırını aştı)"
#: operations/jobs.py:157
msgid "The form has no valid submission key; reload the page"
msgstr "Formun geçerli bir gönderim anahtarı yok; sayfayı yeniden yükleyin"
#: operations/jobs.py:203
msgid "This job cannot be cancelled once it has started"
msgstr "Bu iş başladıktan sonra iptal edilemez"
#: operations/jobs.py:206
msgid "The job has already ended"
msgstr "İş zaten bitti"
#: operations/jobs.py:254
msgid "Choose succeeded or failed"
msgstr "Başarılı ya da başarısız seçin"
#: operations/jobs.py:257
msgid "Write a note on what was checked"
msgstr "Neyin kontrol edildiğine dair bir not yazın"
#: operations/jobs.py:261
msgid "Only an uncertain job can be resolved"
msgstr "Yalnızca belirsiz bir iş çözülebilir"
#: operations/templates/operations/job.html:11
#: operations/templates/operations/jobs.html:7
#: operations/templates/operations/jobs.html:9
@ -7629,12 +7815,12 @@ msgstr "İptal edilemedi: sunucuya ulaşılamadı."
msgid "The host of this virtual machine cannot be reached right now."
msgstr "Bu sanal makinenin sunucusuna şu anda ulaşılamıyor."
#: operations/utils.py:120
#: operations/utils.py:146
msgid ""
"A short operation is in progress on this resource; try again in a moment."
msgstr "Bu kaynakta kısa bir işlem sürüyor; birazdan yeniden deneyin."
#: operations/utils.py:123
#: operations/utils.py:149
#, python-format
msgid ""
"%(label)s is %(state)s on this resource (started by %(user)s, %(since)s "
@ -7643,15 +7829,36 @@ msgstr ""
"%(label)s bu kaynakta %(state)s (%(user)s başlattı, %(since)s önce); İşler "
"sayfasına bakın."
#: operations/utils.py:125
#: operations/utils.py:151
#, python-format
msgid "%(label)s is %(state)s on this resource (since %(since)s)."
msgstr "%(label)s bu kaynakta %(state)s (%(since)s beri)."
#: operations/worker.py:38
msgid ""
"libvirt's merge finished copying but never completed (for example after a "
"libvirtd restart); check the VM before resolving"
msgstr ""
"libvirt'in birleştirmesi kopyalamayı bitirdi ama hiç tamamlanmadı (örneğin "
"libvirtd yeniden başlatıldıktan sonra); çözmeden önce sanal makineyi kontrol "
"edin"
#: operations/worker.py:40
msgid ""
"The worker that ran this job stopped responding; an administrator must make "
"sure it is no longer running, then resolve this job"
msgstr ""
"Bu işi çalıştıran worker yanıt vermeyi bıraktı; bir yönetici artık "
"çalışmadığından emin olmalı, sonra bu işi çözmeli"
#: operations/worker.py:42
msgid "Waiting for recovery"
msgstr "Kurtarma bekleniyor"
#: operations/worker.py:393
msgid "The worker stopped before the job changed anything"
msgstr "Worker, iş herhangi bir şeyi değiştirmeden önce durdu"
#: storages/forms.py:30 storages/templates/storage.html:102
#: storages/templates/storages.html:43
msgid "Path"
@ -7718,10 +7925,34 @@ msgstr "İmaj adı 120 karakterden fazla olamaz"
msgid "Clone volume"
msgstr "Birimi klonla"
#: storages/jobs.py:58
#, python-format
msgid "The pool has no volume named %(name)s"
msgstr "Havuzda %(name)s adında birim yok"
#: storages/jobs.py:60
msgid "An ISO image is not cloned"
msgstr "ISO imajı klonlanmaz"
#: storages/jobs.py:63
msgid "Name of volume already in use"
msgstr "Birim adı zaten kullanılıyor"
#: storages/jobs.py:72
msgid "Copying the volume"
msgstr "Birim kopyalanıyor"
#: storages/jobs.py:84
msgid ""
"The copy exists, but the job did not see it finish; check it, then resolve "
"this job."
msgstr ""
"Kopya var, ancak iş bittiğini görmedi; kontrol edin, sonra bu işi çözün."
#: storages/jobs.py:85
msgid "The copy was not made"
msgstr "Kopya oluşturulmadı"
#: storages/jobs.py:96
msgid "Upload ISO image"
msgstr "ISO imajı yükle"
@ -8102,77 +8333,91 @@ msgstr "Boyut yok"
msgid "Space unavailable while stopped"
msgstr "Durdurulmuşken alan bilgisi yok"
#: storages/upload.py:132 storages/upload.py:153 storages/upload.py:181
#: storages/upload.py:27
msgid "The upload was idle for over an hour; its partial file was deleted"
msgstr "Yükleme bir saatten uzun süre boşta kaldı; yarım dosyası silindi"
#: storages/upload.py:134 storages/upload.py:155 storages/upload.py:183
msgid "Destination file already exists"
msgstr "Hedef dosya zaten mevcut"
#: storages/upload.py:155
#: storages/upload.py:157
msgid "Filesystem does not support atomic no-replace finalization: {}"
msgstr "Dosya sistemi, üzerine yazmadan atomik sonlandırmayı desteklemiyor: {}"
#: storages/upload.py:212
#: storages/upload.py:214
msgid "Unsupported connection type for file upload."
msgstr "Dosya yükleme için desteklenmeyen bağlantı türü."
#: storages/upload.py:224
#: storages/upload.py:226
msgid "Security issues with file uploading: path traversal detected"
msgstr ""
"Dosya yüklemede güvenlik sorunu: dizin geçişi (path traversal) algılandı"
#: storages/upload.py:280
#: storages/upload.py:282
msgid "The SFTP session did not start in time"
msgstr "SFTP oturumu zamanında başlamadı"
#: storages/upload.py:303
#: storages/upload.py:305
msgid "Security issues with file uploading: symlink detected"
msgstr "Dosya yüklemede güvenlik sorunu: sembolik bağlantı algılandı"
#: storages/upload.py:395
#: storages/upload.py:397
msgid "Libvirt stream stopped during upload"
msgstr "Libvirt akışı yükleme sırasında durdu"
#: storages/upload.py:399
#: storages/upload.py:401
msgid "Upload chunk size changed during transfer"
msgstr "Yükleme parça boyutu aktarım sırasında değişti"
#: storages/upload.py:431 storages/upload.py:526
#: storages/upload.py:433 storages/upload.py:528
msgid "The upload has ended"
msgstr "Yükleme sona erdi"
#: storages/upload.py:444
#: storages/upload.py:445 storages/upload.py:446
msgid "The uploaded image is missing"
msgstr "Yüklenen imaj bulunamadı"
#: storages/upload.py:515
#: storages/upload.py:450
msgid ""
"An image of this name appeared before the upload finished; the upload was "
"deleted"
msgstr "Yükleme bitmeden bu adda bir imaj belirdi; yükleme silindi"
#: storages/upload.py:484
msgid "The compute was deleted"
msgstr "Sunucu silindi"
#: storages/upload.py:517
msgid "Upload session not found or expired"
msgstr "Yükleme oturumu bulunamadı veya süresi doldu"
#: storages/upload.py:517
#: storages/upload.py:519
msgid "Upload session parameters changed"
msgstr "Yükleme oturumu parametreleri değişti"
#: storages/upload.py:531 storages/upload.py:563
#: storages/upload.py:533 storages/upload.py:565
msgid "The upload was cancelled"
msgstr "Yükleme iptal edildi"
#: storages/upload.py:533
#: storages/upload.py:535
#, python-format
msgid "Invalid chunk sequence. Expected chunk %(exp)d, got %(got)d"
msgstr "Geçersiz parça sırası. Beklenen parça %(exp)d, gelen %(got)d"
#: storages/upload.py:543
#: storages/upload.py:545
msgid "Empty upload chunk"
msgstr "Boş yükleme parçası"
#: storages/upload.py:545
#: storages/upload.py:547
msgid "Upload exceeds declared file size"
msgstr "Yükleme, bildirilen dosya boyutunu aşıyor"
#: storages/upload.py:547
#: storages/upload.py:549
msgid "Final chunk does not match declared file size"
msgstr "Son parça bildirilen dosya boyutuyla eşleşmiyor"
#: storages/upload.py:553
#: storages/upload.py:554 storages/upload.py:555
msgid "The partial upload is missing"
msgstr "Kısmi yükleme bulunamadı"

Binary file not shown.

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-11-02 20:32+0000\n"
"POT-Creation-Date: 2026-11-02 20:42+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@ -2064,8 +2064,7 @@ msgid "of %(memory)s"
msgstr "共 %(memory)s"
#: computes/templates/computes/list.html:58 computes/templates/overview.html:58
#: instances/forms.py:15 instances/jobs.py:132
#: instances/templates/allinstances_index_grouped.html:16
#: instances/forms.py:15 instances/templates/allinstances_index_grouped.html:16
#: instances/templates/allinstances_index_nongrouped.html:14
#: instances/templates/create_instance_w2.html:63
#: instances/templates/instances/settings_tab.html:852
@ -2573,196 +2572,343 @@ msgstr "控制台监听的不只是 localhost;只有管理员可以移除其
msgid "The name of the virtual machine must not contain any special characters"
msgstr "虚拟机名称不能包含任何特殊字符"
#: instances/jobs.py:133
msgid "memory (MiB)"
msgstr "内存(MiB)"
#: instances/jobs.py:68
msgid "The VM moved to another compute after the job was queued"
msgstr "任务排队后,虚拟机已移到另一个计算节点"
#: instances/jobs.py:136
#, python-format
msgid "Enter a whole number of %(what)s for the clone"
msgstr "请为克隆输入整数的%(what)s"
msgid "Enter a whole number of vCPUs for the clone"
msgstr "请为克隆输入整数个 vCPU"
#: instances/jobs.py:160
#: instances/jobs.py:138
msgid "Enter a whole number of memory (MiB) for the clone"
msgstr "请为克隆输入整数的内存(MiB)"
#: instances/jobs.py:165
msgid "Choose the clone's name from the list of free names"
msgstr "请从可用名称列表中选择克隆的名称"
#: instances/jobs.py:187
#: instances/jobs.py:192
#, python-format
msgid "User '%(quota_msg)s' quota reached, cannot create '%(clone_name)s'!"
msgstr "用户 '%(quota_msg)s' 配额已满,无法创建 '%(clone_name)s'!"
#: instances/jobs.py:190 instances/jobs.py:527
#: instances/jobs.py:195 instances/jobs.py:532
#, python-format
msgid "Instance '%(clone_name)s' already exists!"
msgstr "虚拟机 '%(clone_name)s' 已存在!"
#: instances/jobs.py:193
#: instances/jobs.py:197
#, python-format
msgid "Instance name '%(clone_name)s' contains invalid characters!"
msgstr "虚拟机名称 '%(clone_name)s' 包含无效字符!"
#: instances/jobs.py:195
#: instances/jobs.py:200
#, python-format
msgid "Instance MAC '%(clone_mac)s' invalid format!"
msgstr "虚拟机 MAC '%(clone_mac)s' 格式无效!"
#: instances/jobs.py:198
#: instances/jobs.py:202
#, python-format
msgid "Disk name '%(disk_name)s' contains invalid characters!"
msgstr "磁盘名称 '%(disk_name)s' 包含无效字符!"
#: instances/jobs.py:217
#: instances/jobs.py:222
#, python-format
msgid "The clone is made, but not as asked: %(error)s"
msgstr "克隆已创建,但与要求不符:%(error)s"
#: instances/jobs.py:288
#: instances/jobs.py:270
msgid "The VM was not defined and no volume of it was left."
msgstr "虚拟机未定义,也没有留下它的卷。"
#: instances/jobs.py:272
#, python-format
msgid ""
"The VM was not defined; check these volumes, then resolve this job: "
"%(volumes)s"
msgstr "虚拟机未定义;请检查这些卷,然后处理此任务:%(volumes)s"
#: instances/jobs.py:293
msgid "Delete snapshot"
msgstr "删除快照"
#: instances/jobs.py:311
#: instances/jobs.py:303
#, python-format
msgid "The VM has no external snapshot named %(name)s"
msgstr "虚拟机没有名为 %(name)s 的外部快照"
#: instances/jobs.py:316
msgid "Merging the snapshot"
msgstr "正在合并快照"
#: instances/jobs.py:333
#: instances/jobs.py:335
msgid "The VM is no longer on its compute"
msgstr "虚拟机已不在其计算节点上"
#: instances/jobs.py:338
msgid "libvirt is still merging the snapshot"
msgstr "libvirt 仍在合并快照"
#: instances/jobs.py:354
#: instances/jobs.py:346
msgid ""
"The snapshot is still listed and no merge runs. It cannot be told whether "
"the disks changed; check the VM before deleting the snapshot again or "
"reverting to it."
msgstr ""
"快照仍在列表中,且没有正在运行的合并。无法判断磁盘是否已更改;再次删除该快照"
"或恢复到它之前,请检查虚拟机。"
#: instances/jobs.py:353
msgid "The VM is no longer on the compute the job ran on"
msgstr "虚拟机已不在运行该任务的计算节点上"
#: instances/jobs.py:359
msgid "Take snapshot"
msgstr "创建快照"
#: instances/jobs.py:378
#: instances/jobs.py:371
#, python-format
msgid "A snapshot named %(name)s already exists"
msgstr "名为 %(name)s 的快照已存在"
#: instances/jobs.py:383
msgid "Taking the snapshot"
msgstr "正在创建快照"
#: instances/jobs.py:391
#: instances/jobs.py:396
msgid "libvirt is still taking the snapshot"
msgstr "libvirt 仍在创建快照"
#: instances/jobs.py:417
#: instances/jobs.py:399
msgid "The snapshot was not taken"
msgstr "未创建快照"
#: instances/jobs.py:422
msgid "Revert snapshot"
msgstr "恢复快照"
#: instances/jobs.py:446
#: instances/jobs.py:451
msgid "Reverting the VM"
msgstr "正在恢复虚拟机"
#: instances/jobs.py:457
#: instances/jobs.py:462
msgid "libvirt is still reverting the VM"
msgstr "libvirt 仍在恢复虚拟机"
#: instances/jobs.py:498
#: instances/jobs.py:466
msgid ""
"It cannot be told whether the VM was reverted; check it, then revert again "
"or resolve this job."
msgstr "无法判断虚拟机是否已恢复;请检查后再次恢复,或处理此任务。"
#: instances/jobs.py:483
msgid "The VM must be running, paused or shut off to be cloned"
msgstr "虚拟机必须处于运行、暂停或关机状态才能克隆"
#: instances/jobs.py:484
#, python-format
msgid ""
"The guest's file systems could not be thawed (%(error)s); thaw them with: "
"virsh domfsthaw %(vm)s"
msgstr ""
"无法解冻客户机的文件系统(%(error)s);请用以下命令解冻:virsh domfsthaw "
"%(vm)s"
#: instances/jobs.py:503
msgid "Clone VM"
msgstr "克隆虚拟机"
#: instances/jobs.py:537 instances/jobs.py:544 instances/jobs.py:787
#: instances/jobs.py:542 instances/jobs.py:549 instances/jobs.py:805
msgid "Copying disks"
msgstr "正在复制磁盘"
#: instances/jobs.py:671
#: instances/jobs.py:600
msgid "libvirt has no result of the copy"
msgstr "libvirt 没有复制的结果"
#: instances/jobs.py:611
#, python-format
msgid ""
"The copy failed: %(error)s. The guest's file systems could not be thawed "
"(%(thaw)s); thaw them with: virsh domfsthaw %(vm)s"
msgstr ""
"复制失败:%(error)s。无法解冻客户机的文件系统(%(thaw)s);请用以下命令解冻:"
"virsh domfsthaw %(vm)s"
#: instances/jobs.py:614 instances/jobs.py:698
msgid "The copy failed"
msgstr "复制失败"
#: instances/jobs.py:639
#, python-format
msgid ""
"The VM is no longer on the compute the job ran on; check these volumes, then "
"resolve this job: %(volumes)s"
msgstr ""
"虚拟机已不在运行该任务的计算节点上;请检查这些卷,然后处理此任务:%(volumes)s"
#: instances/jobs.py:674
#, python-format
msgid ""
"A volume of the clone was being created; check these volumes, then resolve "
"this job: %(volumes)s"
msgstr "克隆的一个卷正在创建中;请检查这些卷,然后处理此任务:%(volumes)s"
#: instances/jobs.py:678
msgid "The job stopped before the copy started"
msgstr "任务在复制开始前停止"
#: instances/jobs.py:685
msgid "libvirt is still copying the disks"
msgstr "libvirt 仍在复制磁盘"
#: instances/jobs.py:703 instances/templates/create_instance_w1.html:60
#: instances/jobs.py:688
#, python-format
msgid ""
"Another backup runs on the VM; check these volumes, then resolve this job: "
"%(volumes)s"
msgstr "虚拟机上正在运行另一个备份;请检查这些卷,然后处理此任务:%(volumes)s"
#: instances/jobs.py:693
#, python-format
msgid ""
"libvirt has no result of the copy; check these volumes, then resolve this "
"job: %(volumes)s"
msgstr "libvirt 没有复制的结果;请检查这些卷,然后处理此任务:%(volumes)s"
#: instances/jobs.py:721 instances/templates/create_instance_w1.html:60
#: instances/templates/create_instance_w2.html:356
msgid "Create VM"
msgstr "创建虚拟机"
#: instances/jobs.py:726 instances/views.py:2477
#: instances/jobs.py:744 instances/views.py:2477
msgid "A virtual machine with this name already exists"
msgstr "同名虚拟机已存在"
#: instances/jobs.py:728
#: instances/jobs.py:746
msgid "There is an instance with same name. Remove it and try again!"
msgstr "已存在同名虚拟机。请删除后重试!"
#: instances/jobs.py:731
#: instances/jobs.py:749
msgid "First you need to create or select an image"
msgstr "请先创建或选择一个镜像"
#: instances/jobs.py:733
#: instances/jobs.py:751
msgid "Choose one disk source: a new disk, existing volumes or a template"
msgstr "请选择一种磁盘来源:新磁盘、现有卷或模板"
#: instances/jobs.py:735
#: instances/jobs.py:753
msgid "Image has already exist. Please check volumes or change instance name"
msgstr "镜像已存在。请检查卷或更改虚拟机名称"
#: instances/jobs.py:737
#: instances/jobs.py:755
msgid "Invalid cache mode"
msgstr "无效的缓存模式"
#: instances/jobs.py:739
#: instances/jobs.py:757
#, python-format
msgid "This host offers no CPU mode or model %(mode)s"
msgstr "此主机不提供 CPU 模式或型号 %(mode)s"
#: instances/jobs.py:741
#: instances/jobs.py:759
#, python-format
msgid "A CD-ROM cannot use the %(bus)s bus"
msgstr "CD-ROM 不能使用 %(bus)s 总线"
#: instances/jobs.py:744
#: instances/jobs.py:762
msgid "The cloud-init seed is read from a CD-ROM: choose its bus"
msgstr "cloud-init 种子从 CD-ROM 读取:请选择其总线"
#: instances/jobs.py:747
#: instances/jobs.py:765
msgid "The cloud-init seed needs a directory storage pool for the disk"
msgstr "cloud-init 种子需要为磁盘使用目录类型的存储池"
#: instances/jobs.py:753
#: instances/jobs.py:771
#, python-format
msgid "This host offers no firmware %(firmware)s"
msgstr "此主机不提供固件 %(firmware)s"
#: instances/jobs.py:755
#: instances/jobs.py:773
msgid "This host offers no TPM 2.0: install swtpm on it"
msgstr "此主机不提供 TPM 2.0:请在主机上安装 swtpm"
#: instances/jobs.py:806
#: instances/jobs.py:824
msgid "Writing the cloud-init seed"
msgstr "正在写入 cloud-init 种子"
#: instances/jobs.py:813
#: instances/jobs.py:831
msgid "Defining the VM"
msgstr "正在定义虚拟机"
#: instances/jobs.py:870
#: instances/jobs.py:864
#, python-format
msgid "%(error)s. Remove these volumes by hand: %(volumes)s"
msgstr "%(error)s。请手动删除这些卷:%(volumes)s"
#: instances/jobs.py:889
#, python-format
msgid "The instance is already on %(compute)s"
msgstr "虚拟机已在 %(compute)s 上"
#: instances/jobs.py:872
#: instances/jobs.py:891
#, python-format
msgid "%(compute)s is not reachable"
msgstr "无法连接 %(compute)s"
#: instances/jobs.py:874
#: instances/jobs.py:893
#, python-format
msgid "%(compute)s is the VM's own host under another name"
msgstr "%(compute)s 是该虚拟机所在主机的另一个名称"
#: instances/jobs.py:892
#: instances/jobs.py:911
msgid "Migrate VM"
msgstr "迁移虚拟机"
#: instances/jobs.py:936
#: instances/jobs.py:955
msgid "Migrating the VM"
msgstr "正在迁移虚拟机"
#: instances/jobs.py:970
#: instances/jobs.py:989
msgid "libvirt is still migrating the VM"
msgstr "libvirt 仍在迁移虚拟机"
#: instances/jobs.py:1011
#: instances/jobs.py:996
msgid "The VM stayed on the source host"
msgstr "虚拟机留在了源主机上"
#: instances/jobs.py:998
msgid ""
"The VM is on both computes or on neither; check them, then resolve this job."
msgstr "虚拟机同时位于两个计算节点上,或都不在;请检查后处理此任务。"
#: instances/jobs.py:1030
msgid "Move disk"
msgstr "移动磁盘"
#: instances/jobs.py:1042
#: instances/jobs.py:1037
msgid "Choose a disk of the VM"
msgstr "请选择虚拟机的一个磁盘"
#: instances/jobs.py:1061
msgid "Copying the disk"
msgstr "正在复制磁盘"
#: instances/jobs.py:1104
#, python-format
msgid "Another block job runs on %(dev)s; check the VM"
msgstr "%(dev)s 上正在运行另一个块任务;请检查虚拟机"
#: instances/jobs.py:1110
#, python-format
msgid "The disk stayed in %(path)s; remove %(dest)s if it is there"
msgstr "磁盘仍在 %(path)s;如果 %(dest)s 存在,请将其删除"
#: instances/jobs.py:1112
#, python-format
msgid "The definitions of %(dev)s name %(paths)s; check the VM"
msgstr "%(dev)s 的定义指向 %(paths)s;请检查虚拟机"
#: instances/models.py:18
msgid "label"
msgstr "标签"
@ -7123,11 +7269,35 @@ msgid ""
"rules and references."
msgstr "字母、数字、点、短横线和下划线。副本包含该过滤器的规则和引用。"
#: operations/api/serializers.py:35
#: operations/api/serializers.py:37
#, python-format
msgid "%(phase)s (over its time limit)"
msgstr "%(phase)s(已超出时间限制)"
#: operations/jobs.py:157
msgid "The form has no valid submission key; reload the page"
msgstr "表单没有有效的提交密钥;请重新加载页面"
#: operations/jobs.py:203
msgid "This job cannot be cancelled once it has started"
msgstr "此任务开始后无法取消"
#: operations/jobs.py:206
msgid "The job has already ended"
msgstr "任务已经结束"
#: operations/jobs.py:254
msgid "Choose succeeded or failed"
msgstr "请选择成功或失败"
#: operations/jobs.py:257
msgid "Write a note on what was checked"
msgstr "请写下检查了哪些内容"
#: operations/jobs.py:261
msgid "Only an uncertain job can be resolved"
msgstr "只能处理状态不确定的任务"
#: operations/templates/operations/job.html:11
#: operations/templates/operations/jobs.html:7
#: operations/templates/operations/jobs.html:9
@ -7311,12 +7481,12 @@ msgstr "取消失败:无法连接到服务器。"
msgid "The host of this virtual machine cannot be reached right now."
msgstr "当前无法连接此虚拟机所在的主机。"
#: operations/utils.py:120
#: operations/utils.py:146
msgid ""
"A short operation is in progress on this resource; try again in a moment."
msgstr "此资源上正在进行一项短时操作,请稍后重试。"
#: operations/utils.py:123
#: operations/utils.py:149
#, python-format
msgid ""
"%(label)s is %(state)s on this resource (started by %(user)s, %(since)s "
@ -7325,15 +7495,34 @@ msgstr ""
"此资源上的%(label)s%(state)s(由 %(user)s 于 %(since)s前发起),请查看任务页"
"面。"
#: operations/utils.py:125
#: operations/utils.py:151
#, python-format
msgid "%(label)s is %(state)s on this resource (since %(since)s)."
msgstr "此资源上的%(label)s%(state)s(自 %(since)s起)。"
#: operations/worker.py:38
msgid ""
"libvirt's merge finished copying but never completed (for example after a "
"libvirtd restart); check the VM before resolving"
msgstr ""
"libvirt 的合并已完成复制但从未结束(例如 libvirtd 重启后);处理前请检查虚拟"
"机"
#: operations/worker.py:40
msgid ""
"The worker that ran this job stopped responding; an administrator must make "
"sure it is no longer running, then resolve this job"
msgstr ""
"运行此任务的工作进程已停止响应;管理员必须确认它已不再运行,然后处理此任务"
#: operations/worker.py:42
msgid "Waiting for recovery"
msgstr "等待恢复"
#: operations/worker.py:393
msgid "The worker stopped before the job changed anything"
msgstr "工作进程在任务做出任何更改之前停止"
#: storages/forms.py:30 storages/templates/storage.html:102
#: storages/templates/storages.html:43
msgid "Path"
@ -7400,10 +7589,33 @@ msgstr "镜像名称不能超过 120 个字符"
msgid "Clone volume"
msgstr "克隆卷"
#: storages/jobs.py:58
#, python-format
msgid "The pool has no volume named %(name)s"
msgstr "存储池中没有名为 %(name)s 的卷"
#: storages/jobs.py:60
msgid "An ISO image is not cloned"
msgstr "ISO 镜像不会被克隆"
#: storages/jobs.py:63
msgid "Name of volume already in use"
msgstr "卷名已被使用"
#: storages/jobs.py:72
msgid "Copying the volume"
msgstr "正在复制卷"
#: storages/jobs.py:84
msgid ""
"The copy exists, but the job did not see it finish; check it, then resolve "
"this job."
msgstr "副本已存在,但任务未看到其完成;请检查后处理此任务。"
#: storages/jobs.py:85
msgid "The copy was not made"
msgstr "未创建副本"
#: storages/jobs.py:96
msgid "Upload ISO image"
msgstr "上传 ISO 镜像"
@ -7772,76 +7984,90 @@ msgstr "无大小"
msgid "Space unavailable while stopped"
msgstr "停止时空间不可用"
#: storages/upload.py:132 storages/upload.py:153 storages/upload.py:181
#: storages/upload.py:27
msgid "The upload was idle for over an hour; its partial file was deleted"
msgstr "上传空闲超过一小时;其部分文件已删除"
#: storages/upload.py:134 storages/upload.py:155 storages/upload.py:183
msgid "Destination file already exists"
msgstr "目标文件已存在"
#: storages/upload.py:155
#: storages/upload.py:157
msgid "Filesystem does not support atomic no-replace finalization: {}"
msgstr "文件系统不支持原子性的不替换式完成:{}"
#: storages/upload.py:212
#: storages/upload.py:214
msgid "Unsupported connection type for file upload."
msgstr "不支持用于文件上传的连接类型。"
#: storages/upload.py:224
#: storages/upload.py:226
msgid "Security issues with file uploading: path traversal detected"
msgstr "文件上传存在安全问题:检测到路径遍历"
#: storages/upload.py:280
#: storages/upload.py:282
msgid "The SFTP session did not start in time"
msgstr "SFTP 会话未能及时启动"
#: storages/upload.py:303
#: storages/upload.py:305
msgid "Security issues with file uploading: symlink detected"
msgstr "文件上传存在安全问题:检测到符号链接"
#: storages/upload.py:395
#: storages/upload.py:397
msgid "Libvirt stream stopped during upload"
msgstr "上传期间 libvirt 流已停止"
#: storages/upload.py:399
#: storages/upload.py:401
msgid "Upload chunk size changed during transfer"
msgstr "传输期间上传分块大小发生了变化"
#: storages/upload.py:431 storages/upload.py:526
#: storages/upload.py:433 storages/upload.py:528
msgid "The upload has ended"
msgstr "上传已结束"
#: storages/upload.py:444
#: storages/upload.py:445 storages/upload.py:446
msgid "The uploaded image is missing"
msgstr "上传的镜像不存在"
#: storages/upload.py:515
#: storages/upload.py:450
msgid ""
"An image of this name appeared before the upload finished; the upload was "
"deleted"
msgstr "上传完成前出现了同名镜像;上传已删除"
#: storages/upload.py:484
msgid "The compute was deleted"
msgstr "计算节点已删除"
#: storages/upload.py:517
msgid "Upload session not found or expired"
msgstr "上传会话不存在或已过期"
#: storages/upload.py:517
#: storages/upload.py:519
msgid "Upload session parameters changed"
msgstr "上传会话参数已变更"
#: storages/upload.py:531 storages/upload.py:563
#: storages/upload.py:533 storages/upload.py:565
msgid "The upload was cancelled"
msgstr "上传已取消"
#: storages/upload.py:533
#: storages/upload.py:535
#, python-format
msgid "Invalid chunk sequence. Expected chunk %(exp)d, got %(got)d"
msgstr "分块顺序无效。应为第 %(exp)d 块,收到第 %(got)d 块"
#: storages/upload.py:543
#: storages/upload.py:545
msgid "Empty upload chunk"
msgstr "上传分块为空"
#: storages/upload.py:545
#: storages/upload.py:547
msgid "Upload exceeds declared file size"
msgstr "上传内容超过声明的文件大小"
#: storages/upload.py:547
#: storages/upload.py:549
msgid "Final chunk does not match declared file size"
msgstr "最后一个分块与声明的文件大小不符"
#: storages/upload.py:553
#: storages/upload.py:554 storages/upload.py:555
msgid "The partial upload is missing"
msgstr "部分上传的文件不存在"