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 + Lukke Slet Filen er defekt. Aktivér mikrofonen. @@ -331,7 +332,6 @@ Dit Vita3K-system er klart! - Lukke Gem @@ -394,8 +394,4 @@ Efter download er udført, vil Vita3K automatisk genstarte og derefter installer Opdater Version {} - - - 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ßen Löschen Die Datei ist beschädigt. Aktiviere das Mikrofon. @@ -335,11 +336,8 @@ Dein Vita3K-System ist bereit! - - - Schließen Speichern @@ -407,8 +405,4 @@ Nach dem Herunterladen wird Vita3K automatisch neu gestartet und die neue Aktual Aktualisieren Version {} - - - 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 @@ License Shaders Cache Shaders Log - Export Textures - Import Textures Manual Update Update History @@ -110,6 +108,7 @@ depending on its size and your hardware. An error occurred. Error code: {} Cancel + Close Delete The 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 Calls Watch Import Calls - Close Save & Reboot Save & Apply Save @@ -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 the Vita3K 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 @@ License Shaders Cache Shaders Log - Export Textures - Import Textures Manual Update Update History @@ -110,6 +108,7 @@ depending on its size and your hardware. An error occurred. Error code: {} Cancel + Close Delete The 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 Calls Watch Import Calls - Close Save & Reboot Save & Apply Save @@ -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 the Vita3K 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 + Cerrar Eliminar El archivo está dañado. Activa el micrófono. @@ -346,7 +347,6 @@ No apagues el sistema ni cierres la aplicación. - Cerrar Guardar @@ -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 de Vita3K 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 + Sulkea Poista Tiedosto on vioittunt. Ota mikrofoni käyttöön. @@ -332,7 +333,6 @@ Vita3K-järjestelmäsi on nyt käyttövalmis! - Sulkea Tallenna @@ -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 + Fermer Supprimer Le fichier est corrompu. Activez le microphone. @@ -436,7 +437,6 @@ Votre système Vita3K est prêt ! - Fermer Sauvegarder @@ -507,8 +507,4 @@ Une fois le téléchargement terminé, Vita3K redémarrera automatiquement et in Mettre à jour Version {} - - - 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 + Chiudersi Elimina Il file è danneggiato. Attiva il microfono. @@ -350,7 +351,6 @@ Il tuo sistema Vita3K è pronto per l'uso! - Chiudersi Salva @@ -416,8 +416,4 @@ Al termine del download, Vita3K si riavvierà automaticamente e quindi installer Aggiorna Versione {} - - - 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 + Sluiten Verwijderen Het bestand is beschadigd. Schakel de microfoon in. @@ -351,7 +352,6 @@ Je Vita3K-systeem is gereed! - Sluiten Opslaan @@ -415,8 +415,4 @@ Nadat het downloaden is voltooid, Vita3K automatisch opnieuw gestart en wordt de Update Versie {} - - - 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 + Lukke Slett Filen er korrupt. Aktiver mikrofonen. @@ -331,7 +332,6 @@ Vita3K-systemet ditt er klart! - Lukke Lagre @@ -394,8 +394,4 @@ Etter at Etter at nedlastingen er fullført, vil Vita3K starte på nytt automati Oppdater Versjon {} - - - 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 @@ Licencja Pamięć podręczna cieni Dziennik zdarzeń cieni - Eksportuj tekstury - Importuj tekstury Instrukcja obsługi Aktualizuj Historia aktualizacji @@ -110,6 +108,7 @@ jest to zależne od jej rozmiaru i twojego sprzętu. Wystąpił błąd. Kod błędu: {} Anuluj + Zamknij Usuń 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 importu Obserwuj wywołania importu - Zamknij Zapisz i uruchom ponownie Zapisz 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 + Fechar Excluir O arquivo está corrompido. Ative o microfone. @@ -408,7 +409,6 @@ fundo - Fechar Salvar @@ -476,8 +476,4 @@ Quando o download terminar, Vita3K será reiniciado automaticamente e o novo atu Atualizar Versã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 + Fechar Eliminar O ficheiro está corrompido. Ative o microfone. @@ -334,7 +335,6 @@ O seu sistema Vita3K está pronto! - Fechar Guardar @@ -398,8 +398,4 @@ Uma vez concluída a transferência, Vita3K será reiniciado automaticamente e, Atualizar Versã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änga Radera Filen är skadad. Aktivera mikrofonen. @@ -328,11 +329,8 @@ Ditt Vita3K-system är redo! - - - Stänga Spara @@ -394,8 +392,4 @@ När nedladdningen är slutförd kommer Vita3K automatiskt att startas om och de Uppdatera Version {} - - - 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 + Kapat Sil Dosya bozuk. Hayır @@ -338,7 +339,6 @@ Vita3K sisteminiz artık hazır! - Kapat Kaydet @@ -403,8 +403,4 @@ Devam etmek istediğinizden emin misiniz? Güncelle Sü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 + Tutup Hapus File 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 Panggilan Tonton Impor Panggilan - Tutup Simpan & BuatUlang Simpan & Terapkan Simpan @@ -818,6 +792,5 @@ berjalan. Dukungan tambahan dapat ditemukan di saluran #help channel dari Vita3K 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 + Tutup Padam Fail 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 Import Tonton Panggilan Import - Tutup Simpan & Reboot Simpan & Apply Simpan @@ -830,6 +805,5 @@ Selepas muat turun selesai, Vita3K akan dimulakan semula secara automatik dan ke Sokongan tambahan boleh didapati dalam saluran #help Vita3K 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 = {