diff --git a/lang/system/da.xml b/lang/system/da.xml
index e7bcc54a0b..5bd2155dab 100644
--- a/lang/system/da.xml
+++ b/lang/system/da.xml
@@ -51,6 +51,7 @@
Der er opstået en fejl.
Fejlkode: {}Afbryd
+ LukkeSletFilen er defekt.Aktivér mikrofonen.
@@ -331,7 +332,6 @@ Dit Vita3K-system er klart!
- LukkeGem
@@ -394,8 +394,4 @@ Efter download er udført, vil Vita3K automatisk genstarte og derefter installer
OpdaterVersion {}
-
-
- Lukke
-
diff --git a/lang/system/de.xml b/lang/system/de.xml
index b96072395a..575111f7bc 100644
--- a/lang/system/de.xml
+++ b/lang/system/de.xml
@@ -57,6 +57,7 @@
Ein Fehle ist aufgetreten.
Fehlercode: {}Abbrechen
+ SchließenLöschenDie Datei ist beschädigt.Aktiviere das Mikrofon.
@@ -335,11 +336,8 @@ Dein Vita3K-System ist bereit!
-
-
- SchließenSpeichern
@@ -407,8 +405,4 @@ Nach dem Herunterladen wird Vita3K automatisch neu gestartet und die neue Aktual
AktualisierenVersion {}
-
-
- Schließen
-
diff --git a/lang/system/en-gb.xml b/lang/system/en-gb.xml
index e6f33a0069..0cd7466e0c 100644
--- a/lang/system/en-gb.xml
+++ b/lang/system/en-gb.xml
@@ -67,8 +67,6 @@
LicenseShaders CacheShaders Log
- Export Textures
- Import TexturesManualUpdateUpdate History
@@ -110,6 +108,7 @@ depending on its size and your hardware.
An error occurred.
Error code: {}Cancel
+ CloseDeleteThe file is corrupt.Enable the microphone.
@@ -813,7 +812,6 @@ lower can improve performance but can make games unstable if you have bad enough
Unwatch Import CallsWatch Import Calls
- CloseSave & RebootSave & ApplySave
@@ -905,6 +903,5 @@ After the download is complete, Vita3K will restart automatically and then insta
Additional support can be found in the #help channel of theVita3K does not condone piracy. You must dump your own games.Show next time
- Close
diff --git a/lang/system/en.xml b/lang/system/en.xml
index e6f33a0069..0cd7466e0c 100644
--- a/lang/system/en.xml
+++ b/lang/system/en.xml
@@ -67,8 +67,6 @@
LicenseShaders CacheShaders Log
- Export Textures
- Import TexturesManualUpdateUpdate History
@@ -110,6 +108,7 @@ depending on its size and your hardware.
An error occurred.
Error code: {}Cancel
+ CloseDeleteThe file is corrupt.Enable the microphone.
@@ -813,7 +812,6 @@ lower can improve performance but can make games unstable if you have bad enough
Unwatch Import CallsWatch Import Calls
- CloseSave & RebootSave & ApplySave
@@ -905,6 +903,5 @@ After the download is complete, Vita3K will restart automatically and then insta
Additional support can be found in the #help channel of theVita3K does not condone piracy. You must dump your own games.Show next time
- Close
diff --git a/lang/system/es.xml b/lang/system/es.xml
index 3bede7df55..de1b66ddff 100644
--- a/lang/system/es.xml
+++ b/lang/system/es.xml
@@ -64,6 +64,7 @@
Ha ocurrido un error.
Código del error: {}Cancelar
+ CerrarEliminarEl archivo está dañado.Activa el micrófono.
@@ -346,7 +347,6 @@ No apagues el sistema ni cierres la aplicación.
- CerrarGuardar
@@ -427,6 +427,5 @@ Cuando la descarga se haya completado, Vita3K se reiniciará automáticamente e
Más ayuda disponible en el canal #help del servidor deVita3K no tolera la piratería. Debes usar tus propios juegos.Mostrar la próxima vez
- Cerrar
diff --git a/lang/system/fi.xml b/lang/system/fi.xml
index 8358d52855..546478d911 100644
--- a/lang/system/fi.xml
+++ b/lang/system/fi.xml
@@ -51,6 +51,7 @@
Virhe on tapahtunut.
Virhekoodi: {}Peruuta
+ SulkeaPoistaTiedosto on vioittunt.Ota mikrofoni käyttöön.
@@ -332,7 +333,6 @@ Vita3K-järjestelmäsi on nyt käyttövalmis!
- SulkeaTallenna
@@ -396,8 +396,4 @@ Kun lataus on valmis, Vita3K käynnistyy automaattisesti uudelleen ja asentaa si
PäivitäVersio {}
-
-
- Sulkea
-
diff --git a/lang/system/fr.xml b/lang/system/fr.xml
index 504faa1e9d..8bc768d0a7 100644
--- a/lang/system/fr.xml
+++ b/lang/system/fr.xml
@@ -85,6 +85,7 @@
Une erreur est survenue.
Code d'erreur: {}Annuler
+ FermerSupprimerLe fichier est corrompu.Activez le microphone.
@@ -436,7 +437,6 @@ Votre système Vita3K est prêt !
- FermerSauvegarder
@@ -507,8 +507,4 @@ Une fois le téléchargement terminé, Vita3K redémarrera automatiquement et in
Mettre à jourVersion {}
-
-
- Fermer
-
diff --git a/lang/system/it.xml b/lang/system/it.xml
index 8a1ce5de57..de0197cc0f 100644
--- a/lang/system/it.xml
+++ b/lang/system/it.xml
@@ -57,6 +57,7 @@
Si è verificato un errore.
Codice di errore: {}Annulla
+ ChiudersiEliminaIl file è danneggiato.Attiva il microfono.
@@ -350,7 +351,6 @@ Il tuo sistema Vita3K è pronto per l'uso!
- ChiudersiSalva
@@ -416,8 +416,4 @@ Al termine del download, Vita3K si riavvierà automaticamente e quindi installer
AggiornaVersione {}
-
-
- Chiudersi
-
diff --git a/lang/system/ja.xml b/lang/system/ja.xml
index 14e9f4778f..154b8ba4b3 100644
--- a/lang/system/ja.xml
+++ b/lang/system/ja.xml
@@ -55,8 +55,6 @@
ライセンスシェーダーキャッシュシェーダーログ
- 出力テクスチャ
- 入力テクスチャマニュアルアップデートアップデート履歴
@@ -98,6 +96,7 @@
エラーが起きました。
エラーコード:{}キャンセル
+ 閉じる削除ファイルが壊れています。マイクを有効にしてください。
@@ -707,7 +706,6 @@ GUIでのアジア地域のフォントサポートに必須です。
データを読み取る際のスリープ試行時間。
低い値はパフォーマンスを向上させる一方で、インターネットが非常に悪い場合はゲームを不安定にする可能性があります。
- 閉じる保存して再起動保存して適用セーブ
@@ -797,6 +795,5 @@ GUIでのアジア地域のフォントサポートに必須です。
その他の相談は、#help チャンネルで行うことができます。Vita3Kは著作権侵害を認めません。所有ゲームの吸出しを行ってください。次回以降も表示
- 閉じる
diff --git a/lang/system/ko.xml b/lang/system/ko.xml
index 409a4e7d16..1a5990078d 100644
--- a/lang/system/ko.xml
+++ b/lang/system/ko.xml
@@ -79,6 +79,7 @@
에러기 발생했습니다.
에러 코드: {}취소
+ 닫다삭제파일이 손상되어 있습니다.마이크를 활성화해 주십시오.
@@ -364,7 +365,6 @@
- 닫다저장
@@ -429,8 +429,4 @@
업데이트버전 {}
-
-
- 닫다
-
diff --git a/lang/system/nl.xml b/lang/system/nl.xml
index af99600e8f..af695a35f4 100644
--- a/lang/system/nl.xml
+++ b/lang/system/nl.xml
@@ -57,6 +57,7 @@
Er is een fout opgetreden.
Foutcode: {}Annuleren
+ SluitenVerwijderenHet bestand is beschadigd.Schakel de microfoon in.
@@ -351,7 +352,6 @@ Je Vita3K-systeem is gereed!
- SluitenOpslaan
@@ -415,8 +415,4 @@ Nadat het downloaden is voltooid, Vita3K automatisch opnieuw gestart en wordt de
UpdateVersie {}
-
-
- Sluiten
-
diff --git a/lang/system/no.xml b/lang/system/no.xml
index de6ac2c237..267395ed6d 100644
--- a/lang/system/no.xml
+++ b/lang/system/no.xml
@@ -51,6 +51,7 @@
Det har oppstått en feil.
Feilkode: {}Avbryt
+ LukkeSlettFilen er korrupt.Aktiver mikrofonen.
@@ -331,7 +332,6 @@ Vita3K-systemet ditt er klart!
- LukkeLagre
@@ -394,8 +394,4 @@ Etter at Etter at nedlastingen er fullført, vil Vita3K starte på nytt automati
OppdaterVersjon {}
-
-
- Lukke
-
diff --git a/lang/system/pl.xml b/lang/system/pl.xml
index 8b6e5d9298..b3be46d4a8 100644
--- a/lang/system/pl.xml
+++ b/lang/system/pl.xml
@@ -67,8 +67,6 @@
LicencjaPamięć podręczna cieniDziennik zdarzeń cieni
- Eksportuj tekstury
- Importuj teksturyInstrukcja obsługiAktualizujHistoria aktualizacji
@@ -110,6 +108,7 @@ jest to zależne od jej rozmiaru i twojego sprzętu.
Wystąpił błąd.
Kod błędu: {}Anuluj
+ ZamknijUsuńPlik jest uszkodzony.Włącz mikrofon.
@@ -812,7 +811,6 @@ niższa wartość może poprawić wydajność, ale może sprawić, że gry będ
Przestań obserwować wywołania importuObserwuj wywołania importu
- ZamknijZapisz i uruchom ponownieZapisz i zatwierdźZapisz
@@ -904,6 +902,5 @@ Po ukończeniu pobierania Vita3K zostanie automatycznie ponownie uruchomiony, a
Dodatkowe wsparcie i pomoc dostępne są również na Discordzie na kanale #help.Vita3K nie wspiera piractwa. Musisz zgrać swoją kopię gry.Pokaż następnym razem
- Zamknij
diff --git a/lang/system/pt-br.xml b/lang/system/pt-br.xml
index d148b412f3..7540c4f6f6 100644
--- a/lang/system/pt-br.xml
+++ b/lang/system/pt-br.xml
@@ -80,6 +80,7 @@ dependendo de seu tamanho e hardware.
Ocorreu um erro.
Código de erro: {}Cancelar
+ FecharExcluirO arquivo está corrompido.Ative o microfone.
@@ -408,7 +409,6 @@ fundo
- FecharSalvar
@@ -476,8 +476,4 @@ Quando o download terminar, Vita3K será reiniciado automaticamente e o novo atu
AtualizarVersão {}
-
-
- Fechar
-
diff --git a/lang/system/pt.xml b/lang/system/pt.xml
index ba384a55f8..d4f96a1674 100644
--- a/lang/system/pt.xml
+++ b/lang/system/pt.xml
@@ -54,6 +54,7 @@
Ocorreu um erro.
Código de erro: {}Cancelar
+ FecharEliminarO ficheiro está corrompido.Ative o microfone.
@@ -334,7 +335,6 @@ O seu sistema Vita3K está pronto!
- FecharGuardar
@@ -398,8 +398,4 @@ Uma vez concluída a transferência, Vita3K será reiniciado automaticamente e,
AtualizarVersão {}
-
-
- Fechar
-
diff --git a/lang/system/ru.xml b/lang/system/ru.xml
index 49f432c56c..319926b615 100644
--- a/lang/system/ru.xml
+++ b/lang/system/ru.xml
@@ -87,6 +87,7 @@
Произошла ошибка.
Код ошибки: {}Отмена
+ ЗакрытьУдалитьФайл поврежден.Включите микрофон.
@@ -539,7 +540,6 @@
- ЗакрытьСохранить
@@ -629,6 +629,5 @@
Дополнительную информацию можно найти на канале #help вVita3K не поощряет пиратство. Вы должны использовать дампы своих собственных игр.Показать в следующий раз
- Закрыть
diff --git a/lang/system/sv.xml b/lang/system/sv.xml
index 66e2a52b7e..c5b19570d3 100644
--- a/lang/system/sv.xml
+++ b/lang/system/sv.xml
@@ -51,6 +51,7 @@
Ett fel har inträffat.
Felkod: {}Avbryt
+ StängaRaderaFilen är skadad.Aktivera mikrofonen.
@@ -328,11 +329,8 @@ Ditt Vita3K-system är redo!
-
-
- StängaSpara
@@ -394,8 +392,4 @@ När nedladdningen är slutförd kommer Vita3K automatiskt att startas om och de
UppdateraVersion {}
-
-
- Stänga
-
diff --git a/lang/system/tr.xml b/lang/system/tr.xml
index fb0d25283b..093e5fd05e 100644
--- a/lang/system/tr.xml
+++ b/lang/system/tr.xml
@@ -57,6 +57,7 @@
Bir hata oluştu.
Hata Kodu: {}İptal
+ KapatSilDosya bozuk.Hayır
@@ -338,7 +339,6 @@ Vita3K sisteminiz artık hazır!
- KapatKaydet
@@ -403,8 +403,4 @@ Devam etmek istediğinizden emin misiniz?
GüncelleSürüm {}
-
-
- Kapat
-
diff --git a/lang/system/zh-s.xml b/lang/system/zh-s.xml
index 53ccfdca6d..44b24dc599 100644
--- a/lang/system/zh-s.xml
+++ b/lang/system/zh-s.xml
@@ -67,8 +67,6 @@
授权着色器缓存着色器日志
- 导出纹理
- 导入纹理说明书升级更新历史记录
@@ -110,6 +108,7 @@
发生了错误。
错误代码:{}取消
+ 关闭删除文件已损坏。请启用麦克风。
@@ -648,7 +647,7 @@
并非所有显卡都与此兼容。
清除着色器缓存以及日志FPS修改
- 游戏修改允许一些以30FPS运行的游戏在模拟器上以60FPS的速度运行。
+ 游戏修改允许一些以30 FPS运行的游戏在模拟器上以60 FPS的速度运行。
请注意这只是一个修改,仅适用于某些游戏。
在其他游戏中,它可能没有效果或使其出现两倍速。
@@ -810,7 +809,6 @@
取消监视导入调用监视导入调用
- 关闭保存并重启保存并应用保存
@@ -901,6 +899,5 @@
可以在#help频道中找到更多支持Vita3K不纵容盗版。您必须提取您自己拥有的游戏。下次显示
- 关闭
diff --git a/lang/system/zh-t.xml b/lang/system/zh-t.xml
index 94f22ac481..837fb8e071 100644
--- a/lang/system/zh-t.xml
+++ b/lang/system/zh-t.xml
@@ -22,7 +22,7 @@
條件變量輕量條件變量事件標志
- 内存分配
+ 內存分配反匯編
@@ -67,8 +67,6 @@
授權著色器快取著色器記錄
- 導出紋理
- 導入紋理說明書更新更新履歷
@@ -110,6 +108,7 @@
發生錯誤。
錯誤編號:{}取消
+ 關閉刪除檔案已毀損。請啟用麥克風。
@@ -648,7 +647,7 @@
並非所有顯卡都與此兼容。
清除著色器快取以及記錄FPS修改
- 遊戲修改允許一些以30fps運行的遊戲在模擬器上以60fps的速度運行。
+ 遊戲修改允許一些以30 FPS運行的遊戲在模擬器上以60 FPS的速度運行。
請注意這只是一個修改,僅適用於某些遊戲。
在其他遊戲中,它可能沒有效果或使其出現兩倍速。
@@ -810,7 +809,6 @@
取消監視導入調用監視導入調用
- 關閉保存並重啟保存並應用保存
@@ -901,6 +899,5 @@
可以在#help頻道中取得額外支援Vita3K不縱容盜版,您必須傾印您自己擁有的遊戲。下次顯示
- 關閉
diff --git a/lang/user/id.xml b/lang/user/id.xml
index d882d8a69c..82f5369690 100644
--- a/lang/user/id.xml
+++ b/lang/user/id.xml
@@ -103,6 +103,7 @@ tergantung pada ukuran dan perangkat keras Kamu.
Terjadi kesalahan.
Kode kesalahan: {}Batal
+ TutupHapusFile ini udah corrupt.Nonaktifkan microphone.
@@ -388,32 +389,6 @@ Jangan matikan sistem atau tutup aplikasi ini.
Kamu telah mendapatkan trofi!
-
- Kembali
- Kamu sekarang telah menyelesaikan penyiapan awal.
-Sistem Vita3K Kamu sudah siap!
- Pilih bahasa.
- Pilih pref path.
- Path emulator saat ini
- Ubah Path Emulator
- Path Reset Emulator
- Menginstalasi kedua file firmware sangat direkomendasikan.
- Instalasi:
- Pilih pengaturan interface.
- Bar Info Terlihat
- Centang kotak untuk menampilkan Bar info di dalam pemilih aplikasi.
-Bar info adalah jam, level baterai, dan pusat notifikasi.
- Apl Dilayar Live Area
- Centang kotak untuk membuka Live Area secara default saat mengklik aplikasi.
-Jika dinonaktifkan, klik kanan pada aplikasi untuk membukanya.
- Mode Grid
- Centang kotak untuk mengatur daftar aplikasi ke mode grid seperti PS Vita.
- Ukuran Icon Aplikasi
- Pilih ukuran icon pilihan kamu.
- Telah selesai.
- Lanjut
-
-
Menginstalasi dalam progress, mohon tunggu...
@@ -741,7 +716,6 @@ lebih rendah dapat meningkatkan performa tetapi dapat membuat game tidak stabil
Hapus Impor PanggilanTonton Impor Panggilan
- TutupSimpan & BuatUlangSimpan & TerapkanSimpan
@@ -818,6 +792,5 @@ berjalan.
Dukungan tambahan dapat ditemukan di saluran #help channel dariVita3K tidak memaafkan pembajakan. Kamu harus dump game kamu sendiri.Tunjukkan lain kali
- Tutup
diff --git a/lang/user/ms.xml b/lang/user/ms.xml
index 980b12f3f1..e3616cebb9 100644
--- a/lang/user/ms.xml
+++ b/lang/user/ms.xml
@@ -105,6 +105,7 @@ bergantung pada saiznya dan perkakasan awak.
Ralat berlaku.
Kod ralat: {}Batal
+ TutupPadamFail itu rosak.Dayakan mikrofon.
@@ -401,31 +402,6 @@ Jangan matikan sistem atau tutup apl.
Awak telah memperoleh trofi!
-
- Kembali
- Awak kini telah menyelesaikan persediaan awal.
-Sistem Vita3K awak sudah sedia!
- Pilih bahasa.
- Pilih laluan pref.
- Laluan emulator semasa
- Tukar Laluan Emulator
- Tetapkan Semula Laluan Emulator
- Menginstal kedua-dua fail perisian tegar adalah sangat disyorkan.
- Instalasi:
- Pilih tetapan antara muka.
- Bar Maklumat Kelihatan
- Tandai kotak untuk menunjukkan bar maklumat dalam pemilih apl.
-Bar maklumat ialah jam, paras bateri dan pusat notifikasi.
- Skrin Apl Kawasan Live
- Tandai kotak untuk membuka Kawasan Live secara lalai apabila mengklik pada aplikasi.
-Jika dilumpuhkan, klik kanan pada apl untuk membukanya.
- Tandai kotak untuk menetapkan senarai apl kepada mode grid seperti PS Vita.
- Saiz Ikon Apl
- Pilih saiz ikon pilihan awak.
- Selesai.
- Seterusnya
-
-
Instalasi Firmware
@@ -749,7 +725,6 @@ lebih rendah boleh meningkatkan prestasi tetapi boleh membuat permainan tidak st
Nyahlihat Panggilan ImportTonton Panggilan Import
- TutupSimpan & RebootSimpan & ApplySimpan
@@ -830,6 +805,5 @@ Selepas muat turun selesai, Vita3K akan dimulakan semula secara automatik dan ke
Sokongan tambahan boleh didapati dalam saluran #helpVita3K tidak membenarkan cetak rompak. Awak mesti membuang permainan awak sendiri.Tunjukkan lainKali
- Tutup
diff --git a/lang/user/ua.xml b/lang/user/ua.xml
new file mode 100644
index 0000000000..108a74d262
--- /dev/null
+++ b/lang/user/ua.xml
@@ -0,0 +1,864 @@
+
+
+
+
+
+ Відкрити бажаний шлях
+ Відкрити шлях текстур
+ Завантажити прошивку
+ Завантажити .pkg
+ Завантажити .zip, .vpk
+ Завантажити ліцензію
+ Вихід
+
+
+ Останні використані програми
+
+
+ Потоки
+ Семафори
+ М'ютекси
+ Легковагові м'ютекси
+ Умовні змінні
+ Легковагові умовні змінні
+ Маркери події
+ Розподіл пам'яті
+ Дизасемблювання
+
+
+ Керування користувачами
+
+
+ Керування клавіатурою
+
+
+ Вітання
+
+
+
+
+ Vita3K: Емулятор PS Vita/PS TV. Перший у світі функціонуючий емулятор PS Vita/PS TV.
+ Vita3K - це експериментальний емулятор PlayStation Vita/PlayStation TV з відкритим кодом, написаний на C++ для операційних систем Windows, Linux, macOS та Android.
+ Особлива подяка: Піктограма Vita3K була розроблена:
+ Якщо ви бажаєте зробити свій внесок, перегляньте наш:
+ Відвідайте нашу веб-сторінку, аби дізнатися більше:
+ Якщо ви хочете підтримати нас, то можете задонатити або підписатися на наш:
+ Команда Vita3K
+ Розробники
+ Вкладники
+ Спонсори
+
+
+
+ Перевірити стан програми
+ Скопіювати звіт Vita3K
+ Відкрити звіт про стан
+ Створити звіт про стан
+ Оновити базу даних
+ Скопіювати інформацію про програму
+ Ім'я та ідентифікатор
+ Звіт роботи програми
+ Індивідуальна конфігурація
+ Створити
+ Редагувати
+ Вилучити
+ Відкрити папку
+ Завантажуваний вміст
+ Ліцензія
+ Кеш шейдерів
+ Журнал шейдерів
+ Експорт текстур
+ Імпорт текстур
+ Довідка
+ Оновити
+ Оновити історію
+ Версія {}
+ Інформація
+
+ Ця програма та всі пов'язані дані, враховуючи збережені дані, будуть видалені.
+ Видалення програми може зайняти деякий час,
+в залежності від того, скільки місця вона займає на пристрої.
+ Ви хочете видалити дані цього доповнення?
+ Ви хочете видалити цю ліцензію?
+ Ви хочете видалити ці збережені дані?
+
+
+ Допущено
+ Не допущено
+ Рівень
+ Ім'я
+ Отримання трофеїв
+ Батьківський контроль
+ Оновлено
+ Розмір
+ Версія
+ Ідентифікатор
+ Востаннє запущено
+ Часу проведено
+ Жодного разу
+
+
+ {}секунд
+ {}хвилин:{}секунд
+ {}годин:{}хвилин:{}секунд
+ {}днів:{}годин:{}хвилин:{}секунд
+ {}тижнів:{}днів:{}годин:{}хвилин:{}секунд
+
+
+
+
+ Сталася помилка.
+Код помилки: {}
+ Відміна
+ Закрити
+ Видалити
+ Файл пошкоджено.
+ Увімкніть мікрофон.
+ Ні
+ Добре
+ Будь ласка, зачекайте...
+ Пошук
+ Обрати все
+
+ Підтвердити
+ Так
+
+ Неділя
+ Понеділок
+ Вівторок
+ Середа
+ Четверг
+ П'ятниця
+ Субота
+
+
+ Січень
+ Лютий
+ Березень
+ Квітень
+ Травень
+ Червень
+ Липень
+ Серпень
+ Вересень
+ Жовтень
+ Листопад
+ Грудень
+
+
+ Січень
+ Лютий
+ Березень
+ Квітень
+ Травень
+ Червень
+ Липень
+ Серпень
+ Вересень
+ Жовтень
+ Листопад
+ Грудень
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+
+ Прихований трофей
+ Годину тому
+ Хвилину тому
+ Бронза
+ Золото
+ Платина
+ Срібло
+ {} Годин тому
+ {} Хвилин тому
+
+
+
+
+ Невідомо
+ Не запускається
+ Запускається
+ Заставка
+ Меню
+ У грі -
+ У грі +
+ Можливо грати
+
+
+
+
+ Помилка
+ Інформація
+ Не вдалося під'єднатися до бази даних сумісностей, перевірте доступ до брендмауеру/Інтернету, та спробуйте ще раз пізніше.
+ Не вдалося завантажити базу даних сумісностей програм, що була оновлена у: {}, спробуйте ще раз пізніше.
+ Не вдалося завантажити базу даних сумісностей програм, що була завантажена та оновлена у: {}.
+ База даних суміснотей була успішно оновлена з {} до {}.
+{} Нову програму/програми виявлено, загалом налічується {}!
+ База даних суміснотей була успішно оновлена з {} до {}.
+{} програм виявлено!
+ База даних сумісностей, що була оновлена у {} успішно завантажена.
+{} програм виявлено!
+
+
+
+ Компіляція шейдерів
+ {} Конвеєрів скомпільовано
+ {} Шейдерів скомпільовано
+
+
+
+
+ Обрані програми та всі пов'язані дані, разом зі збереженими даними, будуть видалені.
+ Дані відсутні.
+
+
+ Обрані збережені дані буде видалено.
+ Збережені дані не виявлено.
+
+ Тема
+ Вільного місця
+ Очистити все
+
+
+
+ {} Контролерів під'єднано
+ Назва
+ Кількість
+ Сумісні контролери не підключені.
+Будь ласка, підключіть контролер, сумісний з SDL2.
+ Контролер має сенсори руху
+ Прив'язка елементів керування
+ Колір світлодіоду
+ Використати власний колір
+ Оберіть цей пункт, аби використати власний колір світлодіоду контролера.
+ Червоний
+ Зелений
+ Синій
+ Скинути налаштування елементів керування контролера
+
+
+
+
+ Прив'язана кнопка
+ Лівий стік догори
+ Лівий стік донизу
+ Лівий стік праворуч
+ Лівий стік ліворуч
+ Правий стік догори
+ Правий стік донизу
+ Правий стік праворуч
+ Правий стік ліворуч
+ D-pad догори
+ D-pad донизу
+ D-pad праворуч
+ D-pad ліворуч
+ Квадрат
+ Хрестик
+ Кружечок
+ Трикутник
+ Кнопка Start
+ Кнопка Select
+ Кнопка PS
+ Кнопка L1
+ Кнопка R1
+ Лише у режимі PS TV.
+ Кнопка L2
+ Кнопка R2
+ Кнопка L3
+ Кнопка R3
+ Інтерфейс
+ Повний екран
+ Перемикання сенсора
+ Перемикання між заднім сенсором та сенсорним екраном.
+ Перемикання видимості інтерфейсу
+ Перемикає видимість інтерфейсу у верхній частині екрану коли програма функціонує.
+ Інше
+ Перемикання заміни текстур
+ Зробити знімок екрану
+ Помилка
+ Кнопка вже прив'язана або її неможливо прив'язати.
+
+
+
+
+
+ Ця програма буде закрита.
+ Дані, що будуть видалені:
+
+
+
+ Фільтр
+ Сортувати програми за
+ Все
+ За регіоном
+ США
+ Європа
+ Японія
+ Азія
+ За типом
+ Комерційне
+ Homebrew
+ За статусом сумісності
+ Версія
+ Каталог
+ Сумісність
+ Останній запуск
+ Оновити
+
+
+
+ Програму було додано на головний екран.
+ Видалити все
+ Сповіщення будуть видалені.
+ Не вдалося завантажити.
+ Завантаження завершене.
+ Завантаження...
+ Сповіщень немає.
+ Ви отримали трофей!
+
+
+
+
+ Завантаження прошивки
+ Завантаження триває, будь ласка, зачекайте...
+ Прошивку успішно завантажено.
+ Версія прошивки:
+ Пакет шрифтів прошивки відсутній, будь ласка, завантажте його.
+ Завантажити пакет шрифтів прошивки
+ Пакет шрифтів прошивки потрібен для деяких програм,
+а також для підтримки шрифтів азійського регіону. (загалом рекомендовано)
+ Видалити файл завантаження прошивки?
+
+
+ Обрати тип ліцензії
+ Обрати work.bin/rif
+ Ввести zRIF
+ Ввести ключ zRIF
+ Будь ласка, введіть свій zRIF тут
+ Ctrl (Cmd) + C аби скопіювати, Ctrl (Cmd) + V аби вставити.
+ Видалити файл pkg?
+ Видалити файл work.bin/rif?
+ Не вдалося завантажити пакет.
+Будь ласка, перевірте файли pkg та work.bin/rif або ключ zRIF.
+
+
+ Оберіть тип завантаження
+ Оберіть файл
+ Оберіть директорію
+ {} архівів з сумісним вмістом було знайдено.
+ {} архівів успішно завантажено:
+ Оновити програму до:
+ Не вдалося завантажити вміст {} архівів:
+ Не знайдено сумісного вмісту у {} архівах:
+ Видалити архів?
+
+
+ Ліцензію успішно завантажено.
+ Не вдалося завантажити ліцензію.
+Будь ласка, перевірте файл work.bin/rif або ключ zRIF.
+
+
+ Перевстановити цей вміст?
+ Цей вміст вже встановлено.
+ Чи бажаєте ви перевстановити його та перезаписати існуючі дані?
+
+
+
+
+ Запуск
+ Продовжити
+
+ Використовуючи конфігурацію для клавіатури в налаштуваннях керування
+ Прошивку не виявлено. Настійно рекомендується завантаження
+ Шрифт прошивки не виявлено. Завантаження рекомендується для шрифта тексту Live Area
+ Довідка Live Area
+ Перегляд списку програм
+ D-pad, лівий стік, коліщатко догори/донизу або використовуючи повзунок
+ Запуск програми
+ натисніть на Start або на хрестик
+ Показати/приховати Live Area під час роботи програми
+ Натиснути PS
+ Вийти з Live Area
+ Натиснути Esc або кружечок
+ Довідка по інструкції
+ Перегляд сторінки
+ D-pad, лівий стік, коліщатко догори/донизу, використовуючи повзунок або настиснути </>
+ Приховати/показати кнопку
+ Натиснути лівий стік або трикутник
+ закрити довідку
+ Натиснути Esc або PS
+
+
+
+
+
+ За замовчуванням
+
+ Знайти користувацькі теми для PSVita
+
+ Назва
+ Постачальник
+ Оновлено
+ Розмір
+ Версія
+ Ідентифікатор вмісту
+
+ Цю тему буде видалено.
+
+
+ Зображення
+ Додати зображення
+
+
+ Видалити фон
+ Додати фон
+
+
+
+
+ РРРР/ММ/ДД
+ ДД/ММ/РРРР
+ ММ/ДД/РРРР
+
+
+ 12-годинний формат
+ 24-годинний формат
+
+
+
+ Мова системи
+
+
+
+ Данська
+ Німецька
+ Англійська (Сполучене Королівство)
+ Англійська (Сполучені Штати)
+ Іспанська
+ Французька
+ Італійська
+ Нідерландська
+ Норвезька
+ Польська
+ Португальська (Бразилія)
+ Португальська (Португалія)
+ Російська
+ Фінська
+ Шведська
+ Турецька
+
+
+
+
+
+
+
+
+ Режим модулів
+ Список модулів
+ Оберіть бажані модулі.
+ Пошук модулів
+ Очистити список
+ Модулі відсутні.
+Будь ласка, завантажте останню прошивку PS Vita.
+ Оновити список
+
+
+ Unicorn (застарілий)
+ Бекенд центрального процесора
+ Оберіть бажаний бекенд центрального процесора.
+ Дозволити оптимізації
+ Оберіть цей пункт, аби дозволити додаткові JIT-оптимізації процесора.
+
+
+ Скинути
+ Рендер бекенду
+ Оберіть бажаний рендер бекенду.
+ Графічний процесор (перезавантажте систему, аби застосувати)
+ Оберіть графічний процесор, на якому буде запускатися Vita3K.
+ Стандарт
+ Високо
+ Точність рендеру
+ Вертикальна синхронізація
+ Вимикання вертикальної синхронізації може покращити швидкодію деяких ігор.
+Рекомендується увімкнути цей параметр, аби уникнути розривів зображення.
+ Вимкнути синхронізацію поверхні
+ Оберіть цей пункт, аби вимкнути сихронізацію поверхонь центрального та графічного процесорів.
+Синхронізація поверхні необхідна для деяких ігор.
+Суттєво збільшує продуктивність, якщо вимкнена (особливо якщо ввімкнено апскейлінг).
+ Асинхронна компіляція конвеєрів
+ Дозволяє конвеєрам компілюватись одночасно на декількох потоках.
+Це покращує якість компіляції за рахунок тимчасових графічних збоїв.
+ Поблизу
+ Білінійно
+ Бікубічно
+ Фільтр екрану
+ Увімкніть фільтр постобробки, аби застосувати.
+ Покращення внутрішньої роздільності
+ Увімкнути покращення внутрішньої роздільності на Vita3K.
+Експериментально: правильний рендеринг ігор на роздільності більшій, ніж 1х, не гарантовано.
+ Анізотропна фільтрація
+ Анізотропна фільтрація - це технологія покращення якості зображення поверхонь,
+що нахилені з точки зору глядача.
+Технологія не має недоліків, але може вплинути на продуктивність системи.
+ Заміна текстур
+ Експорт текстур
+ Імпорт текстур
+ Формат екпорту текстур
+ Шейдери
+ Використовувати кеш шейдерів
+ Оберіть цей пункт, аби дозволити кешу компілюватися зазделегідь під час запуску гри.
+Приберіть позначку, аби відключити функцію.
+ Використовувати шейдер Spir-V (застарілий)
+ Передати отриманий шейдер Spir-V напряму до драйвера.
+Зауважте, що деякі корисні розширення будуть відключені,
+і не всі графічні процесори сумісні з цим шейдером.
+ Очистити кеш та журнал шейдерів
+ Злам FPS
+ Злам ігор, що дозволяє запускати деякі ігри у 60 FPS замість 30.
+Зауважте, що це буде працювати лише у деяких іграх.
+У інших іграх злам не матиме ніякого ефекту, або покращить їх швидкодію.
+
+
+
+ Призначення кнопки Enter
+Оберіть кнопку 'Enter'.
+ Ця кнопка використовується для підтвердження у діалогових вікнах.
+У деяких програмах це не працюватиме, натомість буде використовуватись кнопка підтвердження за замовчуванням.
+ Кружечок
+ Хрестик
+ Режим PS TV
+ Оберіть цей пункт, аби ввімкнути режим емуляції PS TV.
+ Режим показу
+ Оберіть цей пункт, аби ввімкнути режим показу.
+ Демо-режим
+ Оберіть цей пункт, аби ввімкнути демо-режим.
+
+
+ Запускати програми у повноекранному режимі
+ Трасування
+ Інформація
+ Попередження
+ Помилка
+ Критична
+ Вимкнено
+ Рівень журналу
+ Оберіть бажаний рівень журналу.
+ Журнал архіву
+ Оберіть цей пункт, аби ввімкнути журнал архіву.
+ Дозволити запущеній програмі відображатися у Discord.
+ Кеш текстур
+ Приберіть позначку, аби відключити кеш текстур.
+ Відображати компіляцію шейдерів
+ Приберіть позначку, аби приховати вікно компіляції шейдерів.
+ Відображати курсор тачпаду
+ Приберіть позначку, аби приховати курсор тачпаду на екрані.
+ Попередження помилки сумісності журналу
+ Оберіть цей пункт, аби відображати попередження помилки сумісності журналу.
+ Перевірити наявність оновлень
+ Автоматично перевіряти наявність оновлень під час запуску.
+ Оверлей продуктивності
+ Відображати інформацію про продуктивність на екранному оверлеї.
+ Мінімум
+ Низько
+ Медіум
+ Максимум
+ Деталі
+ Оберіть бажаний елемент оверлею продуктивності.
+ Зверху ліворуч
+ Зверху по центру
+ Зверху праворуч
+ Знизу ліворуч
+ Знизу по центру
+ Знизу праворуч
+ Позиція
+ Обрати бажане місце на екрані для оверлею продуктивності.
+ Оберіть цей пункт, аби ввімкнути не чутливий до реєстру пошук шляху на чутливих до реєстру файлових системах.
+Скидається при перезавантаженні
+ Дозволяє емулятору шукати файли незалежно від реєстру
+на операційних системах окрім Windows.
+ Папка емульованої системи
+ Чинний шлях емулятора:
+ Змінити шлях емулятора
+ Змінити папку емулятора Vita3K.
+Необхідно власноруч перемістити стару папку на нове місце.
+ Скинути шлях емулятора
+ Скинути шлях емулятора Vita3K до налаштувань за замовчуванням.
+Необхідно власноруч перемістити стару папку на нове місце.
+ Налаштування користувацької конфігурації
+ Скинути користувацьку конфігурацію
+
+
+ Графічний інтерфейс видимий
+ Оберіть цей пункт, аби відображати графічний інтерфейс під час запуску програми.
+ Інформаційна панель видима
+ Оберіть цей пункт, аби відображати інформаційну панель у селекторі програм.
+ Мова графічного інтерфейсу
+ Оберіть мову користувача.
+ Відображати інформаційні повідомлення
+ Приберіть позначку, аби відображати інформаційні повідомлення лише у журналі.
+ Відображати системні програми
+ Приберіть позначку, аби системні програми не відображалися на головному екрані.
+Вони будуть відображатися лише на панелі у головному меню.
+ Екран програми Live Area
+ Оберіть цей пункт, аби програма Live Area відкривалася за замовчуванням при натисканні на піктограму.
+Якщо програму вимкнено, натисніть на піктограму правим стіком, аби запустити.
+ Розтягнути зону дисплею
+ Оберіть цей пункт, аби збільшити зону дисплею, щоб він вмістився у рамки екрану.
+ Режим сітки
+ Оберіть цей пункт, аби перенести список програм у режим сітки.
+ Розмір піктограми програми
+ Оберіть бажаний розмір піктограми.
+ Підтримка шрифтів
+ Азійський регіон
+ Оберіть цей пункт, аби увімкнути підтримку шрифтів для китайської та корейської мови.
+Цей параметр використовуватиме більше пам'яті, і вам знадобиться перезавантажити емулятор.
+ Прошивка пакету шрифтів необхідна для деяких програм,
+підтримки шрифтів азійського регіону і графічного інтерфейсу.
+Це загалом рекомендовано для графічного інтерфейсу.
+ Тема & Фон
+ Чинний ідентифікатор теми:
+ Скинути до базової теми
+ Використання теми/фону
+ Очистити користувацькі фони
+ Чинний фон початкового екрану:
+ Скинути фон початкового екрану
+ Прозорість фону
+ Оберіть бажану прозорість фону.
+Мінімум - непрозорий, максимум - прозорий.
+ Затримка фону
+ Оберіть затримку (у секундах) між зміною фону.
+ Затримка початкового екрану
+ Оберіть затримку (у секундах) перш ніж станеться повернення на початковий екран.
+
+
+ підключено до PSN
+ Якщо обрано - гра буде вважати, що користувача підключено до PSN (однак підключення насправді відсутнє).
+ Дозволити HTTP
+ Оберіть цей пункт, аби ігри мали змогу використовувати HTTP-протокол інтернету.
+ Спроби під'єднання HTTP
+ Скільки разів спробувати під'єднатися, якщо сервер не відповідає.
+Може допомогти, якщо ви маєте дуже нестабільний або дуже слабкий інтернет.
+ Перехід HTTP у режим сну
+ Спроба увійти в режим сну, якщо сервер не відповідає.
+Може допомогти, якщо ви маєте дуже нестабільний або дуже слабкий інтернет.
+ Спроби прочитати дані протоколу HTTP
+ Скільки разів спробувати прочитати дані, якщо нових даних немає,
+зниження параметру може покращити продуктивність, але ігри можуть працювати нестабільно при слабкому інтернеті.
+ Режим сну після спроб прочитати дані протоколу HTTP
+ Спроба увійти у режим сну, якщо нових даних для читання немає,
+зниження параметру може покращити продуктивність, але ігри можуть працювати нестабільно при слабкому інтернеті.
+
+
+ Журналювання імпорту
+ Журналювати символи модуля імпорту.
+ Журналювання експорту
+ Журналювати символи модуля експорту.
+ Журналювання шейдерів
+ Журнальовані шейдери використовуються при кожному виклику відтворення.
+ Рівномірне журналювання
+ Рівномірно журналювати назви та значення шейдерів.
+ Зберегти кольорові поверхні
+ Зберегти кольорові поверхні до файлів.
+ Збереження у форматі ELF
+ Зберегти завантажений код у вигляді ELF-файлів.
+ Рівень валідації (необхідний перезапуск)
+ Дозволити рівень валідації технології Vulkan.
+ Не спостерігати за кодом
+ Спостерігати за кодом
+ Не спостерігати за пам'яттю
+ Спостерігати за пам'яттю
+ Не спостерігати за імпортованими викликами
+ Спостерігати за імпортованими викликами
+
+ Зберегти & Перезапустити
+ Зберегти & Застосувати
+ Зберегти
+ Натисніть 'Зберегти', аби зберегти зміни.
+
+
+
+ Видалити трофей
+ Інформацію про отримання цього трофею користувачем буде видалено.
+ Заблоковано
+ Деталі
+ Отримано
+ Назва
+ Трофеїв немає.
+Ви можете отримати трофеї використовуючи програми, що підтримують функцію трофеїв.
+ Не отримано
+ Оригінал
+ Сортувати
+ Трофеї
+ Ступінь
+
+ Оновлено
+
+
+
+ Обрати користувача
+ Створити користувача
+ Користувача було створено.
+ Редагувати користувача
+ Відкрити папку користувача
+ Це ім'я вже використовується.
+ Видалити користувача
+ Оберіть, якого користувача ви хочете видалити.
+ Цього користувача буде видалено.
+ Якщо ви видалите цього користувача, будуть також видалені його збережені дані та трофеї.
+ Користувача буде видалено.
+Ви впевнені, що хочете продовжити?
+ Користувача видалено.
+ Обрати аватар
+ Скинути аватар
+ Ім'я
+ Користувач
+ Підтвердити
+ Автоматичний вхід у систему
+
+
+
+ Доступна нова версія Vita3K.
+ Назад
+ Ви хочете відмінити оновлення?
+ Завантаження...
+Після завантаження, Vita3K автоматично перезапуститься та встановить нове оновлення.
+ Не вдалося виконати оновлення.
+ {} хвилин залишилось
+ Далі
+ {} секунд залишилось
+ Ви хочете оновити Vita3K?
+ Більш нову версію Vita3K вже встановлено.
+ Останню версію Vita3K вже встановлено.
+ Нові функції у версії {}
+ Автори
+ Опис
+ Оновлення
+ Версія {}
+
+
+
+ Емулятор PlayStation Vita Vita3K
+ Vita3K - це емулятор PlayStation Vita з відкритим кодом, написаний на C++ для операційних систем Windows, Linux, macOS та Android.
+ Емулятор досі у розробці, тому ми були б дуже вдячні за відгуки та тестування.
+ Аби розпочати, будь ласка, встановіть прошивку PS Vita та пакети шрифтів.
+ Встановити прошивку
+ Повне керівництво з налаштування Vita3K можна побачити
+ Тут
+ Сторінка.
+ Перевірте списки сумісності, аби дізнатися, що нараізі запускається.
+ Список сумісності комерційних ігор
+ Список сумісності Homebrew
+ Будь-який внесок вітається!
+ Додаткову інформацію можна знайти в каналі #help у
+ Vita3K не заохочує до піратства. Ви маєте використовувати власні дампи пам'яті ігор.
+ Відобразити наступного разу
+
+
diff --git a/vita3k/compat/src/compat.cpp b/vita3k/compat/src/compat.cpp
index 92ab09308e..0f9712554c 100644
--- a/vita3k/compat/src/compat.cpp
+++ b/vita3k/compat/src/compat.cpp
@@ -41,6 +41,7 @@ namespace compat {
static std::string db_updated_at;
static const uint32_t db_version = 1;
+static uint32_t db_issue_count = 0;
bool load_app_compat_db(GuiState &gui, EmuEnvState &emuenv) {
const auto app_compat_db_path = emuenv.cache_path / "app_compat_db.xml";
@@ -60,6 +61,7 @@ bool load_app_compat_db(GuiState &gui, EmuEnvState &emuenv) {
// Check compatibility database version
const auto compatibility = doc.child("compatibility");
const auto version = compatibility.attribute("version").as_uint();
+ db_issue_count = compatibility.attribute("issue_count").as_uint();
if (db_version != version) {
LOG_WARN("Compatibility database version {} is outdated, download it again.", version);
return update_app_compat_db(gui, emuenv);
@@ -166,7 +168,7 @@ bool update_app_compat_db(GuiState &gui, EmuEnvState &emuenv) {
fs::rename(new_app_compat_db_path, app_compat_db_path);
const auto old_db_updated_at = db_updated_at;
- const auto old_compat_db_count = gui.compat.app_compat_db.size();
+ const auto old_compat_db_count = db_issue_count;
db_updated_at = updated_at;
gui.compat.compat_db_loaded = load_app_compat_db(gui, emuenv);
@@ -182,7 +184,7 @@ bool update_app_compat_db(GuiState &gui, EmuEnvState &emuenv) {
gui.info_message.level = spdlog::level::info;
if (compat_db_exist) {
- const auto dif = static_cast(gui.compat.app_compat_db.size() - old_compat_db_count);
+ const auto dif = static_cast(db_issue_count - old_compat_db_count);
if (!old_db_updated_at.empty() && dif > 0)
gui.info_message.msg = fmt::format(fmt::runtime(lang["new_app_listed"].c_str()), old_db_updated_at, db_updated_at, dif, gui.compat.app_compat_db.size());
else
diff --git a/vita3k/gui/src/about_dialog.cpp b/vita3k/gui/src/about_dialog.cpp
index f66cc82ecc..f6beb80fca 100644
--- a/vita3k/gui/src/about_dialog.cpp
+++ b/vita3k/gui/src/about_dialog.cpp
@@ -56,13 +56,21 @@ void draw_about_dialog(GuiState &gui, EmuEnvState &emuenv) {
const ImVec2 display_size(emuenv.viewport_size.x, emuenv.viewport_size.y);
const ImVec2 RES_SCALE(display_size.x / emuenv.res_width_dpi_scale, display_size.y / emuenv.res_height_dpi_scale);
const ImVec2 SCALE(RES_SCALE.x * emuenv.dpi_scale, RES_SCALE.y * emuenv.dpi_scale);
+ static const auto BUTTON_SIZE = ImVec2(120.f * emuenv.dpi_scale, 0.f);
auto &lang = gui.lang.about;
+ auto &common = emuenv.common_dialog.lang.common;
+
ImGui::SetNextWindowPos(ImVec2(display_size.x / 2.f, display_size.y / 2.f), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
- ImGui::Begin(lang["title"].c_str(), &gui.help_menu.about_dialog, ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize);
+ ImGui::Begin("##about", &gui.help_menu.about_dialog, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize);
+ ImGui::SetWindowFontScale(RES_SCALE.x);
+ auto title_str = lang["title"].c_str();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (ImGui::CalcTextSize(title_str).x / 2.f));
+ ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", title_str);
+ ImGui::Spacing();
+ ImGui::Separator();
const auto HALF_WINDOW_WIDTH = ImGui::GetWindowWidth() / 2.f;
ImGui::SetCursorPosX(HALF_WINDOW_WIDTH - (ImGui::CalcTextSize(window_title).x / 2.f));
- ImGui::SetWindowFontScale(RES_SCALE.x);
ImGui::TextColored(GUI_COLOR_TEXT_MENUBAR, "%s", window_title);
ImGui::Spacing();
@@ -151,6 +159,12 @@ void draw_about_dialog(GuiState &gui, EmuEnvState &emuenv) {
ImGui::Text("%s", supporter);
ImGui::EndTable();
}
+ ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
+ gui.help_menu.about_dialog = false;
ImGui::End();
}
diff --git a/vita3k/gui/src/app_context_menu.cpp b/vita3k/gui/src/app_context_menu.cpp
index 1c800bc291..01e5f5976d 100644
--- a/vita3k/gui/src/app_context_menu.cpp
+++ b/vita3k/gui/src/app_context_menu.cpp
@@ -320,6 +320,7 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
auto &savedata_str = gui.lang.content_manager.saved_data;
auto &common = emuenv.common_dialog.lang.common;
auto &lang_compat = gui.lang.compatibility;
+ auto &textures = gui.lang.settings_dialog.gpu;
const auto is_commercial_app = title_id.starts_with("PCS") || (title_id == "NPXS10007");
const auto is_system_app = title_id.starts_with("NPXS") && (title_id != "NPXS10007");
@@ -478,9 +479,9 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
open_path(SHADER_CACHE_PATH.string());
if (fs::exists(SHADER_LOG_PATH) && ImGui::MenuItem(lang.main["shaders_log"].c_str()))
open_path(SHADER_LOG_PATH.string());
- if (fs::exists(EXPORT_TEXTURES_PATH) && ImGui::MenuItem(lang.main["export_textures"].c_str()))
+ if (fs::exists(EXPORT_TEXTURES_PATH) && ImGui::MenuItem(textures["export_textures"].c_str()))
open_path(EXPORT_TEXTURES_PATH.string());
- if (fs::exists(IMPORT_TEXTURES_PATH) && ImGui::MenuItem(lang.main["import_textures"].c_str()))
+ if (fs::exists(IMPORT_TEXTURES_PATH) && ImGui::MenuItem(textures["import_textures"].c_str()))
open_path(IMPORT_TEXTURES_PATH.string());
ImGui::EndMenu();
}
@@ -508,9 +509,9 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
fs::remove_all(SHADER_CACHE_PATH);
if (fs::exists(SHADER_LOG_PATH) && ImGui::MenuItem(lang.main["shaders_log"].c_str()))
fs::remove_all(SHADER_LOG_PATH);
- if (fs::exists(EXPORT_TEXTURES_PATH) && ImGui::MenuItem(lang.main["export_textures"].c_str()))
+ if (fs::exists(EXPORT_TEXTURES_PATH) && ImGui::MenuItem(textures["export_textures"].c_str()))
fs::remove_all(EXPORT_TEXTURES_PATH);
- if (fs::exists(IMPORT_TEXTURES_PATH) && ImGui::MenuItem(lang.main["import_textures"].c_str()))
+ if (fs::exists(IMPORT_TEXTURES_PATH) && ImGui::MenuItem(textures["import_textures"].c_str()))
fs::remove_all(IMPORT_TEXTURES_PATH);
ImGui::EndMenu();
}
diff --git a/vita3k/gui/src/controllers_dialog.cpp b/vita3k/gui/src/controllers_dialog.cpp
index f7ed7cfd1c..bbb3b61d75 100644
--- a/vita3k/gui/src/controllers_dialog.cpp
+++ b/vita3k/gui/src/controllers_dialog.cpp
@@ -173,17 +173,25 @@ void draw_controllers_dialog(GuiState &gui, EmuEnvState &emuenv) {
const ImVec2 VIEWPORT_POS(emuenv.viewport_pos.x, emuenv.viewport_pos.y);
const ImVec2 VIEWPORT_SIZE(emuenv.viewport_size.x, emuenv.viewport_size.y);
const ImVec2 RES_SCALE(VIEWPORT_SIZE.x / emuenv.res_width_dpi_scale, VIEWPORT_SIZE.y / emuenv.res_height_dpi_scale);
+ static const auto BUTTON_SIZE = ImVec2(120.f * emuenv.dpi_scale, 0.f);
auto &ctrl = emuenv.ctrl;
auto &lang = gui.lang.controllers;
+ auto &common = emuenv.common_dialog.lang.common;
const auto has_controllers = ctrl.controllers_num > 0;
if (has_controllers)
ImGui::SetNextWindowSize(ImVec2(VIEWPORT_SIZE.x / 2.5f, 0), ImGuiCond_Always);
ImGui::SetNextWindowPos(ImVec2(VIEWPORT_POS.x + (VIEWPORT_SIZE.x / 2.f), VIEWPORT_POS.y + (VIEWPORT_SIZE.y / 2.f)), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
- ImGui::Begin(lang["title"].c_str(), &gui.controls_menu.controllers_dialog, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings);
+ ImGui::Begin("##controllers", &gui.controls_menu.controllers_dialog, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings);
ImGui::SetWindowFontScale(RES_SCALE.x);
+ auto title_str = lang["title"].c_str();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (ImGui::CalcTextSize(title_str).x / 2.f));
+ ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", title_str);
+ ImGui::Spacing();
+ ImGui::Separator();
+
if (has_controllers) {
const auto connected_str = fmt::format(fmt::runtime(lang["connected"].c_str()), ctrl.controllers_num);
ImGui::TextColored(GUI_COLOR_TEXT_MENUBAR, "%s", connected_str.c_str());
@@ -214,9 +222,16 @@ void draw_controllers_dialog(GuiState &gui, EmuEnvState &emuenv) {
}
ImGui::SetNextWindowSize(ImVec2(VIEWPORT_SIZE.x / 1.4f, 0.f), ImGuiCond_Always);
ImGui::SetNextWindowPos(ImVec2(VIEWPORT_POS.x + (VIEWPORT_SIZE.x / 2.f), VIEWPORT_POS.y + (VIEWPORT_SIZE.y / 2.f)), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
- ImGui::Begin(lang["rebind_controls"].c_str(), &rebinds_is_open, ImGuiWindowFlags_NoSavedSettings);
+ ImGui::Begin("##rebind_controls", &rebinds_is_open, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings);
ImGui::SetWindowFontScale(RES_SCALE.x);
+ auto rebind_controls = lang["rebind_controls"].c_str();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (ImGui::CalcTextSize(rebind_controls).x / 2.f));
+ ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", rebind_controls);
+ ImGui::Spacing();
+ ImGui::Separator();
+
auto &controls = gui.lang.controls;
+
const auto type = SDL_GameControllerTypeForIndex(i);
ImGui::TextColored(GUI_COLOR_TEXT_MENUBAR, "%s", ctrl.controllers_name[i]);
ImGui::Separator();
@@ -298,6 +313,8 @@ void draw_controllers_dialog(GuiState &gui, EmuEnvState &emuenv) {
config::serialize_config(emuenv.cfg, emuenv.cfg.config_path);
};
ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
const auto led_color_str = lang["led_color"].c_str();
ImGui::SetCursorPosX((ImGui::GetWindowWidth() / 2.f) - (ImGui::CalcTextSize(led_color_str).x / 2.f));
ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", led_color_str);
@@ -341,6 +358,13 @@ void draw_controllers_dialog(GuiState &gui, EmuEnvState &emuenv) {
}
}
}
+ ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
+ rebinds_is_open = false;
+
ImGui::End();
}
}
@@ -359,6 +383,12 @@ void draw_controllers_dialog(GuiState &gui, EmuEnvState &emuenv) {
ImGui::Spacing();
if (ImGui::Button(lang["reset_controller_binding"].c_str()))
reset_controller_binding(emuenv);
+ ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
+ gui.controls_menu.controllers_dialog = false;
ImGui::End();
}
diff --git a/vita3k/gui/src/controls_dialog.cpp b/vita3k/gui/src/controls_dialog.cpp
index 917a00145c..93f3ab0430 100644
--- a/vita3k/gui/src/controls_dialog.cpp
+++ b/vita3k/gui/src/controls_dialog.cpp
@@ -113,16 +113,29 @@ static void remapper_button(GuiState &gui, EmuEnvState &emuenv, int *button, con
}
void draw_controls_dialog(GuiState &gui, EmuEnvState &emuenv) {
- auto &lang = gui.lang.controls;
+ const ImVec2 display_size(emuenv.viewport_size.x, emuenv.viewport_size.y);
+ const auto RES_SCALE = ImVec2(display_size.x / emuenv.res_width_dpi_scale, display_size.y / emuenv.res_height_dpi_scale);
+ static const auto BUTTON_SIZE = ImVec2(120.f * emuenv.dpi_scale, 0.f);
+
float height = emuenv.viewport_size.y / emuenv.dpi_scale;
if (ImGui::BeginMainMenuBar()) {
height = height - ImGui::GetWindowHeight() * 2;
ImGui::EndMainMenuBar();
}
+ auto &lang = gui.lang.controls;
+ auto &common = emuenv.common_dialog.lang.common;
+
ImGui::SetNextWindowSize(ImVec2(0, height));
ImGui::SetNextWindowPos(ImVec2(ImGui::GetIO().DisplaySize.x / 2.f, ImGui::GetIO().DisplaySize.y / 2.f), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
- ImGui::Begin(lang["title"].c_str(), &gui.controls_menu.controls_dialog);
+ ImGui::Begin("##controls", &gui.controls_menu.controls_dialog, ImGuiWindowFlags_NoTitleBar);
+ ImGui::SetWindowFontScale(RES_SCALE.x);
+ auto title_str = lang["title"].c_str();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (ImGui::CalcTextSize(title_str).x / 2.f));
+ ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", title_str);
+ ImGui::Spacing();
+ ImGui::Separator();
+
if (ImGui::BeginTable("main", 2)) {
ImGui::TableSetupColumn("button");
ImGui::TableSetupColumn("mapped_button");
@@ -199,14 +212,20 @@ void draw_controls_dialog(GuiState &gui, EmuEnvState &emuenv) {
ImGui::SetNextWindowPos(ImVec2(ImGui::GetIO().DisplaySize.x / 2.f, ImGui::GetIO().DisplaySize.y / 2.f), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
if (ImGui::BeginPopupModal(lang["error"].c_str(), nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::Text("%s", lang["error_duplicate_key"].c_str());
- ImGui::NewLine();
- static const auto BUTTON_SIZE = ImVec2(120.f * emuenv.dpi_scale, 0.f);
+ ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
- if (ImGui::Button(emuenv.common_dialog.lang.common["ok"].c_str(), BUTTON_SIZE)) {
+ if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE))
ImGui::CloseCurrentPopup();
- }
ImGui::EndPopup();
}
+ ImGui::Spacing();
+ ImGui::Separator();
+ ImGui::Spacing();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
+ gui.controls_menu.controls_dialog = false;
ImGui::End();
}
diff --git a/vita3k/gui/src/settings_dialog.cpp b/vita3k/gui/src/settings_dialog.cpp
index 1057df71db..ffa5d0131d 100644
--- a/vita3k/gui/src/settings_dialog.cpp
+++ b/vita3k/gui/src/settings_dialog.cpp
@@ -1,4 +1,4 @@
-// Vita3K emulator project
+// Vita3K emulator project
// Copyright (C) 2024 Vita3K team
//
// This program is free software; you can redistribute it and/or modify
@@ -478,6 +478,7 @@ void draw_settings_dialog(GuiState &gui, EmuEnvState &emuenv) {
const auto SCALE = ImVec2(RES_SCALE.x * emuenv.dpi_scale, RES_SCALE.y * emuenv.dpi_scale);
auto &lang = gui.lang.settings_dialog;
+ auto &common = emuenv.common_dialog.lang.common;
auto &firmware_font = gui.lang.install_dialog.firmware_install;
ImGui::PushStyleColor(ImGuiCol_Text, GUI_COLOR_TEXT_MENUBAR);
@@ -983,11 +984,12 @@ void draw_settings_dialog(GuiState &gui, EmuEnvState &emuenv) {
if (ImGui::IsItemHovered())
ImGui::SetTooltip("%s", lang.gui["info_bar_description"].c_str());
ImGui::Spacing();
- const std::string system_lang_name = fmt::format("System: {}", get_sys_lang_name(emuenv.cfg.sys_lang));
+ const std::string system_lang_name = fmt::format("{}: {}", lang.system["title"], get_sys_lang_name(emuenv.cfg.sys_lang));
std::vector list_user_lang_str{ system_lang_name.c_str() };
static std::map static_list_user_lang_names = {
{ "id", "Indonesia" },
{ "ms", "Malaysia" },
+ { "ua", reinterpret_cast(u8"Українська") },
};
for (const auto &l : list_user_lang)
list_user_lang_str.push_back(static_list_user_lang_names.contains(l) ? static_list_user_lang_names[l].c_str() : l.c_str());
@@ -1286,7 +1288,7 @@ void draw_settings_dialog(GuiState &gui, EmuEnvState &emuenv) {
ImGui::Spacing();
static const auto BUTTON_SIZE = ImVec2(120.f * SCALE.x, 0.f);
ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - BUTTON_SIZE.x - (10.f * SCALE.x));
- if (ImGui::Button(lang.main_window["close"].c_str(), BUTTON_SIZE))
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
settings_dialog = false;
ImGui::SameLine(0, 20.f * SCALE.x);
const auto is_apply = !emuenv.io.app_path.empty() && (!is_custom_config || (emuenv.app_path == emuenv.io.app_path));
diff --git a/vita3k/gui/src/user_management.cpp b/vita3k/gui/src/user_management.cpp
index 62e7cdcb1c..ade49c2b4b 100644
--- a/vita3k/gui/src/user_management.cpp
+++ b/vita3k/gui/src/user_management.cpp
@@ -618,13 +618,11 @@ void draw_user_management(GuiState &gui, EmuEnvState &emuenv) {
if ((user_item_rect_half > HALF_SIZE_USER) || (user_item_rect_half < HALF_SIZE_USER))
ImGui::SetScrollHereX(0.5f);
}
-#if defined(__Win32__) && !defined(__linux__) && !defined(__APPLE__)
if (ImGui::BeginPopupContextItem("##user_context_menu")) {
if (ImGui::MenuItem(lang["open_user_folder"].c_str()))
open_path((user_path / user.first).string());
ImGui::EndPopup();
}
-#endif
ImGui::SetCursorPos(ImVec2(USER_POS.x + USER_NAME_PADDING, USER_POS.y + MED_AVATAR_SIZE.y + (5.f * SCALE.y)));
ImGui::PushTextWrapPos(USER_POS.x + MED_AVATAR_SIZE.x - USER_NAME_PADDING);
ImGui::TextColored(GUI_COLOR_TEXT, "%s", user.second.name.c_str());
diff --git a/vita3k/gui/src/welcome_dialog.cpp b/vita3k/gui/src/welcome_dialog.cpp
index df5cd25613..42e06f53cb 100644
--- a/vita3k/gui/src/welcome_dialog.cpp
+++ b/vita3k/gui/src/welcome_dialog.cpp
@@ -27,13 +27,20 @@ namespace gui {
void draw_welcome_dialog(GuiState &gui, EmuEnvState &emuenv) {
const ImVec2 display_size(emuenv.viewport_size.x, emuenv.viewport_size.y);
const auto RES_SCALE = ImVec2(display_size.x / emuenv.res_width_dpi_scale, display_size.y / emuenv.res_height_dpi_scale);
+ static const auto BUTTON_SIZE = ImVec2(120.f * emuenv.dpi_scale, 0.f);
auto &lang = gui.lang.welcome;
+ auto &common = emuenv.common_dialog.lang.common;
ImGui::SetNextWindowPos(ImVec2(display_size.x / 2.f, display_size.y / 2.f), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
ImGui::PushStyleColor(ImGuiCol_Text, GUI_COLOR_TEXT_MENUBAR);
- ImGui::Begin(lang["title"].c_str(), &gui.help_menu.welcome_dialog, ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize);
+ ImGui::Begin("##welcome", &gui.help_menu.welcome_dialog, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize);
ImGui::SetWindowFontScale(RES_SCALE.x);
+ auto title_str = lang["title"].c_str();
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (ImGui::CalcTextSize(title_str).x / 2.f));
+ ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", title_str);
+ ImGui::Spacing();
+ ImGui::Separator();
ImGui::PopStyleColor();
ImGui::Spacing();
ImGui::TextColored(GUI_COLOR_TEXT, "%s", lang["vita3k"].c_str());
@@ -84,8 +91,10 @@ void draw_welcome_dialog(GuiState &gui, EmuEnvState &emuenv) {
if (ImGui::Checkbox(lang["show_next_time"].c_str(), &emuenv.cfg.show_welcome))
config::serialize_config(emuenv.cfg, emuenv.cfg.config_path);
ImGui::Spacing();
- if (ImGui::Button(lang["close"].c_str()))
+ ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2.f) - (BUTTON_SIZE.x / 2.f));
+ if (ImGui::Button(common["close"].c_str(), BUTTON_SIZE))
gui.help_menu.welcome_dialog = false;
+
ImGui::End();
}
diff --git a/vita3k/lang/include/lang/state.h b/vita3k/lang/include/lang/state.h
index c17d896567..e8d5936580 100644
--- a/vita3k/lang/include/lang/state.h
+++ b/vita3k/lang/include/lang/state.h
@@ -33,6 +33,7 @@ struct DialogLangState {
std::map common = {
{ "an_error_occurred", "An error occurred.\nError code: {}" },
{ "cancel", "Cancel" },
+ { "close", "Close" },
{ "delete", "Delete" },
{ "file_corrupted", "The file is corrupt." },
{ "microphone_disabled", "Enable the microphone." },
@@ -166,8 +167,6 @@ struct LangState {
{ "license", "License" },
{ "shaders_cache", "Shaders Cache" },
{ "shaders_log", "Shaders Log" },
- { "export_textures", "Export Textures" },
- { "import_textures", "Import Textures" },
{ "manual", "Manual" },
{ "update", "Update" },
{ "update_history", "Update History" },
@@ -512,7 +511,6 @@ struct LangState {
struct SettingsDialog {
std::map main_window = {
{ "title", "Settings" },
- { "close", "Close" },
{ "save_reboot", "Save & Reboot" },
{ "save_apply", "Save & Apply" },
{ "save", "Save" },
@@ -802,8 +800,7 @@ struct LangState {
{ "welcome_contribution", "Contributions are welcome!" },
{ "discord_help", "Additional support can be found in the #help channel of the" },
{ "no_piracy", "Vita3K does not condone piracy. You must dump your own games." },
- { "show_next_time", "Show next time" },
- { "close", "Close" }
+ { "show_next_time", "Show next time" }
};
struct Common {
std::vector wday = {