yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

Compare commits

..

No commits in common. "537296095ab24eddcb196b5ef98004f91de9c8c2" and "b2e129eaa5c97f216dcf02e2d853ca809ce392b7" have entirely different histories.

127 changed files with 18508 additions and 34324 deletions

1626
dist/languages/ar.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/ca.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/cs.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/da.ts vendored

File diff suppressed because it is too large Load Diff

1636
dist/languages/de.ts vendored

File diff suppressed because it is too large Load Diff

1644
dist/languages/el.ts vendored

File diff suppressed because it is too large Load Diff

1720
dist/languages/es.ts vendored

File diff suppressed because it is too large Load Diff

1684
dist/languages/fr.ts vendored

File diff suppressed because it is too large Load Diff

1770
dist/languages/hu.ts vendored

File diff suppressed because it is too large Load Diff

2105
dist/languages/id.ts vendored

File diff suppressed because it is too large Load Diff

1636
dist/languages/it.ts vendored

File diff suppressed because it is too large Load Diff

1634
dist/languages/ja_JP.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/ko_KR.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/nb.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/nl.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/pl.ts vendored

File diff suppressed because it is too large Load Diff

2026
dist/languages/pt_BR.ts vendored

File diff suppressed because it is too large Load Diff

1680
dist/languages/pt_PT.ts vendored

File diff suppressed because it is too large Load Diff

1675
dist/languages/ru_RU.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/sv.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/tr_TR.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/uk.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/vi.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/vi_VN.ts vendored

File diff suppressed because it is too large Load Diff

1717
dist/languages/zh_CN.ts vendored

File diff suppressed because it is too large Load Diff

1682
dist/languages/zh_TW.ts vendored

File diff suppressed because it is too large Load Diff

View File

@ -95,8 +95,6 @@
<string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</string> <string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</string>
<string name="install_game_content_description">دامەزراندنی نوێکاری یارییەکان یان DLC</string> <string name="install_game_content_description">دامەزراندنی نوێکاری یارییەکان یان DLC</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string> <string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string>
<string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string> <string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string>
@ -130,6 +128,7 @@
<string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string> <string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string>
<string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string> <string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string>
<string name="cpu_accuracy">وردی CPU</string> <string name="cpu_accuracy">وردی CPU</string>
<!-- System settings strings -->
<string name="use_docked_mode">دۆخی دۆککراو</string> <string name="use_docked_mode">دۆخی دۆککراو</string>
<string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string> <string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string>
<string name="emulated_region">ناوچەی ئیمولەیشن</string> <string name="emulated_region">ناوچەی ئیمولەیشن</string>
@ -163,46 +162,6 @@
<string name="audio_volume">قەبارەی دەنگی</string> <string name="audio_volume">قەبارەی دەنگی</string>
<string name="audio_volume_description">دیاریکردنی قەبارەی دەنگی دەرچووی بیستۆک و بزوێنەری دەنگی دەرەکی.</string> <string name="audio_volume_description">دیاریکردنی قەبارەی دەنگی دەرچووی بیستۆک و بزوێنەری دەنگی دەرەکی.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Plus</string>
<string name="button_minus">Minus</string>
<string name="button_home">ماڵەوە</string>
<string name="button_capture">Capture</string>
<string name="dpad">D-Pad</string>
<string name="up">سەرەوە</string>
<string name="down">خوارەوە</string>
<string name="left">چەپ</string>
<string name="right">ڕاست</string>
<string name="left_stick">گێڕی چەپ</string>
<string name="right_stick">گێڕی ڕاست</string>
<string name="c_stick">گێڕی کامێرا</string>
<string name="pressed">فشارخراوەتەسەر</string>
<string name="range">مەودا</string>
<string name="modifier">دەستکاریکەر</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">نادروست</string>
<string name="pro_controller">کۆنتڕۆڵکەری پڕۆ</string>
<string name="handheld">دەستی</string>
<string name="dual_joycons">دووانە جۆیکۆن</string>
<string name="left_joycon">جۆیکۆنی چەپ</string>
<string name="right_joycon">جۆیکۆنی ڕاست</string>
<string name="gamecube_controller">کۆنتڕۆڵکەری گەیمکیوب</string>
<string name="invert_axis">پێچەوانەکردنەوەی تەوەر</string>
<string name="invert_button">دوگمەی پێچەوانەکردنەوە</string>
<string name="toggle_button">دوگمەی گۆڕین</string>
<string name="turbo_button">دوگمەی تۆربۆ</string>
<string name="set_threshold">دانانی ئاستەنگ</string>
<string name="toggle_axis">گۆڕینی تەوەر</string>
<string name="connected">پەیوەستە</string>
<string name="vibration">لەرزین</string>
<string name="profile">پڕۆفایل</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">بنەڕەت</string> <string name="slider_default">بنەڕەت</string>
<string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string> <string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string>
@ -223,8 +182,6 @@
<string name="install">دامەزراندن</string> <string name="install">دامەزراندن</string>
<string name="delete">سڕینەوە</string> <string name="delete">سڕینەوە</string>
<string name="clear">سڕینەوە</string> <string name="clear">سڕینەوە</string>
<string name="save">هەڵگرتن</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string> <string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string>
<string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string> <string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string>
@ -271,6 +228,7 @@
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string> <string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string> <string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
<string name="touchscreen">رووکاری لەمسی</string> <string name="touchscreen">رووکاری لەمسی</string>
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string> <string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
<!-- Software keyboard --> <!-- Software keyboard -->

View File

@ -84,8 +84,7 @@
<string name="manage_save_data">Speicherdaten verwalten</string> <string name="manage_save_data">Speicherdaten verwalten</string>
<string name="manage_save_data_description">Speicherdaten gefunden. Bitte wähle unten eine Option aus.</string> <string name="manage_save_data_description">Speicherdaten gefunden. Bitte wähle unten eine Option aus.</string>
<string name="import_save_warning">Speicherdaten importieren</string> <string name="import_save_warning">Speicherdaten importieren</string>
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei. <string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei. Wirklich fortfahren?</string>
Wirklich fortfahren?</string>
<string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string> <string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string>
<string name="save_files_importing">Importiere Speicherdaten...</string> <string name="save_files_importing">Importiere Speicherdaten...</string>
<string name="save_files_exporting">Exportiere Speicherdaten...</string> <string name="save_files_exporting">Exportiere Speicherdaten...</string>
@ -113,8 +112,6 @@ Wirklich fortfahren?</string>
<string name="share_save_file">Speicherdaten teilen</string> <string name="share_save_file">Speicherdaten teilen</string>
<string name="game_folders">Spiele-Ordner</string> <string name="game_folders">Spiele-Ordner</string>
<string name="add_game_folder">Spiele-Ordner hinzufügen</string> <string name="add_game_folder">Spiele-Ordner hinzufügen</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="applets_error_firmware">Firmware nicht installiert</string> <string name="applets_error_firmware">Firmware nicht installiert</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia ist nicht real</string> <string name="gaia_is_not_real">Gaia ist nicht real</string>
@ -155,9 +152,9 @@ Wirklich fortfahren?</string>
<string name="frame_limit_slider">Geschwindkeitsbegrenzung in Prozent</string> <string name="frame_limit_slider">Geschwindkeitsbegrenzung in Prozent</string>
<string name="frame_limit_slider_description">Gibt die prozentuale Geschwindigkeit der Emulation an. 100% sind normal. Werte darüber oder drunter werden die Geschwindigkeit entsprechend verändern.</string> <string name="frame_limit_slider_description">Gibt die prozentuale Geschwindigkeit der Emulation an. 100% sind normal. Werte darüber oder drunter werden die Geschwindigkeit entsprechend verändern.</string>
<string name="cpu_accuracy">CPU-Genauigkeit</string> <string name="cpu_accuracy">CPU-Genauigkeit</string>
<!-- System settings strings -->
<string name="use_docked_mode">Gedockter Modus</string> <string name="use_docked_mode">Gedockter Modus</string>
<string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung. <string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung. Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
<string name="emulated_region">Emulierte Region</string> <string name="emulated_region">Emulierte Region</string>
<string name="emulated_language">Emulierte Sprache</string> <string name="emulated_language">Emulierte Sprache</string>
<string name="select_rtc_date">RTC-Datum auswählen</string> <string name="select_rtc_date">RTC-Datum auswählen</string>
@ -183,49 +180,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="audio_volume">Lautstärke</string> <string name="audio_volume">Lautstärke</string>
<string name="audio_volume_description">Legt die Lautstärke der Audioausgabe fest.</string> <string name="audio_volume_description">Legt die Lautstärke der Audioausgabe fest.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Plus</string>
<string name="button_minus">Minus</string>
<string name="button_home">Home</string>
<string name="button_capture">Screenshot</string>
<string name="dpad">Steuerkreuz</string>
<string name="up">Hoch</string>
<string name="down">Runter</string>
<string name="left">Links</string>
<string name="right">Rechts</string>
<string name="left_stick">Linker Stick</string>
<string name="right_stick">Rechter Stick</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Gedrückt</string>
<string name="range">Radius</string>
<string name="deadzone">Deadzone</string>
<string name="modifier">Modifikator</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Ungültig</string>
<string name="unknown">Unbekannt</string>
<string name="pro_controller">Pro-Controller</string>
<string name="handheld">Handheld</string>
<string name="dual_joycons">Zwei Joycons</string>
<string name="left_joycon">Linker Joycon</string>
<string name="right_joycon">Rechter Joycon</string>
<string name="gamecube_controller">GameCube-Controller</string>
<string name="invert_axis">Achsen umkehren</string>
<string name="invert_button">Knopf invertieren</string>
<string name="toggle_button">Taste umschalten</string>
<string name="turbo_button">Turbo Knopf</string>
<string name="set_threshold">Schwellwert festlegen</string>
<string name="toggle_axis">Achse umschalten</string>
<string name="connected">Verbunden</string>
<string name="vibration">Vibration</string>
<string name="profile">Profil</string>
<string name="use_global_input_configuration">Verwende globale Eingabe-Konfiguration</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Standard</string> <string name="slider_default">Standard</string>
<string name="ini_saved">Einstellungen gespeichert</string> <string name="ini_saved">Einstellungen gespeichert</string>
@ -256,11 +210,7 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="export_success">Erfolgreich exportiert</string> <string name="export_success">Erfolgreich exportiert</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Löschen</string> <string name="clear">Löschen</string>
<string name="global">Global</string>
<string name="custom">Benutzerdefiniert</string> <string name="custom">Benutzerdefiniert</string>
<string name="use_global_setting">Globale Einstellung nutzen</string>
<string name="save">Speichern</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">GPU-Treiber auswählen</string> <string name="select_gpu_driver">GPU-Treiber auswählen</string>
<string name="select_gpu_driver_title">Möchtest du deinen aktuellen GPU-Treiber ersetzen?</string> <string name="select_gpu_driver_title">Möchtest du deinen aktuellen GPU-Treiber ersetzen?</string>
@ -280,7 +230,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string> <string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string>
<string name="preferences_audio">Audio</string> <string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Ausgabe-Engine, Lautstärke</string> <string name="preferences_audio_description">Ausgabe-Engine, Lautstärke</string>
<string name="preferences_controls">Steuerung</string>
<string name="preferences_theme">Theme und Farbe</string> <string name="preferences_theme">Theme und Farbe</string>
<string name="preferences_debug">Debug</string> <string name="preferences_debug">Debug</string>
<!-- Game properties --> <!-- Game properties -->
@ -288,14 +237,13 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="info_description">Programm-ID, Entwickler, Version</string> <string name="info_description">Programm-ID, Entwickler, Version</string>
<string name="per_game_settings">Spieleinstellungen</string> <string name="per_game_settings">Spieleinstellungen</string>
<string name="per_game_settings_description">Einstellungen für dieses Spiel ändern</string> <string name="per_game_settings_description">Einstellungen für dieses Spiel ändern</string>
<string name="launch_options">Starteinstellung</string>
<string name="path">Pfad</string> <string name="path">Pfad</string>
<string name="program_id">Programm-ID</string> <string name="program_id">Programm-ID</string>
<string name="developer">Entwickler</string> <string name="developer">Entwickler</string>
<string name="version">Version</string> <string name="version">Version</string>
<string name="copy_details">Details kopieren</string> <string name="copy_details">Details kopieren</string>
<string name="add_ons">Add-ons</string> <string name="add_ons">Add-ons</string>
<string name="add_ons_description">Mods, Updates und DLCs aktivieren oder deaktivieren</string> <string name="add_ons_description">Mods, Updates und DLC aktivieren oder deaktivieren</string>
<string name="clear_shader_cache">Shader-Cache löschen</string> <string name="clear_shader_cache">Shader-Cache löschen</string>
<string name="clear_shader_cache_description">Löscht alle für dieses Spiel erstellten Shader</string> <string name="clear_shader_cache_description">Löscht alle für dieses Spiel erstellten Shader</string>
<string name="cleared_shaders_successfully">Shader erfolgreich gelöscht</string> <string name="cleared_shaders_successfully">Shader erfolgreich gelöscht</string>
@ -304,19 +252,10 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="save_data_description">Importiert oder exportiert Speicherdaten für dieses Spiel</string> <string name="save_data_description">Importiert oder exportiert Speicherdaten für dieses Spiel</string>
<string name="delete_save_data">Speicherdaten löschen</string> <string name="delete_save_data">Speicherdaten löschen</string>
<string name="delete_save_data_description">Löscht alle Speicherdaten für dieses Spiel</string> <string name="delete_save_data_description">Löscht alle Speicherdaten für dieses Spiel</string>
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel. <string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel. Wirklich fortfahren?</string>
Wirklich fortfahren?</string>
<string name="save_data_deleted_successfully">Speicherdaten erfolgreich gelöscht</string> <string name="save_data_deleted_successfully">Speicherdaten erfolgreich gelöscht</string>
<string name="select_content_type">Inhaltstyp</string>
<string name="updates_and_dlc">Spiel-Updates und DLCs</string>
<string name="mods_and_cheats">Mods und Cheats</string>
<string name="invalid_directory">Ungültiges Verzeichnis</string> <string name="invalid_directory">Ungültiges Verzeichnis</string>
<string name="addon_installed_successfully">Add-on erfolgreich installiert</string> <string name="addon_installed_successfully">Add-on erfolgreich installiert</string>
<string name="verify_integrity">Integrität prüfen</string>
<string name="verifying">Überprüfe...</string>
<string name="verify_success">Integritätsüberprüfung erfolgreich!</string>
<string name="verify_failure">Integritätsüberprüfung fehlgeschlagen!</string>
<string name="verify_no_result">Integritätsüberprüfung konnte nicht durchgeführt werden</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">Das ROM ist verschlüsselt</string> <string name="loader_error_encrypted">Das ROM ist verschlüsselt</string>
<string name="loader_error_encrypted_keys_description"><![CDATA[Bitte stelle sicher dass die <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> Datei installiert ist, damit Spiele entschlüsselt werden können.]]></string> <string name="loader_error_encrypted_keys_description"><![CDATA[Bitte stelle sicher dass die <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> Datei installiert ist, damit Spiele entschlüsselt werden können.]]></string>
@ -339,8 +278,6 @@ Wirklich fortfahren?</string>
<string name="emulation_unpause">Emulation fortsetzen</string> <string name="emulation_unpause">Emulation fortsetzen</string>
<string name="emulation_input_overlay">Overlay-Optionen</string> <string name="emulation_input_overlay">Overlay-Optionen</string>
<string name="touchscreen">Touchscreen</string> <string name="touchscreen">Touchscreen</string>
<string name="lock_drawer">Menü sperren</string>
<string name="unlock_drawer">Menü entsperren</string>
<string name="load_settings">Lade Einstellungen...</string> <string name="load_settings">Lade Einstellungen...</string>
@ -420,7 +357,7 @@ Wirklich fortfahren?</string>
<string name="ratio_default">Standard (16:9)</string> <string name="ratio_default">Standard (16:9)</string>
<string name="ratio_force_four_three">4:3 erzwingen</string> <string name="ratio_force_four_three">4:3 erzwingen</string>
<string name="ratio_force_twenty_one_nine">21:9 erzwingen</string> <string name="ratio_force_twenty_one_nine">21:9 erzwingen</string>
<string name="ratio_force_sixteen_ten">16:10 erzwingen</string> <string name="ratio_force_sixteen_ten">Erzwinge 16:10</string>
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string> <string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
<!-- CPU Accuracy --> <!-- CPU Accuracy -->

View File

@ -137,11 +137,6 @@
<item quantity="other">%d archivos de guardado importados con éxito.</item> <item quantity="other">%d archivos de guardado importados con éxito.</item>
</plurals> </plurals>
<string name="no_save_data_found">No hay archivos de guardado</string> <string name="no_save_data_found">No hay archivos de guardado</string>
<string name="verify_installed_content">Verificar contenidos instalados</string>
<string name="verify_installed_content_description">Comprueba todo el contenido instalado por si hubiese alguno corrupto</string>
<string name="keys_missing">Faltan las claves de encriptación</string>
<string name="keys_missing_description">El firmware y los juegos no se pueden desencriptar</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Ejecutador de applet</string> <string name="applets">Ejecutador de applet</string>
@ -207,6 +202,7 @@
<string name="cpu_accuracy">Precisión de CPU</string> <string name="cpu_accuracy">Precisión de CPU</string>
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="use_docked_mode">Modo Sobremesa</string> <string name="use_docked_mode">Modo Sobremesa</string>
<string name="use_docked_mode_description">Incrementa la resolución al coste de reducir el rendimiento. El Modo Portátil es usado cuando está desactivado, reduciendo la resolución y mejorando así el rendimiento.</string> <string name="use_docked_mode_description">Incrementa la resolución al coste de reducir el rendimiento. El Modo Portátil es usado cuando está desactivado, reduciendo la resolución y mejorando así el rendimiento.</string>
<string name="emulated_region">Región emulada</string> <string name="emulated_region">Región emulada</string>
@ -224,8 +220,6 @@
<string name="renderer_screen_layout">Orientación</string> <string name="renderer_screen_layout">Orientación</string>
<string name="renderer_aspect_ratio">Relación de aspecto</string> <string name="renderer_aspect_ratio">Relación de aspecto</string>
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string> <string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
<string name="fsr_sharpness">Nitidez FSR</string>
<string name="fsr_sharpness_description">Ajusta la intensidad del filtro de enfoque al usar el contraste dinámico de FSR.</string>
<string name="renderer_anti_aliasing">Método anti-aliasing</string> <string name="renderer_anti_aliasing">Método anti-aliasing</string>
<string name="renderer_force_max_clock">Forzar velocidad al máximo (solo Adreno)</string> <string name="renderer_force_max_clock">Forzar velocidad al máximo (solo Adreno)</string>
<string name="renderer_force_max_clock_description">Fuerza a la GPU a ejecutarse a la velocidad máxima de reloj posible (se seguirán aplicando restricciones térmicas).</string> <string name="renderer_force_max_clock_description">Fuerza a la GPU a ejecutarse a la velocidad máxima de reloj posible (se seguirán aplicando restricciones térmicas).</string>
@ -253,49 +247,6 @@
<string name="audio_volume">Volumen</string> <string name="audio_volume">Volumen</string>
<string name="audio_volume_description">Especifica el volumen de la salida de audio.</string> <string name="audio_volume_description">Especifica el volumen de la salida de audio.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Más</string>
<string name="button_minus">Menos</string>
<string name="button_home">Home</string>
<string name="button_capture">Captura</string>
<string name="dpad">Cruceta</string>
<string name="up">Arriba</string>
<string name="down">Abajo</string>
<string name="left">Izquierda</string>
<string name="right">Derecha</string>
<string name="left_stick">Palanca izquierda</string>
<string name="right_stick">Palanca derecha</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Presionado</string>
<string name="range">Rango</string>
<string name="deadzone">Zona muerta</string>
<string name="modifier">Modificador</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">No válido</string>
<string name="unknown">Desconocido</string>
<string name="pro_controller">Controlador Pro</string>
<string name="handheld">Portátil</string>
<string name="dual_joycons">Joycons duales</string>
<string name="left_joycon">Joycon izquierdo</string>
<string name="right_joycon">Joycon derecho</string>
<string name="gamecube_controller">Controlador de GameCube</string>
<string name="invert_axis">Invertir ejes</string>
<string name="invert_button">Invertir botón</string>
<string name="toggle_button">Alternar botón</string>
<string name="turbo_button">Botón turbo</string>
<string name="set_threshold">Configurar umbral</string>
<string name="toggle_axis">Alternar ejes</string>
<string name="connected">Conectado</string>
<string name="vibration">Vibración</string>
<string name="profile">Perfil</string>
<string name="use_global_input_configuration">Utilizar la configuración global de entrada</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Predeterminado</string> <string name="slider_default">Predeterminado</string>
<string name="ini_saved">Configuración guardada</string> <string name="ini_saved">Configuración guardada</string>
@ -330,11 +281,6 @@
<string name="custom">Perzonalizado</string> <string name="custom">Perzonalizado</string>
<string name="notice">Aviso</string> <string name="notice">Aviso</string>
<string name="import_complete">La importación se completó</string> <string name="import_complete">La importación se completó</string>
<string name="more_options">Más opciones</string>
<string name="use_global_setting">Usar configuración global</string>
<string name="operation_completed_successfully">Operación completada con éxito</string>
<string name="save">Guardar</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Seleccionar driver GPU</string> <string name="select_gpu_driver">Seleccionar driver GPU</string>
<string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string> <string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string>
@ -355,7 +301,6 @@
<string name="preferences_graphics_description">Nivel de precisión, resolución, caché de shaders</string> <string name="preferences_graphics_description">Nivel de precisión, resolución, caché de shaders</string>
<string name="preferences_audio">Audio</string> <string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Motor de salida, volumen</string> <string name="preferences_audio_description">Motor de salida, volumen</string>
<string name="preferences_controls">Controles</string>
<string name="preferences_theme">Tema y color</string> <string name="preferences_theme">Tema y color</string>
<string name="preferences_debug">Depuración</string> <string name="preferences_debug">Depuración</string>
<string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string> <string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string>
@ -397,17 +342,6 @@
<string name="verifying_content">Verificando contenido...</string> <string name="verifying_content">Verificando contenido...</string>
<string name="content_install_notice">Aviso importante de contenido</string> <string name="content_install_notice">Aviso importante de contenido</string>
<string name="content_install_notice_description">El contenido seleccionado no es de este juego.\n¿Instalar de todas maneras?</string> <string name="content_install_notice_description">El contenido seleccionado no es de este juego.\n¿Instalar de todas maneras?</string>
<string name="confirm_uninstall">Confirmar desinstalación</string>
<string name="confirm_uninstall_description">¿De verdad quieres desinstalar este addon?</string>
<string name="verify_integrity">Verificar integridad</string>
<string name="verifying">Verificando...</string>
<string name="verify_success">¡La verificación de integridad ha sido un éxito!</string>
<string name="verify_failure">¡Verificación de integridad fallida!</string>
<string name="verify_failure_description">Los contenidos del archivo pueden estar corruptos</string>
<string name="verify_no_result">No se pudo ejecutar la verificación de integridad</string>
<string name="verify_no_result_description">No se ha podido comprobar la validez de los contenidos del archivo</string>
<string name="verification_failed_for">La verificación falló en los siguientes archivos:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">Su ROM está encriptada</string> <string name="loader_error_encrypted">Su ROM está encriptada</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga las guías para redumpear<a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de juegos</a> o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga las guías para redumpear<a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de juegos</a> o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
@ -421,7 +355,6 @@
<string name="emulation_exit">Salir de la emulación</string> <string name="emulation_exit">Salir de la emulación</string>
<string name="emulation_done">Hecho</string> <string name="emulation_done">Hecho</string>
<string name="emulation_fps_counter">Contador de FPS</string> <string name="emulation_fps_counter">Contador de FPS</string>
<string name="emulation_thermal_indicator">Indicador térmico</string>
<string name="emulation_toggle_controls">Alternar controles</string> <string name="emulation_toggle_controls">Alternar controles</string>
<string name="emulation_rel_stick_center">Centro relativo del stick</string> <string name="emulation_rel_stick_center">Centro relativo del stick</string>
<string name="emulation_dpad_slide">Deslizamiento de la cruceta</string> <string name="emulation_dpad_slide">Deslizamiento de la cruceta</string>
@ -437,8 +370,6 @@
<string name="emulation_unpause">Despausar emulación</string> <string name="emulation_unpause">Despausar emulación</string>
<string name="emulation_input_overlay">Opciones de overlay</string> <string name="emulation_input_overlay">Opciones de overlay</string>
<string name="touchscreen">Pantalla táctil</string> <string name="touchscreen">Pantalla táctil</string>
<string name="lock_drawer">Bloquear menú cajón</string>
<string name="unlock_drawer">Desbloquear menú cajón</string>
<string name="load_settings">Cargando configuración...</string> <string name="load_settings">Cargando configuración...</string>
@ -583,12 +514,6 @@
<string name="mute">Mutear</string> <string name="mute">Mutear</string>
<string name="unmute">Desmutear</string> <string name="unmute">Desmutear</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Alineación vertical</string>
<string name="top">Arriba</string>
<string name="center">Centro</string>
<string name="bottom">Abajo</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Licencias</string> <string name="licenses">Licencias</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string> <string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string>

View File

@ -1,595 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_disclaimer">این نرم‌افزار برای اجرای بازی‌های کنسول نینتندو سوییچ است. هیچ بازی یا کلیدی داخل برنامه گنجانده نشده است.&lt;br /&gt;&lt;br /&gt;قبل از شروع، لطفاً فایل <![CDATA[ prod.keys ]]> خود را در حافظه دستگاه خود پیدا کنید.&lt;br /&gt; &lt;br /&gt;<![CDATA[بیشتر بدانید]]></string>
<string name="notice_notification_channel_name">اطلاعیه‌ها و خطاها</string>
<string name="notice_notification_channel_description">وقتی مشکلی پیش می‌آید در اعلان‌ها نشان می‌دهد.</string>
<string name="notification_permission_not_granted">مجوز اعلان داده نشده!</string>
<!-- Setup strings -->
<string name="welcome">خوش آمدید!</string>
<string name="welcome_description">نحوه راه اندازی &lt;b>yuzu&lt;/b> و شبیه سازی را بیاموزید.</string>
<string name="get_started">شروع کنید</string>
<string name="keys">کلیدها</string>
<string name="keys_description">فایل &lt;b>prod.keys&lt;/b> خود را با دکمه زیر انتخاب کنید.</string>
<string name="select_keys">انتخاب کلیدها</string>
<string name="games">بازی‌ها</string>
<string name="games_description">پوشه &lt;b>بازی‌ها&lt;/b> خود را با دکمه زیر انتخاب کنید.</string>
<string name="done">انجام شد</string>
<string name="done_description">همه چیز آماده است.\nاز بازی‌های خود لذت ببرید!</string>
<string name="text_continue">ادامه</string>
<string name="next">بعدی</string>
<string name="back">قبلی</string>
<string name="add_games">افزودن بازی‌ها</string>
<string name="add_games_description">پوشه بازی‌های خود را انتخاب کنید</string>
<string name="step_complete">تکمیل شد!</string>
<!-- Home strings -->
<string name="home_games">بازی‌ها</string>
<string name="home_search">جستجو</string>
<string name="home_settings">تنظیمات</string>
<string name="empty_gamelist">هیچ فایلی پیدا نشد یا هنوز پوشه بازی‌ها انتخاب نشده است.</string>
<string name="search_and_filter_games">جستجو و فیلتر کردن بازی‌ها</string>
<string name="select_games_folder">پوشه بازی‌ها را انتخاب کنید</string>
<string name="manage_game_folders">مدیریت پوشه‌های بازی</string>
<string name="select_games_folder_description">به yuzu اجازه می دهد تا لیست باز‌ی‌ها را پر کند</string>
<string name="add_games_warning">از انتخاب پوشه بازی رد می‌شوید؟</string>
<string name="add_games_warning_description">اگر پوشه‌ای انتخاب نشده باشد، بازی‌ها در لیست بازی‌ها نمایش داده نمی‌شوند.</string>
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
<string name="home_search_games">جستجو در بازی‌ها</string>
<string name="search_settings">جستجو در تنظیمات</string>
<string name="games_dir_selected">پوشه بازی‌ها انتخاب شد</string>
<string name="install_prod_keys">نصب prod.keys</string>
<string name="install_prod_keys_description">برای رمزگشایی بازی‌های فروشگاهی مورد نیاز است</string>
<string name="install_prod_keys_warning">افزودن کلیدها را رد می‌کنید؟</string>
<string name="install_prod_keys_warning_description">کلیدهای معتبر برای شبیه‌سازی بازی‌های فروشگاهی مورد نیاز است. اگر ادامه دهید، فقط برنامه‌های سیستم ریزکامپیوتری کار خواهند کرد.</string>
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
<string name="notifications">اعلان‌ها</string>
<string name="notifications_description">مجوز اعلان را با دکمه زیر اعطا کنید.</string>
<string name="give_permission">اجازه بدهید</string>
<string name="notification_warning">دادن مجوز اعلان را رد می‌کنید؟</string>
<string name="notification_warning_description">yuzu نمی‌تواند شما را از اطلاعات مهم مطلع کند.</string>
<string name="permission_denied">دسترسی داده نشد</string>
<string name="permission_denied_description">شما بارها این دسترسی را رد کردید و اکنون باید آن را به صورت دستی در تنظیمات سیستم اعطا کنید.</string>
<string name="about">درباره</string>
<string name="about_description">نسخه ساخت، عوامل و موارد دیگر</string>
<string name="warning_help">کمک</string>
<string name="warning_skip">رد کردن</string>
<string name="warning_cancel">لغو</string>
<string name="install_amiibo_keys">کلیدهای Amiibo را نصب کنید</string>
<string name="install_amiibo_keys_description">برای استفاده از Amiibo در بازی لازم است</string>
<string name="invalid_keys_file">فایل کلیدهای نامعتبر انتخاب شد</string>
<string name="install_keys_success">کلیدها با موفقیت نصب شدند</string>
<string name="reading_keys_failure">خطا در خواندن کلیدهای رمزگذاری</string>
<string name="install_prod_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند keys. باشد و دوباره امتحان کنید.</string>
<string name="install_amiibo_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند bin. باشد و دوباره امتحان کنید.</string>
<string name="invalid_keys_error">کلیدهای رمزگذاری نامعتبر</string>
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="install_keys_failure_description">فایل انتخابی نادرست یا خراب است. لطفا کلیدهای خود را دوباره استخراج کنید.</string>
<string name="gpu_driver_manager">مدیریت درایور پردازنده گرافیکی</string>
<string name="install_gpu_driver">نصب درایور پردازنده گرافیکی</string>
<string name="install_gpu_driver_description">درایورهای جایگزین را برای عملکرد یا دقت بهتر نصب کنید</string>
<string name="advanced_settings">تنظیمات پیشرفته</string>
<string name="advanced_settings_game">تنظیمات پیشرفته: %1$s</string>
<string name="settings_description">پیکربندی تنظیمات شبیه‌ساز</string>
<string name="search_recently_played">آخرین بازی شده‌ها</string>
<string name="search_recently_added">به تازگی اضافه شده‌ها</string>
<string name="search_retail">فروشگاهی</string>
<string name="search_homebrew">ریزکامپیوتری</string>
<string name="open_user_folder">باز کردن پوشه yuzu</string>
<string name="open_user_folder_description">مدیریت فایل‌های داخلی yuzu</string>
<string name="theme_and_color_description">تغییر ظاهر برنامه</string>
<string name="no_file_manager">هیچ برنامه مدیریت فایلی پیدا نشد</string>
<string name="notification_no_directory_link">پوشه yuzu باز نشد</string>
<string name="notification_no_directory_link_description">لطفاً پوشه کاربری را با استفاده از پنل کناری برنامه مدیریت فایل به صورت دستی پیدا کنید.</string>
<string name="manage_save_data">مدیریت ذخیره داده‌ها</string>
<string name="manage_save_data_description">ذخیره داده یافت شد. لطفاً یکی از گزینه‌های زیر را انتخاب کنید.</string>
<string name="import_save_warning">وارد کردن ذخیره داده‌ها</string>
<string name="import_save_warning_description">این کار تمام داده‌های ذخیره موجود را با فایل ارائه شده بازنویسی می کند. آیا مطمئن هستید که می‌خواهید ادامه دهید؟</string>
<string name="import_export_saves_description">فایل‌های ذخیره داده را وارد یا صادر کنید</string>
<string name="save_files_importing">در حال وارد کردن فایل‌های ذخیره…</string>
<string name="save_files_exporting">در حال صادر کردن فایل‌های ذخیره…</string>
<string name="save_file_imported_success">با موفقیت وارد شد</string>
<string name="save_file_invalid_zip_structure">ساختار پوشه ذخیره نامعتبر است</string>
<string name="save_file_invalid_zip_structure_description">اولین نام زیرپوشه باید شناسه عنوان بازی باشد.</string>
<string name="import_saves">وارد کردن</string>
<string name="export_saves">صادر کردن</string>
<string name="install_firmware">نصب ثابت‌افزار</string>
<string name="install_firmware_description">ثابت‌افزار باید در آرشیو ZIP باشد و برای اجرای برخی بازی‌ها نیاز است</string>
<string name="firmware_installing">در حال نصب ثابت‌افزار</string>
<string name="firmware_installed_success">ثابت‌افزار با موفقیت نصب شد</string>
<string name="firmware_installed_failure">نصب ثابت‌افزار ناموفق بود</string>
<string name="firmware_installed_failure_description">مطمئن شوید که فایل‌های nca ثابت‌افزار در ریشه فایل فشرده هستند و دوباره امتحان کنید.</string>
<string name="share_log">اشتراک گزارش اشکال زدایی</string>
<string name="share_log_description">فایل گزارش yuzu را برای رفع اشکال به اشتراک بگذارید</string>
<string name="share_log_missing">هیچ فایل گزارشی یافت نشد</string>
<string name="install_game_content">نصب محتوای بازی</string>
<string name="install_game_content_description">آپدیت های بازی یا DLC را نصب کنید</string>
<string name="installing_game_content">در حال نصب محتوا...</string>
<string name="install_game_content_failure">خطا در نصب فایل(ها) در NAND</string>
<string name="install_game_content_failure_description">لطفاً مطمئن شوید که محتوا(های) معتبر هستند و فایل prod.keys نصب شده است.</string>
<string name="install_game_content_failure_base">نصب فایل اصلی بازی‌ها برای جلوگیری از ناسازگاری‌های احتمالی مجاز نیست.</string>
<string name="install_game_content_failure_file_extension">فقط محتوای NSP و XCI پشتیبانی می شود. لطفاً مطمئن شوید که محتوا(های) بازی معتبر است.</string>
<string name="install_game_content_failed_count">%1$dخطا(های) نصب</string>
<string name="install_game_content_success">محتوا(های) بازی با موفقیت نصب شد</string>
<string name="install_game_content_success_install">%1$dبا موفقیت نصب شد</string>
<string name="install_game_content_success_overwrite">%1$dبا موفقیت بازنویسی شد</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">درایورهای سفارشی پشتیبانی نمی‌شوند</string>
<string name="custom_driver_not_supported_description">بارگیری درایور سفارشی در حال حاضر برای این دستگاه پشتیبانی نمی‌شود.\nاین گزینه را دوباره در آینده بررسی کنید تا ببینید آیا پشتیبانی اضافه شده است یا خیر!</string>
<string name="manage_yuzu_data">مدیریت داده‌های yuzu</string>
<string name="manage_yuzu_data_description">وارد کردن/صادر کردن ثابت‌افزار، کلیدها، داده‌های کاربر، و موارد دیگر!</string>
<string name="share_save_file">اشتراک گذاری فایل ذخیره</string>
<string name="export_save_failed">ذخیره صادر نشد</string>
<string name="game_folders">پوشه‌های بازی</string>
<string name="deep_scan">بررسی عمیق</string>
<string name="add_game_folder">افزودن پوشه بازی</string>
<string name="folder_already_added">این پوشه قبلاً اضافه شده است!</string>
<string name="game_folder_properties">ویژگی‌های پوشه بازی</string>
<plurals name="saves_import_failed">
<item quantity="one">وارد کردن ذخیره %d ناموفق بود</item>
<item quantity="other">وارد کردن ذخیره‌های %d ناموفق بود</item>
</plurals>
<plurals name="saves_import_success">
<item quantity="one">ذخیره %d با موفقیت وارد گردید</item>
<item quantity="other">ذخیره‌های %d با موفقیت وارد گردید</item>
</plurals>
<string name="no_save_data_found">هیچ داده ذخیره‌ای یافت نشد</string>
<string name="verify_installed_content">بررسی محتوای نصب شده</string>
<string name="verify_installed_content_description">تمام محتوای نصب شده را از نظر خرابی بررسی می‌کند</string>
<string name="keys_missing">کلیدهای رمزگذاری وجود ندارند</string>
<string name="keys_missing_description">ثابت‌افزار و بازی‌های فروشگاهی قابل رمزگشایی نیستند</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings -->
<string name="applets">اجراکننده برنامک</string>
<string name="applets_description">برنامک‌های سیستم را با استفاده از ثابت‌افزار نصب شده راه اندازی کنید</string>
<string name="applets_error_firmware">ثابت‌افزار نصب نیست</string>
<string name="applets_error_applet">برنامک در دسترس نیست</string>
<string name="applets_error_description"><![CDATA[لطفاً مطمئن شوید که فایل <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> و <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">ثابت‌افزار</a> شما نصب شده است و دوباره امتحان کنید.]]></string>
<string name="album_applet">آلبوم</string>
<string name="album_applet_description">تصاویر ذخیره شده در پوشه اسکرین شات‌های کاربر را با نمایشگر عکس سیستم مشاهده کنید</string>
<string name="mii_edit_applet">ویرایش Mii</string>
<string name="mii_edit_applet_description">نمایش و ویرایش Miis با استفاده از ویرایشگر سیستم</string>
<string name="cabinet_applet">قفسه</string>
<string name="cabinet_applet_description">داده‌های ذخیره شده در amiibo را ویرایش و حذف کنید</string>
<string name="cabinet_launcher">اجرا کننده قفسه</string>
<string name="cabinet_nickname_and_owner">تنظیمات نام مستعار و مالک</string>
<string name="cabinet_game_data_eraser">حذف کننده داده بازی</string>
<string name="cabinet_restorer">بازگرداننده</string>
<string name="cabinet_formatter">فرم دهنده</string>
<!-- About screen strings -->
<string name="gaia_is_not_real">Gaia isn\'t real</string>
<string name="copied_to_clipboard">در کلیپ‌بورد کپی شد</string>
<string name="about_app_description">یک شبیه‌ساز سوئیچ منبع باز</string>
<string name="contributors">مشارکت کنندگان</string>
<string name="contributors_description">Made with \u2764 from the yuzu team</string>
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
<string name="licenses_description">پروژه‌هایی که yuzu را برای اندروید ممکن می‌سازند</string>
<string name="build">ساخت</string>
<string name="user_data">داده کاربر</string>
<string name="user_data_description">همه داده‌های برنامه را وارد/صادر کنید.\n\nهنگام وارد کردن داده‌های کاربر، همه داده‌های کاربر موجود حذف خواهند شد!</string>
<string name="exporting_user_data">در حال صادر کردن داده‌های کاربر...</string>
<string name="importing_user_data">در حال وارد کردن داده‌های کاربر...</string>
<string name="import_user_data">وارد کردن داده کاربر</string>
<string name="invalid_yuzu_backup">پشتیبان نامعتبر yuzu</string>
<string name="user_data_export_success">داده‌های کاربر با موفقیت صادر شد</string>
<string name="user_data_import_success">داده‌های کاربر با موفقیت وارد شد</string>
<string name="user_data_export_cancelled">صدور لغو شد</string>
<string name="user_data_import_failed_description">مطمئن شوید که پوشه‌های داده کاربر در ریشه پوشه zip و حاوی یک فایل پیکربندی در config/config.ini هستند سپس دوباره امتحان کنید.</string>
<string name="support_link">https://discord.gg/u77vRWY</string>
<string name="website_link">https://yuzu-emu.org/</string>
<string name="github_link">https://github.com/yuzu-emu</string>
<!-- Early access upgrade strings -->
<string name="early_access">دسترسی زودهنگام</string>
<string name="get_early_access">دسترسی زودهنگام را دریافت کنید</string>
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
<string name="get_early_access_description">ویژگی‌های پیشرفته، دسترسی زودهنگام به بروزرسانی‌ها و موارد دیگر</string>
<string name="early_access_benefits">مزایای دسترسی زودهنگام</string>
<string name="cutting_edge_features">ویژگی‌های پیشرفته</string>
<string name="early_access_updates">دسترسی زودهنگام به بروزرسانی‌ها</string>
<string name="no_manual_installation">بدون نصب دستی</string>
<string name="prioritized_support">پشتیبانی اولویت بندی شده</string>
<string name="helping_game_preservation">کمک به حفظ بازی</string>
<string name="our_eternal_gratitude">سپاس ابدی ما</string>
<string name="are_you_interested">مشتاق هستید؟</string>
<!-- General settings strings -->
<string name="frame_limit_enable">محدودیت سرعت</string>
<string name="frame_limit_enable_description">سرعت شبیه‌سازی را به درصد مشخصی از سرعت عادی محدود می‌کند.</string>
<string name="frame_limit_slider">درصد محدودیت سرعت</string>
<string name="frame_limit_slider_description">درصدی را برای محدود کردن سرعت شبیه‌سازی مشخص می‌کند. 100% سرعت عادی است. مقادیر بیشتر یا کمتر باعث افزایش یا کاهش سرعت می‌شود.</string>
<string name="cpu_backend">پشتگاه پردازنده</string>
<string name="cpu_accuracy">دقت پردازنده</string>
<string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="device_name">نام دستگاه</string>
<string name="use_docked_mode">حالت متصل</string>
<string name="use_docked_mode_description">وضوح را افزایش می‌دهد، عملکرد را کاهش می‌دهد. حالت دستی زمانی استفاده می‌شود که این گزینه غیرفعال است، و باعث کاهش وضوح و افزایش عملکرد می‌شود.</string>
<string name="emulated_region">منطقه شبیه‌سازی</string>
<string name="emulated_language">زبان شبیه‌سازی</string>
<string name="select_rtc_date">انتخاب تاریخ</string>
<string name="select_rtc_time">انتخاب زمان</string>
<string name="use_custom_rtc">زمان سفارشی</string>
<string name="use_custom_rtc_description">به شما امکان می‌دهد یک ساعت سفارشی جدا از زمان فعلی سیستم خود تنظیم کنید.</string>
<string name="set_custom_rtc">تنظیم زمان سفارشی</string>
<!-- Graphics settings strings -->
<string name="renderer_accuracy">سطح دقت</string>
<string name="renderer_resolution">وضوح تصویر (دستی/متصل)</string>
<string name="renderer_vsync">حالت VSync</string>
<string name="renderer_screen_layout">جهت‌گیری صفحه</string>
<string name="renderer_aspect_ratio">نسبت ابعاد</string>
<string name="renderer_scaling_filter">فیلتر تطبیق پنجره</string>
<string name="fsr_sharpness">وضوح FSR</string>
<string name="fsr_sharpness_description">تعیین می‌کند که هنگام استفاده از کنتراست پویا FSR، تصویر چقدر واضح به نظر می‌رسد</string>
<string name="renderer_anti_aliasing">حالت ضدپلگی</string>
<string name="renderer_force_max_clock">اجبار به حداکثر فرکانس (فقط برای Adreno)</string>
<string name="renderer_force_max_clock_description">پردازنده گرافیکی را مجبور می‌کند تا با بیشترین فرکانس کار کند (محدودیت‌های حرارتی همچنان اعمال خواهند شد).</string>
<string name="renderer_asynchronous_shaders">استفاده از سایه‌زن‌های ناهمزمان</string>
<string name="renderer_asynchronous_shaders_description">سایه‌زن‌ها را به صورت ناهمزمان کامپایل می کند، لکنت را کاهش می‌دهد اما ممکن است اشکالاتی ایجاد کند.</string>
<string name="renderer_reactive_flushing">استفاده از فلاش کردن واکنشی</string>
<string name="renderer_reactive_flushing_description">دقت تفسیر تصاویر را در برخی از بازی‌ها به قیمت عملکرد بهبود می‌بخشد.</string>
<string name="use_disk_shader_cache">ذخیره سایه‌زنی‌ها در حافظه</string>
<string name="use_disk_shader_cache_description">لکنت را با ذخیره و بارگذاری سایه‌زن‌های تولید شده کاهش می‌دهد.</string>
<string name="anisotropic_filtering">فیلتر ناهمسانگرد</string>
<string name="anisotropic_filtering_description">کیفیت بافت‌ها را هنگام مشاهده در زوایای اریب بهبود می‌بخشد</string>
<!-- Debug settings strings -->
<string name="cpu">پردازنده</string>
<string name="cpu_debug_mode">اشکال‌زدایی پردازنده</string>
<string name="cpu_debug_mode_description">پردازنده را در حالت اشکال‌زدایی کندتر قرار می‌دهد.</string>
<string name="gpu">پردازنده گرافیکی</string>
<string name="renderer_api">رابط برنامه‌نویسی</string>
<string name="renderer_debug">اشکال‌زدایی پردازنده گرافیکی</string>
<string name="renderer_debug_description">رابط گرافیکی را روی حالت اشکال‌زدایی کندتر تنظیم می‌کند.</string>
<string name="fastmem">دسترسی سریع حافظه</string>
<!-- Audio settings strings -->
<string name="audio_output_engine">موتور خروجی</string>
<string name="audio_volume">میزان</string>
<string name="audio_volume_description">میزان صدای خروجی را مشخص می‌کند.</string>
<!-- Input strings -->
<string name="buttons">دکمه‌ها</string>
<string name="button_a">A</string>
<string name="button_b">بایت</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">به علاوه</string>
<string name="button_minus">منها</string>
<string name="button_home">خانه</string>
<string name="button_capture">ضبط</string>
<string name="start_pause">شروع/مکث</string>
<string name="dpad">دکمه‌های جهتی</string>
<string name="up">بالا</string>
<string name="down">پایین</string>
<string name="left">چپ</string>
<string name="right">راست</string>
<string name="left_stick">استیک چپ</string>
<string name="right_stick">استیک راست</string>
<string name="pressed">فشار داده شده</string>
<string name="range">محدوده</string>
<string name="deadzone">ناحیه خطا</string>
<string name="triggers">ماشه‌ها</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">نامعتبر</string>
<string name="not_set">تنظیم نشده</string>
<string name="unknown">نامعلوم</string>
<string name="unused">استفاده نشده</string>
<string name="input_prompt">یک ورودی را حرکت یا فشار دهید</string>
<string name="unsupported_input">نوع ورودی پشتیبانی نمی‌شود</string>
<string name="input_mapping_filter">فیلتر نگاشت ورودی</string>
<string name="input_mapping_filter_description">دستگاهی را برای فیلتر کردن ورودی‌های نقشه برداری انتخاب کنید</string>
<string name="auto_map">نقشه برداری خودکار یک کنترلر</string>
<string name="auto_map_description">دستگاهی را برای انجام نقشه برداری خودکار انتخاب کنید</string>
<string name="attempted_auto_map">نقشه خودکار با %1$s</string>
<string name="controller_type">نوع کنترلر</string>
<string name="pro_controller">کنترلر حرفه‌ای</string>
<string name="handheld">حالت دستی</string>
<string name="dual_joycons">جفت Joycon</string>
<string name="left_joycon">Joycon چپ</string>
<string name="right_joycon">Joycon راست</string>
<string name="gamecube_controller">کنترلر GameCube</string>
<string name="invert_axis">محور معکوس</string>
<!-- Miscellaneous -->
<string name="slider_default">پیش‌فرض</string>
<string name="ini_saved">تنظیمات ذخیره شده</string>
<string name="gameid_saved">تنظیمات ذخیره شده برای %1$s</string>
<string name="error_saving">خطا برای ذخیره ini.%1$s : %2$s</string>
<string name="unimplemented_menu">منوی ساخته نشده</string>
<string name="loading">بارگذاری...</string>
<string name="shutting_down">خاموش شدن…</string>
<string name="reset_setting_confirmation">آیا می‌خواهید این تنظیم را به مقدار پیش‌فرض خود بازنشانی کنید؟</string>
<string name="reset_to_default">بازنشانی به پیش‌فرض</string>
<string name="reset_to_default_description">بازنشانی کل تنظیمات پیشرفته</string>
<string name="reset_all_settings">کل تنظیمات بازنشانی شود؟</string>
<string name="reset_all_settings_description">تمام تنظیمات پیشرفته به پیکربندی پیش‌فرض خود بازنشانی خواهند شد. این قابل بازگشت نیست.</string>
<string name="settings_reset">بازنشانی تنظیمات</string>
<string name="close">بستن</string>
<string name="learn_more">بیشتر بدانید</string>
<string name="auto">خودکار</string>
<string name="submit">ارسال</string>
<string name="string_null">خالی</string>
<string name="string_import">وارد کردن</string>
<string name="export">صادر کردن</string>
<string name="export_failed">صادر کردن ناموفق بود</string>
<string name="import_failed">وارد کردن ناموفق بود</string>
<string name="cancelling">در حال لغو</string>
<string name="install">نصب</string>
<string name="delete">حذف</string>
<string name="edit">ویرایش</string>
<string name="export_success">با موفقیت صادر شد</string>
<string name="start">شروع</string>
<string name="clear">پاکسازی</string>
<string name="global">سراسری</string>
<string name="custom">سفارشی</string>
<string name="notice">اطلاع</string>
<string name="import_complete">وارد کردن تکمیل شد</string>
<string name="more_options">گزینه‌های بیشتر</string>
<string name="use_global_setting">استفاده از تنظیمات سراسری</string>
<string name="operation_completed_successfully">عملیات با موفقیت به پایان رسید</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">انتخاب درایور پردازنده گرافیکی</string>
<string name="select_gpu_driver_title">آیا می خواهید درایور فعلی پردازنده گرافیکی خود را جایگزین کنید؟</string>
<string name="select_gpu_driver_install">نصب</string>
<string name="select_gpu_driver_default">پیش‌فرض</string>
<string name="select_gpu_driver_use_default">استفاده از درایور پیش‌فرض پردازنده گرافیکی</string>
<string name="select_gpu_driver_error">درایور نامعتبر انتخاب شده است</string>
<string name="driver_already_installed">درایور قبلاً نصب شده است</string>
<string name="system_gpu_driver">درایور سیستم پردازنده گرافیکی</string>
<string name="installing_driver">در حال نصب درایور...</string>
<!-- Preferences Screen -->
<string name="preferences_settings">تنظیمات</string>
<string name="preferences_general">عمومی</string>
<string name="preferences_system">سیستم</string>
<string name="preferences_system_description">حالت متصل شده، منطقه، زبان</string>
<string name="preferences_graphics">گرافیک</string>
<string name="preferences_graphics_description">سطح دقت، وضوح، حافظه پنهان سایه‌زن</string>
<string name="preferences_audio">صدا</string>
<string name="preferences_audio_description">موتور خروجی، میزان</string>
<string name="preferences_theme">رنگ و تم</string>
<string name="preferences_debug">اشکال‌زدایی</string>
<string name="preferences_debug_description">اشکال‌زدایی پردازنده/گرافیک، API گرافیک، fastmem</string>
<!-- Game properties -->
<string name="info">اطلاعات</string>
<string name="info_description">شناسه برنامه، توسعه دهنده، نسخه</string>
<string name="per_game_settings">تنظیمات مختص هر بازی</string>
<string name="per_game_settings_description">ویرایش تنظیمات مختص این بازی</string>
<string name="launch_options">تنظیمات اجرا</string>
<string name="path">مسیر</string>
<string name="program_id">شناسه برنامه</string>
<string name="developer">توسعه دهنده</string>
<string name="version">نسخه</string>
<string name="copy_details">کپی جزئیات</string>
<string name="add_ons">افزونه‌ها</string>
<string name="add_ons_description">تغییر مودها، آپدیت‌ها و DLC</string>
<string name="clear_shader_cache">پاکسازی حافظه پنهان سایه‌زن‌ها</string>
<string name="clear_shader_cache_description">تمام سایه‌زن‌های ساخته شده در حین اجرای این بازی را حذف می‌کند</string>
<string name="clear_shader_cache_warning_description">هنگام بازسازی حافظه پنهان سایه‌زنی، لکنت بیشتری را تجربه خواهید کرد</string>
<string name="cleared_shaders_successfully">سایه‌زن‌ها با موفقیت پاک شدند</string>
<string name="addons_game">افزونه: %1$s</string>
<string name="save_data">داده‌های ذخیره</string>
<string name="save_data_description">مدیریت داده‌های ذخیره مخصوص این بازی</string>
<string name="delete_save_data">حذف داده‌های ذخیره</string>
<string name="delete_save_data_description">تمام داده‌های ذخیره شده مخصوص این بازی را حذف می‌کند</string>
<string name="delete_save_data_warning_description">تمام داده‌های ذخیره این بازی را به طور غیرقابل برگشت حذف می کند. آیا مطمئن هستید که می‌خواهید ادامه دهید؟</string>
<string name="save_data_deleted_successfully">ذخیره داده‌ها با موفقیت حذف شد</string>
<string name="select_content_type">نوع محتوا</string>
<string name="updates_and_dlc">آپدیت‌ها و DLC</string>
<string name="mods_and_cheats">مودها و چیت‌ها</string>
<string name="addon_notice">اطلاعیه مهم افزونه</string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="addon_notice_description">برای نصب مودها و چیت ها، باید پوشه ای را انتخاب کنید که حاوی مسیر cheats/ یا romfs/ یا exefs/ باشد. ما نمی‌توانیم تأیید کنیم که این‌ها با بازی شما سازگار هستند، بنابراین مراقب باشید!</string>
<string name="invalid_directory">مسیر نامعتبر</string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="invalid_directory_description">لطفاً مطمئن شوید که مسیر انتخابی شما حاوی یک پوشه cheats/ یا romfs/ یا exefs/ می‌باشد و دوباره امتحان کنید.</string>
<string name="addon_installed_successfully">افزونه با موفقیت نصب شد</string>
<string name="verifying_content">در حال تأیید محتوا…</string>
<string name="content_install_notice">اطلاعیه نصب محتوا</string>
<string name="content_install_notice_description">محتوایی که انتخاب کردید با این بازی مطابقت ندارد.\nبه هر حال نصب شود؟</string>
<string name="confirm_uninstall">حذف را تایید کنید</string>
<string name="confirm_uninstall_description">آیا مطمئن هستید که می‌خواهید این افزونه را حذف کنید؟</string>
<string name="verify_integrity">راستی‌آزمایی یکپارچگی</string>
<string name="verifying">در حال بررسی...</string>
<string name="verify_success">راستی‌آزمایی یکپارچگی با موفقیت انجام شد!</string>
<string name="verify_failure">راستی‌آزمایی یکپارچگی ناموفق بود!</string>
<string name="verify_failure_description">محتویات فایل ممکن است خراب باشد</string>
<string name="verify_no_result">راستی‌آزمایی یکپارچگی انجام نشد</string>
<string name="verify_no_result_description"> اعتبار محتوای فایل بررسی نشد</string>
<string name="verification_failed_for">بررسی برای فایل‌های زیر انجام نشد:\n%1$s</string>
<!-- ROM loading errors -->
<string name="loader_error_encrypted">رام شما رمزگذاری شده است</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[لطفاً راهنماها را دنبال کنید تا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">کارتیج‌های بازی</a> یا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">عناوین نصب شده</a> خود را استخراج کنید.]]></string>
<string name="loader_error_encrypted_keys_description"><![CDATA[لطفاً مطمئن شوید که فایل prod.keys شما نصب شده است تا بازی‌ها رمزگشایی شوند.]]></string>
<string name="loader_error_video_core">در راه‌اندازی اولیه هسته ویدیو خطایی رخ داد</string>
<string name="loader_error_video_core_description">این مورد معمولاً توسط یک درایور گرافیکی ناسازگار ایجاد می‌شود. نصب درایور گرافیکی سفارشی ممکن است این مشکل را حل کند.</string>
<string name="loader_error_invalid_format">رام بارگذاری نشد</string>
<string name="loader_error_file_not_found">فایل رام وجود ندارد</string>
<!-- Emulation Menu -->
<string name="emulation_exit">خروج از شبیه‌سازی</string>
<string name="emulation_done">انجام شد</string>
<string name="emulation_fps_counter">شمارشگر فریم</string>
<string name="emulation_thermal_indicator">نشانگر حرارتی</string>
<string name="emulation_toggle_controls">تغییر کنترل‌ها</string>
<string name="emulation_rel_stick_center">مرکز نسبی استیک</string>
<string name="emulation_dpad_slide">لغزش دکمه‌های جهتی</string>
<string name="emulation_haptics">لرزش لمسی</string>
<string name="emulation_show_overlay">نشان دادن نمایش روی صفحه</string>
<string name="emulation_toggle_all">تغییر همه</string>
<string name="emulation_control_adjust">تنظیم نمایش روی صفحه</string>
<string name="emulation_control_scale">مقیاس</string>
<string name="emulation_control_opacity">شفافیت</string>
<string name="emulation_touch_overlay_reset">بازنشانی نمایش روی صفحه</string>
<string name="emulation_touch_overlay_edit">ویرایش دکمه‌های روی صفحه</string>
<string name="emulation_pause">مکث شبیه‌سازی</string>
<string name="emulation_unpause">ادامه شبیه‌سازی</string>
<string name="emulation_input_overlay">گزینه‌های نمایش روی صفحه</string>
<string name="touchscreen">صفحه لمسی</string>
<string name="lock_drawer">قفل‌کردن منوی کشویی</string>
<string name="unlock_drawer">بازکردن قفل منو کشویی</string>
<string name="load_settings">بارگذاری تنظیمات...</string>
<!-- Software keyboard -->
<string name="software_keyboard">صفحه‌کلید نرم‌افزار</string>
<!-- Errors and warnings -->
<string name="abort_button">لغو</string>
<string name="continue_button">ادامه</string>
<string name="system_archive_not_found">آرشیو سیستم پیدا نشد</string>
<string name="system_archive_not_found_message">%s یافت نشد. لطفاً بایگانی‌های سیستم خود را استخراج کنید.\nادامه شبیه‌سازی ممکن است منجر به خرابی‌ و اشکالات شود.</string>
<string name="system_archive_general">آرشیو سیستم</string>
<string name="save_load_error">خطای ذخیره/بارگذاری</string>
<string name="fatal_error">خطای مهلک</string>
<string name="fatal_error_message">یک خطای مهلک رخ داد. برای جزئیات، گزارش را بررسی کنید.\nادامه شبیه‌سازی ممکن است منجر به خرابی و اشکالات شود.</string>
<string name="performance_warning">خاموش کردن این تنظیم عملکرد شبیه‌سازی را به میزان قابل توجهی کاهش می‌دهد! برای بهترین تجربه، توصیه می‌شود این تنظیم را فعال بگذارید.</string>
<string name="device_memory_inadequate">رم دستگاه: %1$s \nتوصیه شده: %2$s</string>
<string name="memory_formatted">%1$s%2$s</string>
<string name="no_game_present">هیچ بازی قابل اجرایی وجود ندارد!</string>
<!-- Region Names -->
<string name="region_japan">ژاپن</string>
<string name="region_usa">ایالات متحده آمریکا</string>
<string name="region_europe">اروپا</string>
<string name="region_australia">استرالیا</string>
<string name="region_china">چین</string>
<string name="region_korea">کره</string>
<string name="region_taiwan">تایوان</string>
<!-- Memory Sizes -->
<string name="memory_byte">بایت</string>
<string name="memory_byte_shorthand">بایت</string>
<string name="memory_kilobyte">کیلوبایت</string>
<string name="memory_megabyte">مگابایت</string>
<string name="memory_gigabyte">گیگابایت</string>
<string name="memory_terabyte">ترابایت</string>
<string name="memory_petabyte">پتابایت</string>
<string name="memory_exabyte">اگزابایت</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">هیچ</string>
<!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">معمولی</string>
<string name="renderer_accuracy_high">زیاد</string>
<string name="renderer_accuracy_extreme">افراطی (کند)</string>
<!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string>
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
<string name="resolution_one">1X (720p/1080p)</string>
<string name="resolution_two">2X (1440p/2160p) (کند)</string>
<string name="resolution_three">3X (2160p/3240p) (کند)</string>
<string name="resolution_four">4X (2880p/4320p) (کند)</string>
<!-- Renderer VSync -->
<string name="renderer_vsync_immediate">فوری (خاموش)</string>
<string name="renderer_vsync_mailbox">Mailbox</string>
<string name="renderer_vsync_fifo">FIFO (روشن)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO آرام</string>
<!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
<string name="scaling_filter_bilinear">Bilinear</string>
<string name="scaling_filter_bicubic">Bicubic</string>
<string name="scaling_filter_gaussian">Gaussian</string>
<string name="scaling_filter_scale_force">ScaleForce</string>
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
<!-- Anti-Aliasing -->
<string name="anti_aliasing_none">هیچ</string>
<string name="anti_aliasing_fxaa">FXAA</string>
<string name="anti_aliasing_smaa">SMAA</string>
<!-- Screen Layouts -->
<string name="screen_layout_auto">خودکار</string>
<string name="screen_layout_sensor_landscape">افقی با سنسور</string>
<string name="screen_layout_landscape">افقی</string>
<string name="screen_layout_reverse_landscape">افقی معکوس</string>
<string name="screen_layout_sensor_portrait">عمودی با سنسور</string>
<string name="screen_layout_portrait">عمودی</string>
<string name="screen_layout_reverse_portrait">عمودی معکوس</string>
<!-- Aspect Ratios -->
<string name="ratio_default">پیشفرض (16:9)</string>
<string name="ratio_force_four_three">اجبار به 4:3</string>
<string name="ratio_force_twenty_one_nine">اجبار به 21:9</string>
<string name="ratio_force_sixteen_ten">اجبار به 16:10</string>
<string name="ratio_stretch">کشش تا پر کردن پنجره</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">دینارمیک (کند)</string>
<string name="cpu_backend_nce">اجرای کد اصلی (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">دقیق</string>
<string name="cpu_accuracy_unsafe">ناامن</string>
<string name="cpu_accuracy_paranoid">بدگمان (کند)</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">کلیدهای جهتی</string>
<string name="gamepad_left_stick">استیک چپ</string>
<string name="gamepad_right_stick">استیک راست</string>
<string name="gamepad_home">خانه</string>
<string name="gamepad_screenshot">نماگرفت</string>
<!-- Disk shader cache -->
<string name="preparing_shaders">در حال آماده‌سازی سایه‌زن‌ها</string>
<string name="building_shaders">در حال ساخت سایه‌زن‌ها</string>
<!-- Theme options -->
<string name="change_app_theme">تغییر تم برنامه</string>
<string name="theme_default">پیش‌فرض</string>
<string name="theme_material_you">Material You</string>
<!-- Theme Modes -->
<string name="change_theme_mode">تغییر حالت تم</string>
<string name="theme_mode_follow_system">پیروی از سیستم</string>
<string name="theme_mode_light">روشن</string>
<string name="theme_mode_dark">تاریک</string>
<!-- Audio output engines -->
<string name="oboe">oboe</string>
<string name="cubeb">cubeb</string>
<!-- Anisotropic filtering options -->
<string name="multiplier_two">2x</string>
<string name="multiplier_four">4x</string>
<string name="multiplier_eight">8x</string>
<string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme -->
<string name="use_black_backgrounds">پس‌زمینه مشکی</string>
<string name="use_black_backgrounds_description">هنگام استفاده از تم تاریک، پس‌زمینه مشکی را اعمال می‌کند.</string>
<!-- Picture-In-Picture -->
<string name="picture_in_picture">تصویر در تصویر</string>
<string name="picture_in_picture_description">وقتی در پس‌زمینه قرار می‌گیرد، پنجره کوچک می‌شود</string>
<string name="pause">مکث</string>
<string name="play">شروع</string>
<string name="mute">بی‌صدا</string>
<string name="unmute">باصدا</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">چیدمان عمودی</string>
<string name="top">بالا</string>
<string name="center">وسط</string>
<string name="bottom">پایین</string>
<!-- Licenses screen strings -->
<string name="licenses">مجوزها</string>
<string name="license_fidelityfx_fsr_description">High-quality upscaling from AMD</string>
</resources>

View File

@ -137,11 +137,6 @@
<item quantity="other">%d sauvegardes importées avec succès</item> <item quantity="other">%d sauvegardes importées avec succès</item>
</plurals> </plurals>
<string name="no_save_data_found">Aucune donnée de sauvegarde trouvée</string> <string name="no_save_data_found">Aucune donnée de sauvegarde trouvée</string>
<string name="verify_installed_content">Vérifier les contenus installés</string>
<string name="verify_installed_content_description">Vérifie l\'intégrité des contenus installés</string>
<string name="keys_missing">Les clés de chiffrement sont manquantes.</string>
<string name="keys_missing_description">Le firmware et les jeux commerciaux ne peuvent pas être déchiffrés</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Lanceur d\'applets</string> <string name="applets">Lanceur d\'applets</string>
@ -208,7 +203,6 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">Nom de l\'appareil</string>
<string name="use_docked_mode">Mode TV</string> <string name="use_docked_mode">Mode TV</string>
<string name="use_docked_mode_description">Augmenter la résolution, ce qui diminue les performances. Le mode portable est utilisé lorsque la fonction est désactivée, ce qui réduit la résolution et améliore les performances.</string> <string name="use_docked_mode_description">Augmenter la résolution, ce qui diminue les performances. Le mode portable est utilisé lorsque la fonction est désactivée, ce qui réduit la résolution et améliore les performances.</string>
<string name="emulated_region">Région émulée</string> <string name="emulated_region">Région émulée</string>
@ -226,8 +220,6 @@
<string name="renderer_screen_layout">Orientation</string> <string name="renderer_screen_layout">Orientation</string>
<string name="renderer_aspect_ratio">Format</string> <string name="renderer_aspect_ratio">Format</string>
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string> <string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
<string name="fsr_sharpness">Netteté FSR</string>
<string name="fsr_sharpness_description">Détermine à quel point l\'image sera affinée lors de l\'utilisation du contraste dynamique FSR.</string>
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string> <string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string> <string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string> <string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
@ -255,92 +247,6 @@
<string name="audio_volume">Volume</string> <string name="audio_volume">Volume</string>
<string name="audio_volume_description">Spécifier le volume de la sortie audio.</string> <string name="audio_volume_description">Spécifier le volume de la sortie audio.</string>
<!-- Input strings -->
<string name="buttons">Boutons</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Plus</string>
<string name="button_minus">Moins</string>
<string name="button_home">Home</string>
<string name="button_capture">Capture</string>
<string name="start_pause">Start/Pause</string>
<string name="dpad">Pavé directionnel</string>
<string name="up">Haut</string>
<string name="down">Bas</string>
<string name="left">Gauche</string>
<string name="right">Droite</string>
<string name="left_stick">Stick gauche</string>
<string name="control_stick">Stick de contrôle </string>
<string name="right_stick">Stick droit</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Appuyé</string>
<string name="range">Portée</string>
<string name="deadzone">Zone morte</string>
<string name="modifier">Modificateur</string>
<string name="modifier_range">Modifier la plage</string>
<string name="triggers">Gachettes</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">SL gauche</string>
<string name="button_sr_left">SR gauche</string>
<string name="button_sl_right">SL droit</string>
<string name="button_sr_right">SR droit</string>
<string name="button_z">Z</string>
<string name="invalid">Invalide</string>
<string name="not_set">Non défini</string>
<string name="unknown">Inconnu</string>
<string name="qualified_hat">%1$s%2$s%3$sChapeau %4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAxe %4$s</string>
<string name="qualified_button">%1$s%2$s%3$sBouton %4$s</string>
<string name="qualified_axis">Axe %1$s%2$s</string>
<string name="unused">Inutilisé</string>
<string name="input_prompt">Déplacez ou appuyez sur une entrée</string>
<string name="unsupported_input">Type d\'entrée non pris en charge</string>
<string name="input_mapping_filter">Filtre de mappage d\'entrée</string>
<string name="input_mapping_filter_description">Sélectionnez un appareil pour filtrer les entrées de mappage</string>
<string name="auto_map">Mapper automatiquement une manette</string>
<string name="auto_map_description">Sélectionnez un périphérique pour tenter le mappage automatique</string>
<string name="attempted_auto_map">Tentative de mappage automatique avec %1$s</string>
<string name="controller_type">Type de manette</string>
<string name="pro_controller">Manette Switch Pro</string>
<string name="handheld">Mode Portable</string>
<string name="dual_joycons">Deux Joycons</string>
<string name="left_joycon">Joycon gauche</string>
<string name="right_joycon">Joycon droit</string>
<string name="gamecube_controller">Manette GameCube</string>
<string name="invert_axis">Inverser l\'axe</string>
<string name="invert_button">Inverser les boutons</string>
<string name="toggle_button">Bouton d\'activation</string>
<string name="turbo_button">Bouton Turbo</string>
<string name="set_threshold">Définir le seuil</string>
<string name="toggle_axis">Basculer les axes</string>
<string name="connected">Connecté</string>
<string name="use_system_vibrator">Utiliser le vibreur du système</string>
<string name="input_overlay">Superposition d\'entrée</string>
<string name="vibration">Vibration</string>
<string name="vibration_strength">Intensité de la vibration</string>
<string name="profile">Profil</string>
<string name="create_new_profile">Créer un nouveau profil</string>
<string name="enter_profile_name">Entrez le nom du profil</string>
<string name="profile_name_already_exists">Le nom du profil existe déjà</string>
<string name="invalid_profile_name">Nom de profil invalide</string>
<string name="use_global_input_configuration">Utiliser la configuration d\'entrée globale</string>
<string name="player_num_profile">Profil du joueur %d</string>
<string name="delete_input_profile">Supprimer le profil d\'entrée</string>
<string name="delete_input_profile_description">Êtes-vous sûr de vouloir supprimer ce profil ? Cette action est irréversible.</string>
<string name="stick_map_description">Déplacez un stick vers la gauche puis vers le haut ou appuyez sur un bouton.</string>
<string name="button_map_description">Appuyez sur un bouton ou une gachette/stick</string>
<string name="map_dpad_direction">Mapper avec la croix directionnelle %1$s</string>
<string name="map_control">Mapper avec le %1$s</string>
<string name="failed_to_load_profile">Échec du chargement du profil</string>
<string name="failed_to_save_profile">Échec de l\'enregistrement du profil</string>
<string name="reset_mapping">Réinitialiser les mappages</string>
<string name="reset_mapping_description">Êtes-vous sûr de vouloir réinitialiser tous les mappages de cette manette aux paramètres par défaut ? Cette action ne peut pas être annulée.</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Par défaut</string> <string name="slider_default">Par défaut</string>
<string name="ini_saved">Paramètres enregistrés</string> <string name="ini_saved">Paramètres enregistrés</string>
@ -375,14 +281,6 @@
<string name="custom">Personnalisé</string> <string name="custom">Personnalisé</string>
<string name="notice">Avis</string> <string name="notice">Avis</string>
<string name="import_complete">Importation terminée</string> <string name="import_complete">Importation terminée</string>
<string name="more_options">Plus d\'options</string>
<string name="use_global_setting">Utilisez les paramètres globaux</string>
<string name="operation_completed_successfully">L\'opération s\'est déroulée avec succès</string>
<string name="retry">Réessayer</string>
<string name="confirm">Confirmer</string>
<string name="load">Charger</string>
<string name="save">Enregistrer</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Sélectionner le pilote du GPU</string> <string name="select_gpu_driver">Sélectionner le pilote du GPU</string>
<string name="select_gpu_driver_title">Souhaitez vous remplacer votre pilote actuel ?</string> <string name="select_gpu_driver_title">Souhaitez vous remplacer votre pilote actuel ?</string>
@ -403,9 +301,6 @@
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string> <string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
<string name="preferences_audio">Audio</string> <string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Moteur de sortie, volume</string> <string name="preferences_audio_description">Moteur de sortie, volume</string>
<string name="preferences_controls">Contrôles</string>
<string name="preferences_controls_description">Mapper l\'entrée du contrôleur</string>
<string name="preferences_player">Joueur %d</string>
<string name="preferences_theme">Thème et couleur</string> <string name="preferences_theme">Thème et couleur</string>
<string name="preferences_debug">Débogage</string> <string name="preferences_debug">Débogage</string>
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string> <string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
@ -447,17 +342,6 @@
<string name="verifying_content">Vérification du contenu...</string> <string name="verifying_content">Vérification du contenu...</string>
<string name="content_install_notice">Avis d\'installation du contenu</string> <string name="content_install_notice">Avis d\'installation du contenu</string>
<string name="content_install_notice_description">Le contenu que vous avez sélectionné ne correspond pas à ce jeu.\nInstaller quand même ?</string> <string name="content_install_notice_description">Le contenu que vous avez sélectionné ne correspond pas à ce jeu.\nInstaller quand même ?</string>
<string name="confirm_uninstall">Confirmer la désinstallation</string>
<string name="confirm_uninstall_description">Êtes-vous sûr de vouloir désinstaller cette extension ?</string>
<string name="verify_integrity">Vérifier l\'intégrité</string>
<string name="verifying">Vérification...</string>
<string name="verify_success">La vérification de l\'intégrité a réussi !</string>
<string name="verify_failure">La vérification de l\'intégrité a échoué !</string>
<string name="verify_failure_description">Le contenu d\'un fichier peut être corrompu</string>
<string name="verify_no_result">La vérification de l\'intégrité n\'a pas pu être effectuée</string>
<string name="verify_no_result_description">La validité du contenu du fichier n\'a pas été vérifiée</string>
<string name="verification_failed_for">La vérification a échoué pour les fichiers suivants :\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">Votre ROM est cryptée</string> <string name="loader_error_encrypted">Votre ROM est cryptée</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Veuillez suivre les guides pour refaire un dump de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartouches de jeu</a> ou de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">titres installés</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Veuillez suivre les guides pour refaire un dump de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartouches de jeu</a> ou de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">titres installés</a>.]]></string>
@ -471,7 +355,6 @@
<string name="emulation_exit">Quitter l\'émulation</string> <string name="emulation_exit">Quitter l\'émulation</string>
<string name="emulation_done">Terminé</string> <string name="emulation_done">Terminé</string>
<string name="emulation_fps_counter">Compteur FPS</string> <string name="emulation_fps_counter">Compteur FPS</string>
<string name="emulation_thermal_indicator">Indicateur thermique</string>
<string name="emulation_toggle_controls">Activer/Désactiver les contrôles</string> <string name="emulation_toggle_controls">Activer/Désactiver les contrôles</string>
<string name="emulation_rel_stick_center">Centre du stick relatif</string> <string name="emulation_rel_stick_center">Centre du stick relatif</string>
<string name="emulation_dpad_slide">Glissement du D-pad</string> <string name="emulation_dpad_slide">Glissement du D-pad</string>
@ -487,8 +370,6 @@
<string name="emulation_unpause">Reprendre l\'émulation</string> <string name="emulation_unpause">Reprendre l\'émulation</string>
<string name="emulation_input_overlay">Options de l\'overlay</string> <string name="emulation_input_overlay">Options de l\'overlay</string>
<string name="touchscreen">Écran tactile</string> <string name="touchscreen">Écran tactile</string>
<string name="lock_drawer">Verrouiller le tiroir</string>
<string name="unlock_drawer">Déverrouiller le tiroir</string>
<string name="load_settings">Chargement des paramètres…</string> <string name="load_settings">Chargement des paramètres…</string>
@ -633,12 +514,6 @@
<string name="mute">Couper le son</string> <string name="mute">Couper le son</string>
<string name="unmute">Remettre le son</string> <string name="unmute">Remettre le son</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Alignement vertical</string>
<string name="top">Haut</string>
<string name="center">Centre</string>
<string name="bottom">Bas</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Licences</string> <string name="licenses">Licences</string>
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string> <string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>

View File

@ -84,10 +84,7 @@
<string name="notification_no_directory_link_description">בבקשה מקם את תיקיית המשתמש בפנל הצידי של מנהל הקבצים באופן ידני.</string> <string name="notification_no_directory_link_description">בבקשה מקם את תיקיית המשתמש בפנל הצידי של מנהל הקבצים באופן ידני.</string>
<string name="manage_save_data">נהל מידע שמור</string> <string name="manage_save_data">נהל מידע שמור</string>
<string name="manage_save_data_description">מידע שמור לא נמצא. בבקשה בחר/י אופציה מלמטה</string> <string name="manage_save_data_description">מידע שמור לא נמצא. בבקשה בחר/י אופציה מלמטה</string>
<string name="import_save_warning">ייבוא נתוני שמירה</string>
<string name="import_save_warning_description">פעולה זו תמחק את כל הנתונים הקיימים ותחליף אותם בקובץ שסופק.האם אתה בטוח שברצונך להמשיך?</string>
<string name="import_export_saves_description">יבא או יצא קבצי שמירה</string> <string name="import_export_saves_description">יבא או יצא קבצי שמירה</string>
<string name="save_files_importing">מייבא קבצי שמירה...</string>
<string name="save_files_exporting">מייצא קבצי שמירה...</string> <string name="save_files_exporting">מייצא קבצי שמירה...</string>
<string name="save_file_imported_success">יובא בהצלחה</string> <string name="save_file_imported_success">יובא בהצלחה</string>
<string name="save_file_invalid_zip_structure">מבנה ספריית השמירות לא חוקי</string> <string name="save_file_invalid_zip_structure">מבנה ספריית השמירות לא חוקי</string>
@ -126,8 +123,6 @@
<string name="add_game_folder">הוסף תיקיית משחקים</string> <string name="add_game_folder">הוסף תיקיית משחקים</string>
<string name="folder_already_added">התיקייה הזו נוספה כבר!</string> <string name="folder_already_added">התיקייה הזו נוספה כבר!</string>
<string name="game_folder_properties">מאפייני תיקיית משחקים</string> <string name="game_folder_properties">מאפייני תיקיית משחקים</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">משגר Applet</string> <string name="applets">משגר Applet</string>
<string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string> <string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string>
@ -192,6 +187,7 @@
<string name="cpu_accuracy">דיוק המעבד</string> <string name="cpu_accuracy">דיוק המעבד</string>
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="use_docked_mode">מצב עגינה</string> <string name="use_docked_mode">מצב עגינה</string>
<string name="use_docked_mode_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string> <string name="use_docked_mode_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string>
<string name="emulated_region">אזור אמולציה</string> <string name="emulated_region">אזור אמולציה</string>
@ -233,33 +229,6 @@
<string name="audio_volume">עוצמת שמע</string> <string name="audio_volume">עוצמת שמע</string>
<string name="audio_volume_description">מציין את עוצמת האודיו שיוצא.</string> <string name="audio_volume_description">מציין את עוצמת האודיו שיוצא.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">פלוס</string>
<string name="button_minus">מינוס</string>
<string name="button_home">בית</string>
<string name="up">למעלה</string>
<string name="down">למטה</string>
<string name="left">שמאל</string>
<string name="right">ימין</string>
<string name="left_stick">ג׳ויסטיק שמאלי</string>
<string name="right_stick">ג׳ויסטיק ימני</string>
<string name="pressed">לחוץ</string>
<string name="range">טווח</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">לא חוקי</string>
<string name="unknown">לא ידוע</string>
<string name="handheld">מצב נייד</string>
<string name="connected">מחובר</string>
<string name="vibration">רטט</string>
<string name="profile">פרופיל</string>
<string name="use_global_input_configuration">השתמש בהגדרת קלט גלובלי</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">ברירת מחדל</string> <string name="slider_default">ברירת מחדל</string>
<string name="ini_saved">הגדרות שמורות</string> <string name="ini_saved">הגדרות שמורות</string>
@ -290,8 +259,6 @@
<string name="export_success">יוצא בהצלחה</string> <string name="export_success">יוצא בהצלחה</string>
<string name="start">התחלה</string> <string name="start">התחלה</string>
<string name="clear">נקה</string> <string name="clear">נקה</string>
<string name="save">שמור</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string> <string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string>
<string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string> <string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string>
@ -322,7 +289,6 @@
<string name="developer">מפתח</string> <string name="developer">מפתח</string>
<string name="version">גרסה</string> <string name="version">גרסה</string>
<string name="add_ons">תוספים</string> <string name="add_ons">תוספים</string>
<string name="verify_success">אימות התקינות הצליח!</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">המשחק שלך מוצפן</string> <string name="loader_error_encrypted">המשחק שלך מוצפן</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[אנא עקוב אחרי המדריכים כדי לבצע redump של <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">כרטיסי המשחק</a>או <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">הכותרות המותקנות</a> שלך.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[אנא עקוב אחרי המדריכים כדי לבצע redump של <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">כרטיסי המשחק</a>או <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">הכותרות המותקנות</a> שלך.]]></string>
@ -351,6 +317,7 @@
<string name="emulation_unpause">המשך אמולציה</string> <string name="emulation_unpause">המשך אמולציה</string>
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string> <string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
<string name="touchscreen">מסך מגע</string> <string name="touchscreen">מסך מגע</string>
<string name="load_settings">טוען הגדרות...</string> <string name="load_settings">טוען הגדרות...</string>
<!-- Software keyboard --> <!-- Software keyboard -->

View File

@ -11,10 +11,11 @@
<string name="welcome_description">Ismerkedj meg a &lt;b>yuzu&lt;/b> beállításával és ugorj bele az emulációba.</string> <string name="welcome_description">Ismerkedj meg a &lt;b>yuzu&lt;/b> beállításával és ugorj bele az emulációba.</string>
<string name="get_started">Vágjunk bele</string> <string name="get_started">Vágjunk bele</string>
<string name="keys">Kulcsok</string> <string name="keys">Kulcsok</string>
<string name="keys_description">Válaszd ki a &lt;b>prod.keys&lt;/b> fájlodat az alábbi gombbal.</string> <string name="keys_description">Válaszd ki a(z) &lt;b>prod.keys&lt;/b> fájlodat az alábbi gombbal.</string>
<string name="select_keys">Kulcsok kiválasztása</string> <string name="select_keys">Kulcsok kiválasztása</string>
<string name="games">Játékok</string> <string name="games">Játékok</string>
<string name="games_description">Válaszd ki a &lt;b>Játékok&lt;/b> mappát az alábbi gombbal.</string> <string name="games_description">
Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="done">Kész</string> <string name="done">Kész</string>
<string name="done_description">Minden kész.\nJó szórakozást!</string> <string name="done_description">Minden kész.\nJó szórakozást!</string>
<string name="text_continue">Folytatás</string> <string name="text_continue">Folytatás</string>
@ -47,10 +48,10 @@
<string name="notifications_description">Értesítési engedélyek megadása az alábbi gombbal.</string> <string name="notifications_description">Értesítési engedélyek megadása az alábbi gombbal.</string>
<string name="give_permission">Engedély megadása</string> <string name="give_permission">Engedély megadása</string>
<string name="notification_warning">Kihagyod az értesítési engedély megadását?</string> <string name="notification_warning">Kihagyod az értesítési engedély megadását?</string>
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos információkról</string> <string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos imformációkról</string>
<string name="permission_denied">Engedély megtagadva</string> <string name="permission_denied">Engedély megtagadva</string>
<string name="permission_denied_description">Túl gyakran utasítottad el a hozzáférést, így manuálisan kell jóváhagynod a rendszer beállításokban.</string> <string name="permission_denied_description">Túl gyakran utasítottad el a hozzáférést, így manuálisan kell jóváhagynod a rendszer beállításokban.</string>
<string name="about">Névjegy</string> <string name="about">A programról</string>
<string name="about_description">Build verzió, készítők, és még több</string> <string name="about_description">Build verzió, készítők, és még több</string>
<string name="warning_help">Segítség</string> <string name="warning_help">Segítség</string>
<string name="warning_skip">Kihagyás</string> <string name="warning_skip">Kihagyás</string>
@ -133,11 +134,6 @@
<item quantity="other">%dmentés sikeresen importálva</item> <item quantity="other">%dmentés sikeresen importálva</item>
</plurals> </plurals>
<string name="no_save_data_found">Nem található mentett adat</string> <string name="no_save_data_found">Nem található mentett adat</string>
<string name="verify_installed_content">Telepített tartalom ellenőrzése</string>
<string name="verify_installed_content_description">A telepített tartalom épségét ellenőrzi</string>
<string name="keys_missing">Hiányzó titkosítókulcsok</string>
<string name="keys_missing_description">A Firmware és a kiskereskedelmi (retail) játékok nem dekódolhatók</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Applet indító</string> <string name="applets">Applet indító</string>
@ -195,14 +191,13 @@
<!-- General settings strings --> <!-- General settings strings -->
<string name="frame_limit_enable">Sebességkorlát</string> <string name="frame_limit_enable">Sebességkorlát</string>
<string name="frame_limit_enable_description">Korlátozza az emuláció sebességét a normál sebesség adott százalékára.</string> <string name="frame_limit_enable_description">Korlátozza az emuláció sebességét a normál sebesség adott százalékára.</string>
<string name="frame_limit_slider">Sebesség korlátozása</string> <string name="frame_limit_slider">Sebességkorlát százaléka</string>
<string name="frame_limit_slider_description">Az emuláció sebességét határozza meg. 100% a normál sebesség. A magasabb értékek növelik, az alacsonyabbak csökkentik a sebességkorlátot.</string> <string name="frame_limit_slider_description">Az emuláció sebességét határozza meg. 100% a normál sebesség. A magasabb értékek növelik, az alacsonyabbak csökkentik a sebességkorlátot.</string>
<string name="cpu_backend">CPU backend</string> <string name="cpu_backend">CPU backend</string>
<string name="cpu_accuracy">CPU pontosság</string> <string name="cpu_accuracy">CPU pontosság</string>
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">Eszköznév</string>
<string name="use_docked_mode">Dokkolt mód</string> <string name="use_docked_mode">Dokkolt mód</string>
<string name="use_docked_mode_description">Növeli a felbontást, de csökkenti a teljesítményt. Kikapcsolás esetén a Kézi mód van használatban, ami kisebb felbontást, de nagyobb teljesítményt eredményez.</string> <string name="use_docked_mode_description">Növeli a felbontást, de csökkenti a teljesítményt. Kikapcsolás esetén a Kézi mód van használatban, ami kisebb felbontást, de nagyobb teljesítményt eredményez.</string>
<string name="emulated_region">Emulált régió</string> <string name="emulated_region">Emulált régió</string>
@ -220,8 +215,6 @@
<string name="renderer_screen_layout">Orientáció</string> <string name="renderer_screen_layout">Orientáció</string>
<string name="renderer_aspect_ratio">Képarány</string> <string name="renderer_aspect_ratio">Képarány</string>
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string> <string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
<string name="fsr_sharpness">FSR élesség</string>
<string name="fsr_sharpness_description">Meghatározza, milyen éles lesz a kép az FSR dinamikus kontraszt használata közben.</string>
<string name="renderer_anti_aliasing">Élsimítási módszer</string> <string name="renderer_anti_aliasing">Élsimítási módszer</string>
<string name="renderer_force_max_clock">Maximum órajel kényszerítése (csak Adreno)</string> <string name="renderer_force_max_clock">Maximum órajel kényszerítése (csak Adreno)</string>
<string name="renderer_force_max_clock_description">Kényszeríti a GPU-t a lehető legnagyobb órajelen működésre (a hőmérséklet korlátozások továbbra is érvényben maradnak).</string> <string name="renderer_force_max_clock_description">Kényszeríti a GPU-t a lehető legnagyobb órajelen működésre (a hőmérséklet korlátozások továbbra is érvényben maradnak).</string>
@ -232,8 +225,6 @@
<string name="use_disk_shader_cache">Lemez árnyékoló gyorsítótár</string> <string name="use_disk_shader_cache">Lemez árnyékoló gyorsítótár</string>
<string name="use_disk_shader_cache_description">Csökkenti az akadásokat azáltal, hogy helyileg tárolja és tölti be a generált árnyékolókat.</string> <string name="use_disk_shader_cache_description">Csökkenti az akadásokat azáltal, hogy helyileg tárolja és tölti be a generált árnyékolókat.</string>
<string name="anisotropic_filtering">Anizotropikus szűrés</string> <string name="anisotropic_filtering">Anizotropikus szűrés</string>
<string name="anisotropic_filtering_description">Javítja a ferdén megjelenő textúrák minőségét</string>
<!-- Debug settings strings --> <!-- Debug settings strings -->
<string name="cpu">CPU</string> <string name="cpu">CPU</string>
<string name="cpu_debug_mode">CPU hibakeresés</string> <string name="cpu_debug_mode">CPU hibakeresés</string>
@ -247,89 +238,6 @@
<string name="audio_volume">Hangerő</string> <string name="audio_volume">Hangerő</string>
<string name="audio_volume_description">Hangkimenet hangerejének megadása</string> <string name="audio_volume_description">Hangkimenet hangerejének megadása</string>
<!-- Input strings -->
<string name="buttons">Gombok</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Plusz</string>
<string name="button_minus">Mínusz</string>
<string name="button_home">Home</string>
<string name="button_capture">Rögzítés</string>
<string name="start_pause">Indítás/Szünet</string>
<string name="dpad">D-Pad</string>
<string name="up">Fel</string>
<string name="down">Le</string>
<string name="left">Balra</string>
<string name="right">Jobbra</string>
<string name="left_stick">Bal kar</string>
<string name="right_stick">Jobb kar</string>
<string name="pressed">Lenyomva</string>
<string name="range">Tartomány</string>
<string name="deadzone">Holttér</string>
<string name="modifier">Módosító</string>
<string name="modifier_range">Módosító tartomány</string>
<string name="triggers">Ravaszok</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">Bal SL</string>
<string name="button_sr_left">Bal SR</string>
<string name="button_sl_right">Jobb SL</string>
<string name="button_sr_right">Jobb SR</string>
<string name="button_z">Z</string>
<string name="invalid">Érvénytelen</string>
<string name="not_set">Nincs beállítva</string>
<string name="unknown">Ismeretlen</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$sTengely %4$s</string>
<string name="qualified_button">%1$s%2$s%3$sGomb %4$s</string>
<string name="qualified_axis">Tengely %1$s%2$s</string>
<string name="unused">Nem használt</string>
<string name="input_prompt">Nyomj vagy mozgass meg egy bemeneti eszközt.</string>
<string name="unsupported_input">Nem támogatott bemenet típus</string>
<string name="input_mapping_filter">Bemeneti hozzárendelési szűrő</string>
<string name="input_mapping_filter_description">Válassz egy eszközt a hozzárendelési bemenetek szűréséhez</string>
<string name="auto_map">Kontroller auto-hozzárendelés</string>
<string name="auto_map_description">Válassz egy eszközt, amihez auto-hozzárendelést szeretnél</string>
<string name="attempted_auto_map">Auto-hozzárendelés megkísérelve: %1$s</string>
<string name="controller_type">Kontroller típusa</string>
<string name="pro_controller">Pro kontroller</string>
<string name="handheld">Kézi</string>
<string name="dual_joycons">Dual Joycon</string>
<string name="left_joycon">Bal Joycon</string>
<string name="right_joycon">Jobb Joycon</string>
<string name="gamecube_controller">GameCube kontroller</string>
<string name="invert_axis">Fordított tengely</string>
<string name="invert_button">Fordított gomb</string>
<string name="toggle_button">Gomb váltása</string>
<string name="turbo_button">Turbó gomb</string>
<string name="set_threshold">Küszöbérték beállítása</string>
<string name="toggle_axis">Tengely váltása</string>
<string name="connected">Csatlakozva</string>
<string name="use_system_vibrator">Rendszer rezgés használata</string>
<string name="input_overlay">Bemeneti átfedés</string>
<string name="vibration">Rezgés</string>
<string name="vibration_strength">Rezgés erőssége</string>
<string name="profile">Profil</string>
<string name="create_new_profile">Új profil létrehozása</string>
<string name="enter_profile_name">Add meg a profil nevét</string>
<string name="profile_name_already_exists">A profilnév már létezik</string>
<string name="invalid_profile_name">Érvénytelen profilnév</string>
<string name="use_global_input_configuration">Globális bemenet konfiguráció használata</string>
<string name="player_num_profile">Játékos %dprofilja </string>
<string name="delete_input_profile">Beviteli profil törlése</string>
<string name="delete_input_profile_description">Biztosan törölni szeretnéd ezt a profilt? Nem fogod tudni visszaállítani.</string>
<string name="stick_map_description">Mozgasd az egyik kart balra, majd fel, vagy nyomj egy gombot</string>
<string name="button_map_description">Nyomj egy gombot vagy mozgasd az egyik ravaszt/kart</string>
<string name="map_dpad_direction">Hozzárendelés %1$s D-pad-hez</string>
<string name="map_control">Hozzárendelés ehhez: %1$s</string>
<string name="failed_to_load_profile">Nem sikerült betölteni a profilt</string>
<string name="failed_to_save_profile">Nem sikerült menteni a profilt</string>
<string name="reset_mapping">Hozzárendelések visszaállítása</string>
<string name="reset_mapping_description">Biztosan alaphelyzetbe szeretnéd állítani az összes hozzárendelést ehhez a vezérlőhöz? Ez nem vonható vissza.</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Alapértelmezett</string> <string name="slider_default">Alapértelmezett</string>
<string name="ini_saved">Beállítások elmentve</string> <string name="ini_saved">Beállítások elmentve</string>
@ -366,11 +274,6 @@
<string name="import_complete">Importálás befejezve</string> <string name="import_complete">Importálás befejezve</string>
<string name="more_options">További opciók</string> <string name="more_options">További opciók</string>
<string name="use_global_setting">Globális beállítás használata</string> <string name="use_global_setting">Globális beállítás használata</string>
<string name="operation_completed_successfully">A művelet sikeresen befejeződött</string>
<string name="retry">Újra</string>
<string name="confirm">Megerősítés</string>
<string name="load">Betöltés</string>
<string name="save">Mentés</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Válassz GPU illesztőprogramot</string> <string name="select_gpu_driver">Válassz GPU illesztőprogramot</string>
@ -392,8 +295,6 @@
<string name="preferences_graphics_description">Pontossági szint, felbontás, árnyékoló gyorsítótár</string> <string name="preferences_graphics_description">Pontossági szint, felbontás, árnyékoló gyorsítótár</string>
<string name="preferences_audio">Hang</string> <string name="preferences_audio">Hang</string>
<string name="preferences_audio_description">Kimeneti motor, hangerő</string> <string name="preferences_audio_description">Kimeneti motor, hangerő</string>
<string name="preferences_controls">Irányítás</string>
<string name="preferences_player">Játékos %d</string>
<string name="preferences_theme">Téma és színek</string> <string name="preferences_theme">Téma és színek</string>
<string name="preferences_debug">Hibakeresés</string> <string name="preferences_debug">Hibakeresés</string>
<string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string> <string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string>
@ -437,14 +338,6 @@
<string name="content_install_notice_description">A kiválasztott tartalom nem ehhez a játékhoz tartozik.\nÍgy is telepíted?</string> <string name="content_install_notice_description">A kiválasztott tartalom nem ehhez a játékhoz tartozik.\nÍgy is telepíted?</string>
<string name="confirm_uninstall">Eltávolítás megerősítése</string> <string name="confirm_uninstall">Eltávolítás megerősítése</string>
<string name="confirm_uninstall_description">Biztosan törölni szeretnéd ezt a kiegészítőt?</string> <string name="confirm_uninstall_description">Biztosan törölni szeretnéd ezt a kiegészítőt?</string>
<string name="verify_integrity">Integritás ellenőrzése</string>
<string name="verifying">Ellenőrzés...</string>
<string name="verify_success">Integritás ellenőrzése sikeres!</string>
<string name="verify_failure">Az integritás ellenőrzése sikertelen!</string>
<string name="verify_failure_description">A fájl tartalma sérült lehet</string>
<string name="verify_no_result">Az integritás ellenőrzését nem lehetett elvégezni</string>
<string name="verify_no_result_description">A fájltartalom érvényessége nem lett ellenőrizve</string>
<string name="verification_failed_for">Az alábbi fájlok ellenőrzése sikertelen volt:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">ROM titkosítva</string> <string name="loader_error_encrypted">ROM titkosítva</string>
@ -458,12 +351,11 @@
<string name="emulation_exit">Emuláció bezárása</string> <string name="emulation_exit">Emuláció bezárása</string>
<string name="emulation_done">Kész</string> <string name="emulation_done">Kész</string>
<string name="emulation_fps_counter">FPS számláló</string> <string name="emulation_fps_counter">FPS számláló</string>
<string name="emulation_thermal_indicator">Hőmérséklet jelző</string>
<string name="emulation_toggle_controls">Irányítás átkapcsolása</string> <string name="emulation_toggle_controls">Irányítás átkapcsolása</string>
<string name="emulation_dpad_slide">D-pad csúsztatása</string> <string name="emulation_dpad_slide">D-pad csúsztatása</string>
<string name="emulation_haptics">Érintés haptikája</string> <string name="emulation_haptics">Érintés haptikája</string>
<string name="emulation_show_overlay">Átfedés mutatása</string> <string name="emulation_show_overlay">Átfedés mutatása</string>
<string name="emulation_toggle_all">Összes átkapcsolása</string> <string name="emulation_toggle_all">Össze átkapcsolása</string>
<string name="emulation_control_adjust">Átfedés testreszabása</string> <string name="emulation_control_adjust">Átfedés testreszabása</string>
<string name="emulation_control_scale">Skálázás</string> <string name="emulation_control_scale">Skálázás</string>
<string name="emulation_control_opacity">Átlátszóság</string> <string name="emulation_control_opacity">Átlátszóság</string>
@ -473,8 +365,6 @@
<string name="emulation_unpause">Emuláció folytatása</string> <string name="emulation_unpause">Emuláció folytatása</string>
<string name="emulation_input_overlay">Átfedés beállításai</string> <string name="emulation_input_overlay">Átfedés beállításai</string>
<string name="touchscreen">Érintőképernyő</string> <string name="touchscreen">Érintőképernyő</string>
<string name="lock_drawer">Fiók bezárása</string>
<string name="unlock_drawer">Fiók kinyitása</string>
<string name="load_settings">Beállítások betöltése...</string> <string name="load_settings">Beállítások betöltése...</string>
@ -533,9 +423,9 @@
<!-- Renderer VSync --> <!-- Renderer VSync -->
<string name="renderer_vsync_immediate">Azonnali (Ki)</string> <string name="renderer_vsync_immediate">Azonnali (Ki)</string>
<string name="renderer_vsync_mailbox">Mailbox</string> <string name="renderer_vsync_mailbox">Postaláda</string>
<string name="renderer_vsync_fifo">FIFO (Be)</string> <string name="renderer_vsync_fifo">FIFO (Be)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string> <string name="renderer_vsync_fifo_relaxed">FIFO Relaxált</string>
<!-- Scaling Filters --> <!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string> <string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
@ -566,8 +456,6 @@
<!-- CPU Backend --> <!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dinamikus (lassú)</string> <string name="cpu_backend_dynarmic">Dinamikus (lassú)</string>
<string name="cpu_backend_nce">Natív kód végrehajtás (Native code execution (NCE))</string>
<!-- CPU Accuracy --> <!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Pontos</string> <string name="cpu_accuracy_accurate">Pontos</string>
<string name="cpu_accuracy_unsafe">Nem biztonságos</string> <string name="cpu_accuracy_unsafe">Nem biztonságos</string>
@ -615,12 +503,6 @@
<string name="mute">Némítás</string> <string name="mute">Némítás</string>
<string name="unmute">Némítás feloldása</string> <string name="unmute">Némítás feloldása</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Függőleges elrendezés</string>
<string name="top">Felül</string>
<string name="center">Középen</string>
<string name="bottom">Alul</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Licenszek</string> <string name="licenses">Licenszek</string>
<string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string> <string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string>

View File

@ -1,587 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_disclaimer">Perangkat lunak ini akan menjalankan game untuk konsol game Nintendo Switch. Tidak ada judul game atau kunci yang disertakan.&lt;br /&gt;&lt;br /&gt;Sebelum memulai, harap cari file <![CDATA[<b> prod.keys </b>]]> di penyimpanan perangkat anda. &lt;br /&gt;&lt;br /&gt;<![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\"> Selengkapnya </a>]]></string>
<string name="notice_notification_channel_name">Pemberitahuan dan error</string>
<string name="notice_notification_channel_description">Menampilkan pemberitahuan ketika terjadi kesalahan.</string>
<string name="notification_permission_not_granted">Izin notifikasi tidak diberikan!</string>
<!-- Setup strings -->
<string name="welcome">Selamat datang!</string>
<string name="welcome_description">Pelajari cara menyiapkan &lt;b>yuzu&lt;/b> dan masuk ke dalam emulasi.</string>
<string name="get_started">Memulai</string>
<string name="keys">Kunci</string>
<string name="keys_description">Pilih file &lt;b>prod.keys&lt;/b> Anda dengan tombol di bawah ini.</string>
<string name="select_keys">Pilih Kunci</string>
<string name="games">Permainan</string>
<string name="games_description">Pilih folder &lt;b>Games&lt;/b> Anda dengan tombol di bawah ini.</string>
<string name="done">Selesai</string>
<string name="done_description">Anda sudah siap.\nNikmati permainan Anda!</string>
<string name="text_continue">Lanjut</string>
<string name="next">Berikutnya</string>
<string name="back">Kembali</string>
<string name="add_games">Tambahkan permainan</string>
<string name="add_games_description">Pilih folder game anda</string>
<string name="step_complete">Selesai!</string>
<!-- Home strings -->
<string name="home_games">Permainan</string>
<string name="home_search">Cari</string>
<string name="home_settings">Pengaturan</string>
<string name="empty_gamelist">Tidak ada file yang ditemukan atau belum ada direktori game yang dipilih.</string>
<string name="search_and_filter_games">Cari dan filter game</string>
<string name="select_games_folder">Pilih folder permainan</string>
<string name="manage_game_folders">Kelola folder game</string>
<string name="select_games_folder_description">Izinkan yuzu mengisi daftar game</string>
<string name="add_games_warning">Lewati pemilihan folder game?</string>
<string name="add_games_warning_description">Game tidak akan muncul di list jika tidak ada folder yang dipilih.</string>
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
<string name="home_search_games">Cari permainan</string>
<string name="search_settings">Cari pengaturan</string>
<string name="games_dir_selected">Direktori game sudah terpilih</string>
<string name="install_prod_keys">Install prod.keys</string>
<string name="install_prod_keys_description">Diperlukan untuk mendekripsi game retail</string>
<string name="install_prod_keys_warning">Lewati penginstalan keys?</string>
<string name="install_prod_keys_warning_description">Perlu keys yang valid untuk meng-emulate game retail. Hanya homebrew apps yang akan berfungsi jika kamu melanjutkan.</string>
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
<string name="notifications">Notifikasi</string>
<string name="notifications_description">Berikan izin notifikasi dengan tombol di bawah ini.</string>
<string name="give_permission">Berikan izin</string>
<string name="notification_warning">Lewati pemberian izin notifikasi?</string>
<string name="notification_warning_description">yuzu tidak akan dapat memberi tahu Anda tentang informasi penting.</string>
<string name="permission_denied">Izin ditolak</string>
<string name="permission_denied_description">Kamu terlalu sering menolak izin ini dan sekarang anda harus memberikannya secara manual di pengaturan sistem.</string>
<string name="about">Tentang</string>
<string name="about_description">Versi build, kredit, dan lainnya</string>
<string name="warning_help">Bantuan</string>
<string name="warning_skip">Lewati</string>
<string name="warning_cancel">Batalkan</string>
<string name="install_amiibo_keys">Install Amiibo keys</string>
<string name="install_amiibo_keys_description">Diperlukan untuk menggunakan Amiibo di dalam game</string>
<string name="invalid_keys_file">Keys yang dipilih invalid</string>
<string name="install_keys_success">Keys berhasil diinstal</string>
<string name="reading_keys_failure">Error saat mengecek enkripsi keys</string>
<string name="install_prod_keys_failure_extension_description">Pastikan file keys anda memiliki format .keys dan coba lagi.</string>
<string name="install_amiibo_keys_failure_extension_description">Pastikan file keys anda memiliki format .bin dan coba lagi.</string>
<string name="invalid_keys_error">Keys enkripsi tidak valid</string>
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="install_keys_failure_description">File yang dipilih salah atau rusak. Silakan masukkan kembali kunci Anda.</string>
<string name="gpu_driver_manager">Manajer driver GPU</string>
<string name="install_gpu_driver">Install driver GPU</string>
<string name="install_gpu_driver_description">Instal driver lain untuk kinerja atau akurasi yang berpotensi lebih baik</string>
<string name="advanced_settings">Pengaturan lanjutan</string>
<string name="advanced_settings_game">Pengaturan lanjutan: %1$s</string>
<string name="settings_description">Konfigurasikan pengaturan emulator</string>
<string name="search_recently_played">Baru dimainkan</string>
<string name="search_recently_added">baru ditambahkan</string>
<string name="search_retail">Retail</string>
<string name="search_homebrew">Homebrew</string>
<string name="open_user_folder">Buka folder yuzu</string>
<string name="open_user_folder_description">Kelola file internal yuzu\'s</string>
<string name="theme_and_color_description">Ubah tampilan aplikasi</string>
<string name="no_file_manager">Tidak menemukan file manager</string>
<string name="notification_no_directory_link">Tidak bisa membuka direktori yuzu</string>
<string name="notification_no_directory_link_description">Silakan cari folder pengguna dengan panel samping manajer file secara manual.</string>
<string name="manage_save_data">Kelola save data</string>
<string name="manage_save_data_description">Data simpanan ditemukan. Silakan pilih opsi di bawah.</string>
<string name="import_save_warning">Impor data simpanan</string>
<string name="import_save_warning_description">Melakukan ini berarti akan menimpa seluruh data simpanan yang sudah ada sebelumnya dengan file simpanan yang Anda berikan. Apakah Anda yakin?</string>
<string name="import_export_saves_description">Impor atau Ekspor file simpanan</string>
<string name="save_files_importing">Mengimpor file simpanan...</string>
<string name="save_files_exporting">Mengekspor file simpanan...</string>
<string name="save_file_imported_success">Berhasil mengimpor</string>
<string name="save_file_invalid_zip_structure">Struktur direktori simpanan tidak valid.</string>
<string name="save_file_invalid_zip_structure_description">Nama subfolder pertama harus merupakan title ID dari game.</string>
<string name="import_saves">Impor</string>
<string name="export_saves">Ekspor</string>
<string name="install_firmware">Install firmware</string>
<string name="install_firmware_description">Firmware harus merupakan sebuah file .ZIP dan diperlukan untuk menjalankan beberapa game.</string>
<string name="firmware_installing">Menginstall firmware</string>
<string name="firmware_installed_success">Firmware terpasang.</string>
<string name="firmware_installed_failure">Gagal memasang Firmware.</string>
<string name="firmware_installed_failure_description">Pastikan file nca firmware terdapat pada folder utama dari file .zip dan coba lagi.</string>
<string name="share_log">Bagikan log debug</string>
<string name="share_log_description">Bagikan file log yuzu untuk mendebug isu</string>
<string name="share_log_missing">Tidak ada log file yang ditemukan</string>
<string name="install_game_content">Instal konten game.</string>
<string name="install_game_content_description">Instal pembaruan game atau DLC</string>
<string name="installing_game_content">Menginstal konten...</string>
<string name="install_game_content_failure">Error menginstal file (- file) pada NAND</string>
<string name="install_game_content_failure_description">Tolong pastikan seluruh konten(-konten) valid dan prod.key terinstall</string>
<string name="install_game_content_failure_base">Instalasi dari base game tidak diperbolehkan agar terhindar dari konflik yang mungkin terjadi.</string>
<string name="install_game_content_failure_file_extension">Hanya konten NSP dan XCi yang didukung. Harap periksa apakah konten (-konten) dari game sudah valid.</string>
<string name="install_game_content_failed_count">%1$d instalasi error(-error)</string>
<string name="install_game_content_success">Konten(-konten) game sudah berhasil terinstal.</string>
<string name="install_game_content_success_install">%1$d telah berhasil terinstal</string>
<string name="install_game_content_success_overwrite">%1$d telah berhasil ditimpa.</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">Driver kustom tidak didukung</string>
<string name="custom_driver_not_supported_description">Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan!</string>
<string name="manage_yuzu_data">Kelola data Yuzu.</string>
<string name="manage_yuzu_data_description">Impor/expor firmware, key, data pengguna, dan sebagainya!</string>
<string name="share_save_file">Bagikan file simpanan.</string>
<string name="export_save_failed">Gagal mengekspor simpanan.</string>
<string name="game_folders">Folder Game</string>
<string name="deep_scan">Pemindaian mendalam</string>
<string name="add_game_folder">Pilih folder game</string>
<string name="folder_already_added">Folder ini telah ditambahkan!</string>
<string name="game_folder_properties">Properti folder game</string>
<plurals name="saves_import_failed">
<item quantity="other">Gagal mengimpor %d simpanan.</item>
</plurals>
<plurals name="saves_import_success">
<item quantity="other">Berhasil mengimpor %d simpanan.</item>
</plurals>
<string name="no_save_data_found">Tidak ada data simpanan yang ditemukan.</string>
<string name="verify_installed_content">Verifikasi konten yang terinstal</string>
<string name="verify_installed_content_description">Memeriksa semua konten yang terinstal dari kerusakan</string>
<string name="keys_missing">Kunci enkripsi hilang</string>
<string name="keys_missing_description">Firmware dan game retail tidak dapat didekripsi</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings -->
<string name="applets">Luncurkan applet</string>
<string name="applets_description">Meluncurkan sistem applet menggunakan firmware yang diinstal</string>
<string name="applets_error_firmware">Firmware tidak terinstal</string>
<string name="applets_error_applet">Applet tidak tersedia</string>
<string name="applets_error_description"><![CDATA[Pastikan file prod.keys dan firmware Anda terpasang dan coba lagi.]]></string>
<string name="album_applet">Album</string>
<string name="album_applet_description">Lihat gambar yang disimpan di folder tangkapan layar pengguna dengan penampil foto sistem.</string>
<string name="mii_edit_applet">Ubah Mii</string>
<string name="mii_edit_applet_description">Lihat dan ubah Miis dengan mengedit sistem</string>
<string name="cabinet_applet">Kabinet</string>
<string name="cabinet_applet_description">Ubah dan hapus data yang disimpan pada amiibo</string>
<string name="cabinet_launcher">Peluncur kabinet</string>
<string name="cabinet_nickname_and_owner">Pengaturan Nama Panggilan dan Pemilik</string>
<string name="cabinet_game_data_eraser">Hapus data game</string>
<string name="cabinet_restorer">Mengembalikan</string>
<string name="cabinet_formatter">Mengatur</string>
<!-- About screen strings -->
<string name="gaia_is_not_real">Gaia tidak nyata</string>
<string name="copied_to_clipboard">Salin ke papan klip</string>
<string name="about_app_description">Emulator Switch Open-Source</string>
<string name="contributors">Kontributor</string>
<string name="contributors_description">Dibuat dengan \u2764 dari tim yuzu</string>
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
<string name="licenses_description">Proyek yang memungkinkan yuzu untuk Android</string>
<string name="build">Versi</string>
<string name="user_data">Data pengguna</string>
<string name="user_data_description">Impor/ekspor semua data aplikasi.\n\nKetika mengimpor data pengguna, semua data pengguna yang ada akan dihapus!</string>
<string name="exporting_user_data">Mengekspor data pengguna</string>
<string name="importing_user_data">Mengimpor data pengguna</string>
<string name="import_user_data">Impor data pengguna</string>
<string name="invalid_yuzu_backup">cadangan yuzu tidak valid</string>
<string name="user_data_export_success">berhasil mengekspor data pengguna</string>
<string name="user_data_import_success">Berhasil mengimpor data pengguna</string>
<string name="user_data_export_cancelled">Ekspor Dibatalkan</string>
<string name="user_data_import_failed_description">Pastikan folder data pengguna berada di akar folder zip dan berisi file konfigurasi di config/config.ini dan coba lagi.</string>
<string name="support_link">https://discord.gg/u77vRWY</string>
<string name="website_link">https://yuzu-emu.org/</string>
<string name="github_link">https://github.com/yuzu-emu</string>
<!-- Early access upgrade strings -->
<string name="early_access">Akses lebih awal</string>
<string name="get_early_access">Dapatkan akses lebih awal</string>
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
<string name="get_early_access_description">Fitur-fitur yang paling baru, akses lebih awal untuk perbaruan, dan lain-lain.</string>
<string name="early_access_benefits">Manfaat Akses Awal</string>
<string name="cutting_edge_features">Fitur-fitur yang paling baru</string>
<string name="early_access_updates">Akses lebih awal untuk pembaruan</string>
<string name="no_manual_installation">Tidak ada instalasi manual</string>
<string name="prioritized_support">Dukungan yang diprioritaskan</string>
<string name="helping_game_preservation">Membantu pemeliharaan game</string>
<string name="our_eternal_gratitude">Ucapan terima kasih kami yang tak terhingga</string>
<string name="are_you_interested">Apa kamu tertarik?</string>
<!-- General settings strings -->
<string name="frame_limit_enable">Batas kecepatan</string>
<string name="frame_limit_enable_description">Membatasi kecepatan emulasi ke persentase tertentu dari kecepatan normal</string>
<string name="frame_limit_slider">Batas persentase kecepatan</string>
<string name="frame_limit_slider_description">Menentukan persentase untuk membatasi kecepatan emulasi. 100% adalah kecepatan normal. Nilai yang lebih tinggi atau lebih rendah akan menambah atau mengurangi batas kecepatan</string>
<string name="cpu_backend">Backend CPU</string>
<string name="cpu_accuracy">Akurasi CPU</string>
<string name="value_with_units">%1$s%2$s</string>
<string name="use_docked_mode">Mode Docked</string>
<string name="use_docked_mode_description">Meningkatkan resolusi, menurunkan performa. Mode Handled digunakan saat dinonaktifkan, menurunkan resolusi dan meningkatkan performa</string>
<string name="emulated_region">Wilayah yang diemulasikan</string>
<string name="emulated_language">Bahasa yang diemulasikan</string>
<string name="select_rtc_date">Pilih tanggal RTC</string>
<string name="select_rtc_time">Pilih waktu RTC</string>
<string name="use_custom_rtc">RTC Kustom</string>
<string name="use_custom_rtc_description">Memungkinkan Anda untuk mengatur jam waktu nyata kustom yang terpisah dari waktu sistem saat ini Anda.</string>
<string name="set_custom_rtc">Setel RTC Kustom</string>
<!-- Graphics settings strings -->
<string name="renderer_accuracy">Tingkatan Akurasi</string>
<string name="renderer_resolution">Resolusi (Handheld/Docked)</string>
<string name="renderer_vsync">Mode Sinkronisasi Vertikal</string>
<string name="renderer_screen_layout">Orientasi</string>
<string name="renderer_aspect_ratio">Rasio Aspek</string>
<string name="renderer_scaling_filter">Filter penyesuaian jendela</string>
<string name="fsr_sharpness">Ketajaman FSR</string>
<string name="fsr_sharpness_description">Menentukan seberapa tajam gambar akan terlihat saat menggunakan kontras dinamis FSR</string>
<string name="renderer_anti_aliasing">Metode anti-aliasing</string>
<string name="renderer_force_max_clock">Paksa jam maximum (hanya untuk Adreno)</string>
<string name="renderer_force_max_clock_description">Memaksa GPU untuk berjalan pada kecepatan maksimum yang mungkin (batasan termal masih akan diterapkan).</string>
<string name="renderer_asynchronous_shaders">Gunakan shader asinkron</string>
<string name="renderer_asynchronous_shaders_description">Mengompilasi shader secara asinkron mengurangi Tutup Paksa tetapi dapat menimbulkan gangguan.</string>
<string name="renderer_reactive_flushing">Gunakan reactive flushing</string>
<string name="renderer_reactive_flushing_description">Meningkatkan akurasi rendering dalam beberapa permainan dengan mengorbankan performa.</string>
<string name="use_disk_shader_cache">Cache shader disk</string>
<string name="use_disk_shader_cache_description">Mengurangi Tutup Paksa dengan menyimpan dan memuat yang dihasilkan secara lokal</string>
<string name="anisotropic_filtering">Penyaringan Anisotropik</string>
<string name="anisotropic_filtering_description">Meningkatkan kualitas tekstur bila dilihat pada sudut miring</string>
<!-- Debug settings strings -->
<string name="cpu">CPU</string>
<string name="cpu_debug_mode">Debugging CPU</string>
<string name="cpu_debug_mode_description">Menempatkan CPU dalam mode debugging lambat</string>
<string name="gpu">GPU</string>
<string name="renderer_api">API</string>
<string name="renderer_debug">Debugging Grafis</string>
<string name="renderer_debug_description">Menyetel grafis API ke mode lambat</string>
<string name="fastmem">Fastmem</string>
<!-- Audio settings strings -->
<string name="audio_output_engine">Output audio</string>
<string name="audio_volume">Volume</string>
<string name="audio_volume_description">Menentukan volume output audio</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Tambah</string>
<string name="button_minus">Kurang</string>
<string name="button_home">Home</string>
<string name="button_capture">Tangkapan</string>
<string name="dpad">D-Pad</string>
<string name="up">Atas</string>
<string name="down">Bawah</string>
<string name="left">Kiri</string>
<string name="right">Kanan</string>
<string name="left_stick">Left Stick</string>
<string name="right_stick">Right Stick</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Ditekan</string>
<string name="range">Jangkauan</string>
<string name="modifier">Pemodifikasi</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Tidak valid</string>
<string name="pro_controller">Kontroler Pro</string>
<string name="handheld">Jinjing</string>
<string name="dual_joycons">Joycon Dual</string>
<string name="left_joycon">Joycon Kiri</string>
<string name="right_joycon">Joycon Kanan</string>
<string name="gamecube_controller">Kontroler GameCube</string>
<string name="invert_axis">Balikkan poros</string>
<string name="invert_button">Balikkan tombol</string>
<string name="toggle_button">Atur tombol</string>
<string name="turbo_button">Tombol turbo</string>
<string name="set_threshold">Atur batasan</string>
<string name="connected">Terhubung</string>
<string name="vibration">Getaran</string>
<string name="profile">Profil</string>
<!-- Miscellaneous -->
<string name="slider_default">Bawaan</string>
<string name="ini_saved">Pengaturan yang disimpan</string>
<string name="gameid_saved">Pengaturan yang disimpan untuk%1$s</string>
<string name="error_saving">Gagal menyimpan%1$s.ini:%2$s</string>
<string name="unimplemented_menu">Menu yang belum diimplementasikan</string>
<string name="loading">Memuat...</string>
<string name="shutting_down">Menutup...</string>
<string name="reset_setting_confirmation">Apakah Anda ingin mengatur ulang pengaturan ini kembali ke nilai defaultnya?</string>
<string name="reset_to_default">Setel ulang ke bawaan</string>
<string name="reset_to_default_description">Mereset semua pengaturan lanjutan</string>
<string name="reset_all_settings">Atur ulang semua pengaturan?</string>
<string name="reset_all_settings_description">Semua pengaturan lanjutan akan diatur ulang ke konfigurasi default mereka. Ini tidak dapat dibatalkan.</string>
<string name="settings_reset">Pengaturan diatur ulang</string>
<string name="close">Tutup</string>
<string name="learn_more">Pelajari lebih lanjut</string>
<string name="auto">Otomatis</string>
<string name="submit">Kirimkan</string>
<string name="string_null">Null</string>
<string name="string_import">Impor</string>
<string name="export">Ekspor</string>
<string name="export_failed">Ekspor gagal</string>
<string name="import_failed">Impor gagal</string>
<string name="cancelling">Membatalkan</string>
<string name="install">Instal</string>
<string name="delete">Hapus</string>
<string name="edit">Ubah</string>
<string name="export_success">Berhasil diekspor</string>
<string name="start">Mulai</string>
<string name="clear">Bersihkan</string>
<string name="global">Utama</string>
<string name="custom">Kustom</string>
<string name="notice">Pemberitahuan</string>
<string name="import_complete">Impor Selasai</string>
<string name="more_options">Opsi Lain</string>
<string name="use_global_setting">Gunakan Pengaturan Utama</string>
<string name="operation_completed_successfully">Operasi selsesai dengan sukses</string>
<string name="save">Simpan</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">Pilih driver GPU</string>
<string name="select_gpu_driver_title">Apakah Anda ingin mengganti driver GPU saat ini?</string>
<string name="select_gpu_driver_install">Instal</string>
<string name="select_gpu_driver_default">Bawaan</string>
<string name="select_gpu_driver_use_default">Gunakan driver GPU Bawaan</string>
<string name="select_gpu_driver_error">Driver yang dipilih tidak valid</string>
<string name="driver_already_installed">Driver sudah terpasang</string>
<string name="system_gpu_driver">Driver GPU sistem</string>
<string name="installing_driver">Memasang driver...</string>
<!-- Preferences Screen -->
<string name="preferences_settings">Pengaturan</string>
<string name="preferences_general">Umum</string>
<string name="preferences_system">Sistem</string>
<string name="preferences_system_description">Mode Docked, wilayah, bahasa</string>
<string name="preferences_graphics">Grafis</string>
<string name="preferences_graphics_description">Tingkat akurasi, resolusi, cache shader</string>
<string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Output audio, volume</string>
<string name="preferences_controls">Kendali</string>
<string name="preferences_theme">Tema dan warna</string>
<string name="preferences_debug">Awakutu</string>
<string name="preferences_debug_description">CPU/GPU debugging, graphics API, fastmem</string>
<!-- Game properties -->
<string name="info">Info</string>
<string name="info_description">ID program, pengembang, versi</string>
<string name="per_game_settings">Pengaturan per game</string>
<string name="per_game_settings_description">Mengedit pengaturan khusus untuk game ini</string>
<string name="launch_options">Luncurkan konfigurasi</string>
<string name="path">Jalur</string>
<string name="program_id">Program Id</string>
<string name="developer">Pengembang</string>
<string name="version">Versi</string>
<string name="copy_details">Salin Detail</string>
<string name="add_ons">Pengaya</string>
<string name="add_ons_description">Ganti mod, pembaruan dan dlc</string>
<string name="clear_shader_cache">Menghapus Cache Shader</string>
<string name="clear_shader_cache_description">Menghapus semua shader yang dibangun saat bermain game ini</string>
<string name="clear_shader_cache_warning_description">Anda akan mengalami lebih banyak stuttering saat shader cache diregenerasi.</string>
<string name="cleared_shaders_successfully">Berhasil Membersihkan hader </string>
<string name="addons_game">Pengaya Permainan: %1$s</string>
<string name="save_data">Simpanan Data</string>
<string name="save_data_description">Mengelola data simpanan yang spesifik untuk permainan ini</string>
<string name="delete_save_data">Hapus Simpanan Data</string>
<string name="delete_save_data_description">Menghapus semua data simpanan yang spesifik untuk permainan ini</string>
<string name="delete_save_data_warning_description">Apakah Anda yakin ingin melanjutkan? Ini akan menghapus semua data simpanan permainan ini secara permanen.</string>
<string name="save_data_deleted_successfully">Simpanan Data Berhasil Dihapus</string>
<string name="select_content_type">Pilih Jenis Konten</string>
<string name="updates_and_dlc">Update Dan Dlc</string>
<string name="mods_and_cheats">Mod Dan Cheat</string>
<string name="addon_notice">Pemberitahuan Pengaya</string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="addon_notice_description">Untuk memasang mod dan cheat, Anda harus memilih folder yang berisi direktori cheats/, romfs/, atau exefs/. Kami tidak dapat memverifikasi apakah semua ini kompatibel dengan game Anda, jadi berhati-hatilah!</string>
<string name="invalid_directory">Direktori Tidak Valid</string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="invalid_directory_description">Pastikan direktori yang Anda pilih berisi folder cheats/, romfs/, atau exefs/, lalu coba lagi.</string>
<string name="addon_installed_successfully">Pengaya Sukses Dipasang</string>
<string name="verifying_content">Memverifikasi Konten</string>
<string name="content_install_notice">Pemberitahuan Pemasangan</string>
<string name="content_install_notice_description">Konten yang Anda pilih tidak cocok dengan game ini. Tetap Install?</string>
<string name="confirm_uninstall">Hapus Installasi</string>
<string name="confirm_uninstall_description">Apakah Anda yakin ingin menghapus addon ini?</string>
<string name="verify_integrity">Integritas</string>
<string name="verifying">Memverifikasi</string>
<string name="verify_success">Berhasil</string>
<string name="verify_failure">Gagal</string>
<string name="verify_failure_description">Konten file mungkin rusak</string>
<string name="verify_no_result">Tidak Ada Hasil</string>
<string name="verify_no_result_description">Isi file tidak diperiksa ke validasinya</string>
<string name="verification_failed_for">Verifikasi gagal untuk file-file berikut:\n%1$s</string>
<!-- ROM loading errors -->
<string name="loader_error_encrypted">ROM-mu ter-enkripsi</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Silakan ikuti panduan untuk redump <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">kartu permainan</a> atau <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">judul yang terinstal</a>.]]></string>
<string name="loader_error_encrypted_keys_description"><![CDATA[Harap pastikan bahwa Anda <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> diinstal sehingga game dapat didekripsi.]]></string>
<string name="loader_error_video_core">Terjadi kesalahan ketika menginisialisasi inti video.</string>
<string name="loader_error_video_core_description">Hal ini biasanya disebabkan oleh driver GPU yang tidak kompatibel. Menginstal driver GPU khusus dapat mengatasi masalah ini</string>
<string name="loader_error_invalid_format">Tidak Dapat Memuat ROM</string>
<string name="loader_error_file_not_found">Berkas Tidak Ditemukan</string>
<!-- Emulation Menu -->
<string name="emulation_exit">Keluar</string>
<string name="emulation_done">Selesai</string>
<string name="emulation_fps_counter">penghitung Fps </string>
<string name="emulation_thermal_indicator">Indikator termal</string>
<string name="emulation_toggle_controls">Beralih Kontrol</string>
<string name="emulation_rel_stick_center">Pusat stick relatif</string>
<string name="emulation_dpad_slide">Geser Dpad</string>
<string name="emulation_haptics">Haptik</string>
<string name="emulation_show_overlay">Tampilkan Hamparan</string>
<string name="emulation_toggle_all">Alihkan Semua</string>
<string name="emulation_control_adjust">Menyesuaikan</string>
<string name="emulation_control_scale">Skala</string>
<string name="emulation_control_opacity">Kegelapan</string>
<string name="emulation_touch_overlay_reset">Penyetelan Ulang Hamparan</string>
<string name="emulation_touch_overlay_edit">Edit Hamparan</string>
<string name="emulation_pause">Jeda</string>
<string name="emulation_unpause">Batalkan Jeda</string>
<string name="emulation_input_overlay">Hamparan Masukan</string>
<string name="touchscreen">Layar Sentuh</string>
<string name="lock_drawer">Kunci Laci</string>
<string name="unlock_drawer">Buka Kunci Laci</string>
<string name="load_settings">Pengaturan</string>
<!-- Software keyboard -->
<string name="software_keyboard">Papan Ketik Perangkat Lunak</string>
<!-- Errors and warnings -->
<string name="abort_button">Batalkan</string>
<string name="continue_button">Lanjut</string>
<string name="system_archive_not_found">Arsip Tidak Ditemukan</string>
<string name="system_archive_not_found_message">%s hilang. Harap buang arsip sistem Anda.\nMelanjutkan emulasi dapat menyebabkan kerusakan dan bug.</string>
<string name="system_archive_general">Arsip Umum</string>
<string name="save_load_error">Kesalahan Memuat</string>
<string name="fatal_error">Kesalahan Fatal</string>
<string name="fatal_error_message">Kesalahan Fatal Pesan. Periksa log untuk rincian.\nMelanjutkan emulasi dapat menyebabkan crash dan bug.</string>
<string name="performance_warning">Matikan pengaturan ini akan signifikan mengurangi kinerja emulasi! Untuk pengalaman terbaik, disarankan agar Anda tetap mengaktifkan pengaturan ini.</string>
<string name="device_memory_inadequate">Ram Perangkat: %1$s\nRekomendasikan: %2$s</string>
<string name="memory_formatted">%1$s%2$s</string>
<string name="no_game_present">Tidak ada permainan yang dapat di-boot!</string>
<!-- Region Names -->
<string name="region_japan">Jepang</string>
<string name="region_usa">Amerika Serikat</string>
<string name="region_europe">Eropa</string>
<string name="region_australia">Australia</string>
<string name="region_china">Tiongkok</string>
<string name="region_korea">Korea</string>
<string name="region_taiwan">Taiwan</string>
<!-- Memory Sizes -->
<string name="memory_byte">Byte</string>
<string name="memory_byte_shorthand">B</string>
<string name="memory_kilobyte">KB</string>
<string name="memory_megabyte">MB</string>
<string name="memory_gigabyte">Britania Raya</string>
<string name="memory_terabyte">TB</string>
<string name="memory_petabyte">PB</string>
<string name="memory_exabyte">EB</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Tak ada</string>
<!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">Normal</string>
<string name="renderer_accuracy_high">Tinggi</string>
<string name="renderer_accuracy_extreme">Ekstrim (Lambat)</string>
<!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string>
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
<string name="resolution_one">1X (720p/1080p)</string>
<string name="resolution_two">2X (1440p/2160p) (Lambat)</string>
<string name="resolution_three">3X (2160p/3240p) (Lambat)</string>
<string name="resolution_four">4X (2880p/4320p) (Lambat)</string>
<!-- Renderer VSync -->
<string name="renderer_vsync_immediate">Immediate (OFF)</string>
<string name="renderer_vsync_mailbox">Mailbox</string>
<string name="renderer_vsync_fifo">FIFO (ON)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
<!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
<string name="scaling_filter_bilinear">Biliner</string>
<string name="scaling_filter_bicubic">Bikubik</string>
<string name="scaling_filter_gaussian">Gaussian</string>
<string name="scaling_filter_scale_force">ScaleForce</string>
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolusi</string>
<!-- Anti-Aliasing -->
<string name="anti_aliasing_none">Tak ada</string>
<string name="anti_aliasing_fxaa">FXAA</string>
<string name="anti_aliasing_smaa">SMAA</string>
<!-- Screen Layouts -->
<string name="screen_layout_auto">Otomatis</string>
<string name="screen_layout_sensor_landscape">Lanskap Sensor</string>
<string name="screen_layout_landscape">Lanskap</string>
<string name="screen_layout_reverse_landscape">Lanskap Terbalik</string>
<string name="screen_layout_sensor_portrait">Potret Sensor</string>
<string name="screen_layout_portrait">Potret</string>
<string name="screen_layout_reverse_portrait">Potret Terbalik</string>
<!-- Aspect Ratios -->
<string name="ratio_default">Bawaan (16:9)</string>
<string name="ratio_force_four_three">Paksa 4:3</string>
<string name="ratio_force_twenty_one_nine">Paksa 21:9</string>
<string name="ratio_force_sixteen_ten">Paksa 16:10</string>
<string name="ratio_stretch">Merentangkan</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynamic (Lambat)</string>
<string name="cpu_backend_nce">Native code execution (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Akurat</string>
<string name="cpu_accuracy_unsafe">Berbahaya</string>
<string name="cpu_accuracy_paranoid">Paranoid (Slow)</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D Pad</string>
<string name="gamepad_left_stick">Left Stick</string>
<string name="gamepad_right_stick">Right Stick</string>
<string name="gamepad_home">Home</string>
<string name="gamepad_screenshot">Screenshot</string>
<!-- Disk shader cache -->
<string name="preparing_shaders">menyiapkan shader</string>
<string name="building_shaders">membangun shader</string>
<!-- Theme options -->
<string name="change_app_theme">Ubah Tema</string>
<string name="theme_default">Bawaan</string>
<string name="theme_material_you">Material Anda</string>
<!-- Theme Modes -->
<string name="change_theme_mode">Mengubah Tema</string>
<string name="theme_mode_follow_system">Mengikuti Sistem</string>
<string name="theme_mode_light">Terang</string>
<string name="theme_mode_dark">Gelap</string>
<!-- Audio output engines -->
<string name="oboe">Oboe</string>
<string name="cubeb">Cubeb</string>
<!-- Anisotropic filtering options -->
<string name="multiplier_two">2x</string>
<string name="multiplier_four">4x</string>
<string name="multiplier_eight">8x</string>
<string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Gunakan Latar Belakang Hitam</string>
<string name="use_black_backgrounds_description">Apabila menggunakan tema gelap, terapkan latar belakang hitam</string>
<!-- Picture-In-Picture -->
<string name="picture_in_picture">Gambar dalam gambar</string>
<string name="picture_in_picture_description">Meminimalkan jendela apabila ditempatkan di latar belakang</string>
<string name="pause">Jeda</string>
<string name="play">Bermain</string>
<string name="mute">Bisukan</string>
<string name="unmute">Membunyikan</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Penyelarasan vertikal</string>
<string name="top">Atas</string>
<string name="center">Pusat</string>
<string name="bottom">Bawah</string>
<!-- Licenses screen strings -->
<string name="licenses">Lisensi</string>
<string name="license_fidelityfx_fsr_description">Peningkatan kualitas tinggi dari AMD</string>
</resources>

View File

@ -31,7 +31,6 @@
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string> <string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
<string name="search_and_filter_games">Cerca e filtra i giochi</string> <string name="search_and_filter_games">Cerca e filtra i giochi</string>
<string name="select_games_folder">Seleziona la cartella dei giochi</string> <string name="select_games_folder">Seleziona la cartella dei giochi</string>
<string name="manage_game_folders">Gestisci le cartelle dei giochi</string>
<string name="select_games_folder_description">Consente a yuzu di popolare l\'elenco dei giochi</string> <string name="select_games_folder_description">Consente a yuzu di popolare l\'elenco dei giochi</string>
<string name="add_games_warning">Saltare la selezione della cartella dei giochi?</string> <string name="add_games_warning">Saltare la selezione della cartella dei giochi?</string>
<string name="add_games_warning_description">I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata.</string> <string name="add_games_warning_description">I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata.</string>
@ -84,11 +83,7 @@
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string> <string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
<string name="manage_save_data">Gestisci i salvataggi</string> <string name="manage_save_data">Gestisci i salvataggi</string>
<string name="manage_save_data_description">Salvataggio non trovato. Seleziona un\'opzione di seguito.</string> <string name="manage_save_data_description">Salvataggio non trovato. Seleziona un\'opzione di seguito.</string>
<string name="import_save_warning">Importa dei salvataggi</string>
<string name="import_save_warning_description">ATTENZIONE: Tutti i salvataggi già presenti sul dispositivo verranno SOSTITUITI dai nuovi. Sicuro di voler continuare?</string>
<string name="import_export_saves_description">Importa o esporta i salvataggi</string> <string name="import_export_saves_description">Importa o esporta i salvataggi</string>
<string name="save_files_importing">Importazione dei salvataggi...</string>
<string name="save_files_exporting">Esportazione dei salvataggi..</string>
<string name="save_file_imported_success">Importato con successo</string> <string name="save_file_imported_success">Importato con successo</string>
<string name="save_file_invalid_zip_structure">La struttura della cartella dei salvataggi è invalida</string> <string name="save_file_invalid_zip_structure">La struttura della cartella dei salvataggi è invalida</string>
<string name="save_file_invalid_zip_structure_description">La prima sotto cartella <b>deve</b> chiamarsi come l\'ID del titolo del gioco.</string> <string name="save_file_invalid_zip_structure_description">La prima sotto cartella <b>deve</b> chiamarsi come l\'ID del titolo del gioco.</string>
@ -121,16 +116,6 @@
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string> <string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
<string name="share_save_file">Condividi i tuoi dati di salvataggio</string> <string name="share_save_file">Condividi i tuoi dati di salvataggio</string>
<string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string> <string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string>
<string name="game_folders">Cartelle di gioco</string>
<string name="deep_scan">Scansione Sotto-Cartelle</string>
<string name="add_game_folder">Aggiungi Cartella di gioco</string>
<string name="folder_already_added">Questa cartella è già presente nell\'elenco.</string>
<string name="game_folder_properties">Proprietà della cartella di Gioco</string>
<string name="no_save_data_found">Nessun salvataggio trovato</string>
<string name="verify_installed_content">Verifica i contenuti installati</string>
<string name="verify_installed_content_description">Verifica l\'integrità di tutti i contenuti installati.</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Avvia applet</string> <string name="applets">Avvia applet</string>
<string name="applets_description">Avvia applet di sistema usando il firmware installato</string> <string name="applets_description">Avvia applet di sistema usando il firmware installato</string>
@ -191,10 +176,10 @@
<string name="frame_limit_enable_description">Limita la velocità dell\'emulazione a una specifica percentuale della velocità normale.</string> <string name="frame_limit_enable_description">Limita la velocità dell\'emulazione a una specifica percentuale della velocità normale.</string>
<string name="frame_limit_slider">Limite velocità percentuale</string> <string name="frame_limit_slider">Limite velocità percentuale</string>
<string name="frame_limit_slider_description">Specifica la percentuale per limitare la velocità di emulazione. 100% è la velocità normale. Valori maggiori o minori aumenteranno o diminuiranno il limite di velocità</string> <string name="frame_limit_slider_description">Specifica la percentuale per limitare la velocità di emulazione. 100% è la velocità normale. Valori maggiori o minori aumenteranno o diminuiranno il limite di velocità</string>
<string name="cpu_backend">Backend CPU</string>
<string name="cpu_accuracy">Accuratezza della CPU</string> <string name="cpu_accuracy">Accuratezza della CPU</string>
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="use_docked_mode">Modalità Docked</string> <string name="use_docked_mode">Modalità Docked</string>
<string name="use_docked_mode_description">Aumenta la risoluzione, diminuendo le performance. La modalità portatile è usata quando disabilitato, diminuendo la risoluzione e aumentando le performance.</string> <string name="use_docked_mode_description">Aumenta la risoluzione, diminuendo le performance. La modalità portatile è usata quando disabilitato, diminuendo la risoluzione e aumentando le performance.</string>
<string name="emulated_region">Regione emulata</string> <string name="emulated_region">Regione emulata</string>
@ -221,9 +206,6 @@
<string name="renderer_reactive_flushing_description">Migliora l\'accuratezza della grafica in alcuni giochi, al costo delle performance.</string> <string name="renderer_reactive_flushing_description">Migliora l\'accuratezza della grafica in alcuni giochi, al costo delle performance.</string>
<string name="use_disk_shader_cache">Usa la cache delle shader</string> <string name="use_disk_shader_cache">Usa la cache delle shader</string>
<string name="use_disk_shader_cache_description">Riduce lo stuttering caricando le shader già compilate all\'avvio.</string> <string name="use_disk_shader_cache_description">Riduce lo stuttering caricando le shader già compilate all\'avvio.</string>
<string name="anisotropic_filtering">Filtro Anisotropico</string>
<string name="anisotropic_filtering_description">Migliora la qualità delle texture quando vengono visualizzate ad un angolo obliquo.</string>
<!-- Debug settings strings --> <!-- Debug settings strings -->
<string name="cpu">CPU</string> <string name="cpu">CPU</string>
<string name="cpu_debug_mode">Debug della CPU</string> <string name="cpu_debug_mode">Debug della CPU</string>
@ -239,49 +221,6 @@
<string name="audio_volume">Volume</string> <string name="audio_volume">Volume</string>
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string> <string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Più</string>
<string name="button_minus">Meno</string>
<string name="button_home">Home</string>
<string name="button_capture">Cattura</string>
<string name="dpad">D-Pad</string>
<string name="up">Su</string>
<string name="down">Giù</string>
<string name="left">Sinistra</string>
<string name="right">Destra</string>
<string name="left_stick">Analogico sinistro</string>
<string name="right_stick">Analogico destro</string>
<string name="c_stick">Levetta C</string>
<string name="pressed">Premuto</string>
<string name="range">Raggio</string>
<string name="deadzone">Zona morta</string>
<string name="modifier">Modificatore</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Non valido</string>
<string name="unknown">Sconosciuto</string>
<string name="pro_controller">Pro Controller</string>
<string name="handheld">Portatile</string>
<string name="dual_joycons">Due Joycon</string>
<string name="left_joycon">Joycon sinistro</string>
<string name="right_joycon">Joycon destro</string>
<string name="gamecube_controller">Controller GameCube</string>
<string name="invert_axis">Inverti asse</string>
<string name="invert_button">Inverti pulsante</string>
<string name="toggle_button">Premi il pulsante</string>
<string name="turbo_button">Modalità Turbo</string>
<string name="set_threshold">Imposta soglia</string>
<string name="toggle_axis">Cancella asse</string>
<string name="connected">Connesso</string>
<string name="vibration">Vibrazione</string>
<string name="profile">Profilo</string>
<string name="use_global_input_configuration">Usa la configurazione di input globale</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Predefinito</string> <string name="slider_default">Predefinito</string>
<string name="ini_saved">Impostazioni salvate</string> <string name="ini_saved">Impostazioni salvate</string>
@ -292,7 +231,6 @@
<string name="shutting_down">Spegnimento...</string> <string name="shutting_down">Spegnimento...</string>
<string name="reset_setting_confirmation">Vuoi ripristinare queste impostazioni al loro valore originale?</string> <string name="reset_setting_confirmation">Vuoi ripristinare queste impostazioni al loro valore originale?</string>
<string name="reset_to_default">Riportare alle impostazioni originali</string> <string name="reset_to_default">Riportare alle impostazioni originali</string>
<string name="reset_to_default_description">Reimposta tutte le impostazione avanzate</string>
<string name="reset_all_settings">Resettare tutte le impostazioni?</string> <string name="reset_all_settings">Resettare tutte le impostazioni?</string>
<string name="reset_all_settings_description">Le impostazione avanzate verranno completamente reimpostate. Questa operazione è IRREVERSIBILE.</string> <string name="reset_all_settings_description">Le impostazione avanzate verranno completamente reimpostate. Questa operazione è IRREVERSIBILE.</string>
<string name="settings_reset">Reimposta le impostazioni</string> <string name="settings_reset">Reimposta le impostazioni</string>
@ -308,19 +246,9 @@
<string name="cancelling">Cancellazione</string> <string name="cancelling">Cancellazione</string>
<string name="install">Installa</string> <string name="install">Installa</string>
<string name="delete">Elimina</string> <string name="delete">Elimina</string>
<string name="edit">Modifica</string>
<string name="export_success">Esportazione completata</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Cancella</string> <string name="clear">Cancella</string>
<string name="global">Globale</string>
<string name="custom">Personalizzato</string> <string name="custom">Personalizzato</string>
<string name="notice">Avviso</string>
<string name="import_complete">Importazione completata</string>
<string name="more_options">Più opzioni</string>
<string name="use_global_setting">Usa l\'impostazione globale</string>
<string name="operation_completed_successfully">Operazione completata con successo</string>
<string name="save">Salva</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Seleziona il driver della GPU</string> <string name="select_gpu_driver">Seleziona il driver della GPU</string>
<string name="select_gpu_driver_title">Vuoi sostituire il driver della tua GPU attuale?</string> <string name="select_gpu_driver_title">Vuoi sostituire il driver della tua GPU attuale?</string>
@ -336,32 +264,16 @@
<string name="preferences_settings">Impostazioni</string> <string name="preferences_settings">Impostazioni</string>
<string name="preferences_general">Generali</string> <string name="preferences_general">Generali</string>
<string name="preferences_system">Sistema</string> <string name="preferences_system">Sistema</string>
<string name="preferences_system_description">Modalità Fissa, Regione, Lingua</string>
<string name="preferences_graphics">Grafica</string> <string name="preferences_graphics">Grafica</string>
<string name="preferences_graphics_description">Livello di Accuratezza, Risoluzione, Shader Cache</string>
<string name="preferences_audio">Audio</string> <string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Motore di Output audio e volume</string>
<string name="preferences_controls">Comandi</string>
<string name="preferences_theme">Tema e colori</string> <string name="preferences_theme">Tema e colori</string>
<string name="preferences_debug">Debug</string> <string name="preferences_debug">Debug</string>
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
<!-- Game properties --> <!-- Game properties -->
<string name="info">Info</string> <string name="info">Info</string>
<string name="info_description">ID Programma, Sviluppatore, Versione</string>
<string name="per_game_settings_description">Modifica le impostazioni solo per questo gioco</string>
<string name="launch_options">Avvia configurazione</string>
<string name="path">Percorso</string> <string name="path">Percorso</string>
<string name="program_id">Id Programma</string>
<string name="developer">Sviluppatore</string> <string name="developer">Sviluppatore</string>
<string name="version">Versione</string> <string name="version">Versione</string>
<string name="add_ons">Add-on</string> <string name="add_ons">Add-on</string>
<string name="clear_shader_cache">Rimuove la cache delle Shader</string>
<string name="clear_shader_cache_description">Cancella tutte le shader compilate su questo gioco fino ad ora</string>
<string name="save_data_description">Gestisci i salvataggi di questo gioco</string>
<string name="verify_success">Verifica dell\'integrità completata con successo!</string>
<string name="verify_failure">Verifica dell\'integrità fallita!</string>
<string name="verify_no_result_description">L\'integrità dei contenuti non è stata validata</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">La tua ROM è criptata</string> <string name="loader_error_encrypted">La tua ROM è criptata</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui la nostra guida per fare il <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">dump delle tue cartucce di gioco</a>oppure <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">dei titoli già installati</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Segui la nostra guida per fare il <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">dump delle tue cartucce di gioco</a>oppure <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">dei titoli già installati</a>.]]></string>
@ -390,6 +302,7 @@
<string name="emulation_unpause">Riprendi l\'emulazione</string> <string name="emulation_unpause">Riprendi l\'emulazione</string>
<string name="emulation_input_overlay">Opzioni overlay</string> <string name="emulation_input_overlay">Opzioni overlay</string>
<string name="touchscreen">Touchscreen</string> <string name="touchscreen">Touchscreen</string>
<string name="load_settings">Carico le impostazioni...</string> <string name="load_settings">Carico le impostazioni...</string>
<!-- Software keyboard --> <!-- Software keyboard -->
@ -403,7 +316,7 @@
<string name="system_archive_general">Un archivio di sistema</string> <string name="system_archive_general">Un archivio di sistema</string>
<string name="save_load_error">Errore di salvataggio/caricamento</string> <string name="save_load_error">Errore di salvataggio/caricamento</string>
<string name="fatal_error">Errore Fatale</string> <string name="fatal_error">Errore Fatale</string>
<string name="fatal_error_message">Errore Fatale. Controlla i log per i dettagli.\nContinuare l\'emulazione potrebbe portare a glitch grafici o causare crash.</string> <string name="fatal_error_message">Un errore fatale è accaduto. Controlla i log per i dettagli.\nContinuare ad emulare potrebbe portare bug o causare crash.</string>
<string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string> <string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string>
<string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string> <string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string>
<string name="memory_formatted">%1$s%2$s</string> <string name="memory_formatted">%1$s%2$s</string>

View File

@ -83,9 +83,7 @@
<string name="notification_no_directory_link_description">ファイルマネージャのサイドパネルでユーザーフォルダを手動で探してください。</string> <string name="notification_no_directory_link_description">ファイルマネージャのサイドパネルでユーザーフォルダを手動で探してください。</string>
<string name="manage_save_data">セーブデータ</string> <string name="manage_save_data">セーブデータ</string>
<string name="manage_save_data_description">セーブデータが見つかりました。操作を選択してください。</string> <string name="manage_save_data_description">セーブデータが見つかりました。操作を選択してください。</string>
<string name="import_save_warning">セーブデータをインポート</string>
<string name="import_export_saves_description">セーブファイルをインポート/エクスポート</string> <string name="import_export_saves_description">セーブファイルをインポート/エクスポート</string>
<string name="save_files_importing">セーブファイルをインポート中...</string>
<string name="save_file_imported_success">インポートが完了しました</string> <string name="save_file_imported_success">インポートが完了しました</string>
<string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string> <string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string>
<string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string> <string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string>
@ -111,8 +109,6 @@
<string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string> <string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string>
<string name="manage_yuzu_data">yuzu データを管理</string> <string name="manage_yuzu_data">yuzu データを管理</string>
<string name="share_save_file">セーブファイルを共有</string> <string name="share_save_file">セーブファイルを共有</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="applets_error_firmware">ファームウェア未インストール</string> <string name="applets_error_firmware">ファームウェア未インストール</string>
<string name="album_applet">アルバム</string> <string name="album_applet">アルバム</string>
<string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string> <string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string>
@ -155,8 +151,8 @@
<string name="frame_limit_enable_description">エミュレーション速度を指定した割合に制限します。</string> <string name="frame_limit_enable_description">エミュレーション速度を指定した割合に制限します。</string>
<string name="frame_limit_slider">エミュレーション速度</string> <string name="frame_limit_slider">エミュレーション速度</string>
<string name="frame_limit_slider_description">エミュレーション速度を制限するパーセンテージを指定します。100%は通常速度です。値の増減で速度も増減します。</string> <string name="frame_limit_slider_description">エミュレーション速度を制限するパーセンテージを指定します。100%は通常速度です。値の増減で速度も増減します。</string>
<string name="cpu_backend">CPUバックエンド</string>
<string name="cpu_accuracy">CPU精度</string> <string name="cpu_accuracy">CPU精度</string>
<!-- System settings strings -->
<string name="use_docked_mode">TVモード</string> <string name="use_docked_mode">TVモード</string>
<string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string> <string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string>
<string name="emulated_region">地域</string> <string name="emulated_region">地域</string>
@ -183,9 +179,6 @@
<string name="renderer_reactive_flushing_description">一部のゲームにおいて、パフォーマンスを犠牲にしながらも、レンダリング精度を向上させます。</string> <string name="renderer_reactive_flushing_description">一部のゲームにおいて、パフォーマンスを犠牲にしながらも、レンダリング精度を向上させます。</string>
<string name="use_disk_shader_cache">ディスクシェーダーキャッシュ</string> <string name="use_disk_shader_cache">ディスクシェーダーキャッシュ</string>
<string name="use_disk_shader_cache_description">生成したシェーダーを端末に保存して読み込み、コマ落ちを軽減します。</string> <string name="use_disk_shader_cache_description">生成したシェーダーを端末に保存して読み込み、コマ落ちを軽減します。</string>
<string name="anisotropic_filtering">異方性フィルタリング</string>
<string name="anisotropic_filtering_description">斜めから見たときのテクスチャーの質感を向上させます</string>
<!-- Debug settings strings --> <!-- Debug settings strings -->
<string name="cpu">CPU</string> <string name="cpu">CPU</string>
<string name="cpu_debug_mode">CPUデバッグ</string> <string name="cpu_debug_mode">CPUデバッグ</string>
@ -200,47 +193,6 @@
<string name="audio_volume">音量</string> <string name="audio_volume">音量</string>
<string name="audio_volume_description">オーディオ出力の音量を指定します</string> <string name="audio_volume_description">オーディオ出力の音量を指定します</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">+</string>
<string name="button_minus">-</string>
<string name="button_home">HOMEボタン</string>
<string name="button_capture">キャプチャ</string>
<string name="dpad">方向ボタン</string>
<string name="up"></string>
<string name="down"></string>
<string name="left"></string>
<string name="right"></string>
<string name="left_stick">Lスティック</string>
<string name="right_stick">Rスティック</string>
<string name="c_stick">Cスティック</string>
<string name="pressed">押下</string>
<string name="range">範囲</string>
<string name="deadzone">遊び</string>
<string name="modifier">変更</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">無効</string>
<string name="unknown">不明</string>
<string name="pro_controller">Proコントローラー</string>
<string name="handheld">携帯コントローラー</string>
<string name="dual_joycons">Joy-Con(L/R)</string>
<string name="left_joycon">Joy-Con(L)</string>
<string name="right_joycon">Joy-Con(R)</string>
<string name="gamecube_controller">ゲームキューブコントローラー</string>
<string name="invert_axis">軸を反転</string>
<string name="invert_button">ボタンを反転</string>
<string name="turbo_button">ターボボタン</string>
<string name="set_threshold">しきい値を設定</string>
<string name="connected">接続の状態</string>
<string name="vibration">振動</string>
<string name="profile">プロファイル</string>
<string name="use_global_input_configuration">グローバル入力設定を使用</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">デフォルト</string> <string name="slider_default">デフォルト</string>
<string name="ini_saved">設定を保存しました</string> <string name="ini_saved">設定を保存しました</string>
@ -268,8 +220,6 @@
<string name="start">開始</string> <string name="start">開始</string>
<string name="clear">クリア</string> <string name="clear">クリア</string>
<string name="custom">カスタム</string> <string name="custom">カスタム</string>
<string name="save">保存</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">GPUドライバを選択</string> <string name="select_gpu_driver">GPUドライバを選択</string>
<string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか</string> <string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか</string>
@ -285,7 +235,6 @@
<string name="preferences_system">システム</string> <string name="preferences_system">システム</string>
<string name="preferences_graphics">グラフィック</string> <string name="preferences_graphics">グラフィック</string>
<string name="preferences_audio">サウンド</string> <string name="preferences_audio">サウンド</string>
<string name="preferences_controls">操作</string>
<string name="preferences_theme">テーマと色</string> <string name="preferences_theme">テーマと色</string>
<string name="preferences_debug">デバッグ</string> <string name="preferences_debug">デバッグ</string>
<!-- Game properties --> <!-- Game properties -->
@ -294,9 +243,6 @@
<string name="developer">開発元</string> <string name="developer">開発元</string>
<string name="version">バージョン</string> <string name="version">バージョン</string>
<string name="add_ons">アドオン</string> <string name="add_ons">アドオン</string>
<string name="invalid_directory">無効なディレクトリ</string>
<string name="verify_success">整合性の確認に成功しました!</string>
<string name="verify_failure">整合性の確認に失敗しました!</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">ROMが暗号化されています</string> <string name="loader_error_encrypted">ROMが暗号化されています</string>
<string name="loader_error_encrypted_keys_description"><![CDATA[ゲームの復号化に必要な <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> ファイルがインストールされていることを確認してください。]]></string> <string name="loader_error_encrypted_keys_description"><![CDATA[ゲームの復号化に必要な <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> ファイルがインストールされていることを確認してください。]]></string>
@ -324,6 +270,7 @@
<string name="emulation_unpause">再開</string> <string name="emulation_unpause">再開</string>
<string name="emulation_input_overlay">表示オプション</string> <string name="emulation_input_overlay">表示オプション</string>
<string name="touchscreen">タッチスクリーン</string> <string name="touchscreen">タッチスクリーン</string>
<string name="load_settings">設定をロード中…</string> <string name="load_settings">設定をロード中…</string>
<!-- Software keyboard --> <!-- Software keyboard -->
@ -409,10 +356,6 @@
<string name="ratio_force_sixteen_ten">強制 16:10</string> <string name="ratio_force_sixteen_ten">強制 16:10</string>
<string name="ratio_stretch">画面に合わせる</string> <string name="ratio_stretch">画面に合わせる</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (低速)</string>
<string name="cpu_backend_nce">ネイティブコード実行 (NCE)</string>
<!-- CPU Accuracy --> <!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">正確</string> <string name="cpu_accuracy_accurate">正確</string>
<string name="cpu_accuracy_unsafe">不安定</string> <string name="cpu_accuracy_unsafe">不安定</string>
@ -440,8 +383,6 @@
<string name="theme_mode_light">ライト</string> <string name="theme_mode_light">ライト</string>
<string name="theme_mode_dark">ダーク</string> <string name="theme_mode_dark">ダーク</string>
<!-- Audio output engines -->
<string name="oboe">oboe</string>
<string name="cubeb">cubeb</string> <string name="cubeb">cubeb</string>
<!-- Anisotropic filtering options --> <!-- Anisotropic filtering options -->

View File

@ -133,11 +133,6 @@
<item quantity="other">%d개의 세이브를 가져왔습니다.</item> <item quantity="other">%d개의 세이브를 가져왔습니다.</item>
</plurals> </plurals>
<string name="no_save_data_found">세이브 데이터를 찾을 수 없음</string> <string name="no_save_data_found">세이브 데이터를 찾을 수 없음</string>
<string name="verify_installed_content">설치된 콘텐츠 인증</string>
<string name="verify_installed_content_description">전체 설치된 콘텐츠의 손상을 확인합니다.</string>
<string name="keys_missing">암호화 키를 찾을 수 없음</string>
<string name="keys_missing_description">펌웨어 및 패키지 게임을 해독할 수 없음</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">애플릿 런처</string> <string name="applets">애플릿 런처</string>
@ -203,6 +198,7 @@
<string name="cpu_accuracy">CPU 정확도</string> <string name="cpu_accuracy">CPU 정확도</string>
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="use_docked_mode">독 모드</string> <string name="use_docked_mode">독 모드</string>
<string name="use_docked_mode_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string> <string name="use_docked_mode_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string>
<string name="emulated_region">에뮬레이트 지역</string> <string name="emulated_region">에뮬레이트 지역</string>
@ -247,48 +243,6 @@
<string name="audio_volume">볼륨</string> <string name="audio_volume">볼륨</string>
<string name="audio_volume_description">오디오 출력의 볼륨을 지정합니다.</string> <string name="audio_volume_description">오디오 출력의 볼륨을 지정합니다.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">+</string>
<string name="button_minus">-</string>
<string name="button_home"></string>
<string name="button_capture">캡쳐</string>
<string name="dpad">십자패드</string>
<string name="up"></string>
<string name="down">아래</string>
<string name="left">왼쪽</string>
<string name="right">오른쪽</string>
<string name="left_stick">L 스틱</string>
<string name="right_stick">R 스틱</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">누르기</string>
<string name="range">범위</string>
<string name="deadzone">데드존</string>
<string name="modifier">수정자</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">유효하지않음</string>
<string name="pro_controller">프로 컨트롤러</string>
<string name="handheld">휴대 모드</string>
<string name="dual_joycons">듀얼 조이콘</string>
<string name="left_joycon">왼쪽 조이콘</string>
<string name="right_joycon">오른쪽 조이콘</string>
<string name="gamecube_controller">GameCube 컨트롤러</string>
<string name="invert_axis">축 뒤집기</string>
<string name="invert_button">버튼 반전</string>
<string name="toggle_button">토글 버튼</string>
<string name="turbo_button">터보 버튼</string>
<string name="set_threshold">임계값 설정</string>
<string name="toggle_axis">axis 토글</string>
<string name="connected">연결됨</string>
<string name="vibration">진동</string>
<string name="profile">프로필</string>
<string name="use_global_input_configuration">글로벌 입력 구성 사용</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">기본값</string> <string name="slider_default">기본값</string>
<string name="ini_saved">설정이 저장되었습니다.</string> <string name="ini_saved">설정이 저장되었습니다.</string>
@ -318,15 +272,13 @@
<string name="edit">편집</string> <string name="edit">편집</string>
<string name="export_success">데이터를 내보냈습니다.</string> <string name="export_success">데이터를 내보냈습니다.</string>
<string name="start">시작</string> <string name="start">시작</string>
<string name="clear">비우기</string> <string name="clear">초기화</string>
<string name="global">글로벌</string> <string name="global">글로벌</string>
<string name="custom">커스텀</string> <string name="custom">커스텀</string>
<string name="notice">알림</string> <string name="notice">알림</string>
<string name="import_complete">가져오기 완료</string> <string name="import_complete">가져오기 완료</string>
<string name="more_options">추가 옵션</string> <string name="more_options">추가 옵션</string>
<string name="use_global_setting">글로벌 설정 사용</string> <string name="use_global_setting">글로벌 설정 사용</string>
<string name="operation_completed_successfully">작업이 완료되었습니다.</string>
<string name="save">저장</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">GPU 드라이버 선택</string> <string name="select_gpu_driver">GPU 드라이버 선택</string>
@ -348,7 +300,6 @@
<string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string> <string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string>
<string name="preferences_audio">오디오</string> <string name="preferences_audio">오디오</string>
<string name="preferences_audio_description">출력 엔진, 불륨</string> <string name="preferences_audio_description">출력 엔진, 불륨</string>
<string name="preferences_controls">조작</string>
<string name="preferences_theme">테마 및 색상</string> <string name="preferences_theme">테마 및 색상</string>
<string name="preferences_debug">디버그</string> <string name="preferences_debug">디버그</string>
<string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string> <string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string>
@ -359,7 +310,7 @@
<string name="per_game_settings">게임별 설정</string> <string name="per_game_settings">게임별 설정</string>
<string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string> <string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string>
<string name="launch_options">실행 구성</string> <string name="launch_options">실행 구성</string>
<string name="path">경로</string> <string name="path">주소</string>
<string name="program_id">프로그램 ID</string> <string name="program_id">프로그램 ID</string>
<string name="developer">개발자</string> <string name="developer">개발자</string>
<string name="version">버전</string> <string name="version">버전</string>
@ -392,14 +343,6 @@
<string name="content_install_notice_description">선택한 콘텐츠가 현재 게임과 일치하지 않습니다.\n무시하고 설치하시겠습니까?</string> <string name="content_install_notice_description">선택한 콘텐츠가 현재 게임과 일치하지 않습니다.\n무시하고 설치하시겠습니까?</string>
<string name="confirm_uninstall">제거 확인</string> <string name="confirm_uninstall">제거 확인</string>
<string name="confirm_uninstall_description">이 애드온을 제거하시겠습니까?</string> <string name="confirm_uninstall_description">이 애드온을 제거하시겠습니까?</string>
<string name="verify_integrity">무결성 인증</string>
<string name="verifying">인증 중...</string>
<string name="verify_success">무결성 인증에 성공했습니다.</string>
<string name="verify_failure">무결성 인증에 실패했습니다.</string>
<string name="verify_failure_description">파일 콘텐츠가 손상되었을 수 있습니다.</string>
<string name="verify_no_result">무결성 인증을 진행할 수 없습니다.</string>
<string name="verify_no_result_description">파일 콘텐츠의 유효성 검사가 진행되지 않았습니다.</string>
<string name="verification_failed_for">검증 실패 파일 목록:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">롬 파일이 암호화되어있음</string> <string name="loader_error_encrypted">롬 파일이 암호화되어있음</string>
@ -429,8 +372,6 @@
<string name="emulation_unpause">에뮬레이션 일시 중지 해제</string> <string name="emulation_unpause">에뮬레이션 일시 중지 해제</string>
<string name="emulation_input_overlay">화면 오버레이 설정</string> <string name="emulation_input_overlay">화면 오버레이 설정</string>
<string name="touchscreen">터치 스크린</string> <string name="touchscreen">터치 스크린</string>
<string name="lock_drawer">에뮬레이터 메뉴 잠금</string>
<string name="unlock_drawer">에뮬레이터 메뉴 잠금 해제</string>
<string name="load_settings">설정 불러오는 중...</string> <string name="load_settings">설정 불러오는 중...</string>
@ -465,7 +406,7 @@
<string name="memory_byte_shorthand">B</string> <string name="memory_byte_shorthand">B</string>
<string name="memory_kilobyte">KB</string> <string name="memory_kilobyte">KB</string>
<string name="memory_megabyte">MB</string> <string name="memory_megabyte">MB</string>
<string name="memory_gigabyte">GB</string> <string name="memory_gigabyte">영국 하계 표준시(GB)</string>
<string name="memory_terabyte">TB</string> <string name="memory_terabyte">TB</string>
<string name="memory_petabyte">PB</string> <string name="memory_petabyte">PB</string>
<string name="memory_exabyte">EB</string> <string name="memory_exabyte">EB</string>
@ -508,12 +449,12 @@
<!-- Screen Layouts --> <!-- Screen Layouts -->
<string name="screen_layout_auto">자동</string> <string name="screen_layout_auto">자동</string>
<string name="screen_layout_sensor_landscape">가로 (방향 감지)</string> <string name="screen_layout_sensor_landscape">가로 고정 (방향 감지)</string>
<string name="screen_layout_landscape">가로</string> <string name="screen_layout_landscape">가로</string>
<string name="screen_layout_reverse_landscape">가로 (역방향)</string> <string name="screen_layout_reverse_landscape">가로 고정 (역방향 고정)</string>
<string name="screen_layout_sensor_portrait">세로 (방향 감지)</string> <string name="screen_layout_sensor_portrait">세로 고정 (방향 감지)</string>
<string name="screen_layout_portrait">세로</string> <string name="screen_layout_portrait">세로</string>
<string name="screen_layout_reverse_portrait">세로 (역방향)</string> <string name="screen_layout_reverse_portrait">세로 고정 (역방향 고정)</string>
<!-- Aspect Ratios --> <!-- Aspect Ratios -->
<string name="ratio_default">기본 (16:9)</string> <string name="ratio_default">기본 (16:9)</string>

View File

@ -95,8 +95,6 @@
<string name="install_game_content">Installer spillinnhold</string> <string name="install_game_content">Installer spillinnhold</string>
<string name="install_game_content_description">Installer spilloppdateringer eller DLC</string> <string name="install_game_content_description">Installer spilloppdateringer eller DLC</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia er ikke ekte</string> <string name="gaia_is_not_real">Gaia er ikke ekte</string>
<string name="copied_to_clipboard">Kopiert til utklippstavlen</string> <string name="copied_to_clipboard">Kopiert til utklippstavlen</string>
@ -130,6 +128,7 @@
<string name="frame_limit_slider">Hastighetsbegrensning i prosent</string> <string name="frame_limit_slider">Hastighetsbegrensning i prosent</string>
<string name="frame_limit_slider_description">Angir prosentandelen som skal begrense emuleringshastigheten. 100 % er normal hastighet. Høyere eller lavere verdier vil øke eller redusere hastighetsgrensen.</string> <string name="frame_limit_slider_description">Angir prosentandelen som skal begrense emuleringshastigheten. 100 % er normal hastighet. Høyere eller lavere verdier vil øke eller redusere hastighetsgrensen.</string>
<string name="cpu_accuracy">CPU-nøyaktighet</string> <string name="cpu_accuracy">CPU-nøyaktighet</string>
<!-- System settings strings -->
<string name="use_docked_mode">Dokket modus</string> <string name="use_docked_mode">Dokket modus</string>
<string name="use_docked_mode_description">Øker oppløsningen, men reduserer ytelsen. Håndholdt modus brukes når den er deaktivert, noe som reduserer oppløsningen og øker ytelsen.</string> <string name="use_docked_mode_description">Øker oppløsningen, men reduserer ytelsen. Håndholdt modus brukes når den er deaktivert, noe som reduserer oppløsningen og øker ytelsen.</string>
<string name="emulated_region">Emulert region</string> <string name="emulated_region">Emulert region</string>
@ -163,48 +162,6 @@
<string name="audio_volume">Volum</string> <string name="audio_volume">Volum</string>
<string name="audio_volume_description">Angir volumet på lydutgangen.</string> <string name="audio_volume_description">Angir volumet på lydutgangen.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Pluss</string>
<string name="button_minus">Minus</string>
<string name="button_home">Hjem</string>
<string name="button_capture">Opptak</string>
<string name="dpad">D-Pad</string>
<string name="up">Opp</string>
<string name="down">Ned</string>
<string name="left">Venstre</string>
<string name="right">Høyre</string>
<string name="left_stick">Venstre spak</string>
<string name="right_stick">Høyre spak</string>
<string name="c_stick">C-stikke</string>
<string name="pressed">Trykket</string>
<string name="range">Område</string>
<string name="deadzone">Dødsone</string>
<string name="modifier">Modifikator</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Ugyldig</string>
<string name="pro_controller">Pro-Kontroller</string>
<string name="handheld">Håndholdt</string>
<string name="dual_joycons">Doble Joycons</string>
<string name="left_joycon">Venstre Joycon</string>
<string name="right_joycon">Høyre Joycon</string>
<string name="gamecube_controller">GameCube-kontroller</string>
<string name="invert_axis">Inverter akse</string>
<string name="invert_button">Inverter knapp</string>
<string name="toggle_button">Veksle knapp</string>
<string name="turbo_button">Turbo-Knapp</string>
<string name="set_threshold">Set grense</string>
<string name="toggle_axis">veksle akse</string>
<string name="connected">Tilkoblet</string>
<string name="vibration">Vibrasjon</string>
<string name="profile">Profil</string>
<string name="use_global_input_configuration">Bruk global inndatakonfigurasjon</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Standard</string> <string name="slider_default">Standard</string>
<string name="ini_saved">Lagrede innstillinger</string> <string name="ini_saved">Lagrede innstillinger</string>
@ -227,8 +184,6 @@
<string name="delete">Slett</string> <string name="delete">Slett</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Fjern</string> <string name="clear">Fjern</string>
<string name="save">Lagre</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Velg GPU-driver</string> <string name="select_gpu_driver">Velg GPU-driver</string>
<string name="select_gpu_driver_title">Ønsker du å bytte ut din nåværende GPU-driver?</string> <string name="select_gpu_driver_title">Ønsker du å bytte ut din nåværende GPU-driver?</string>
@ -244,7 +199,6 @@
<string name="preferences_system">System</string> <string name="preferences_system">System</string>
<string name="preferences_graphics">Grafikk</string> <string name="preferences_graphics">Grafikk</string>
<string name="preferences_audio">Lyd</string> <string name="preferences_audio">Lyd</string>
<string name="preferences_controls">Kontrollere</string>
<string name="preferences_theme">Tema og farge</string> <string name="preferences_theme">Tema og farge</string>
<string name="preferences_debug">Feilsøk</string> <string name="preferences_debug">Feilsøk</string>
<!-- Game properties --> <!-- Game properties -->
@ -253,8 +207,6 @@
<string name="developer">Utvikler</string> <string name="developer">Utvikler</string>
<string name="version">Versjon</string> <string name="version">Versjon</string>
<string name="add_ons">Tilleggsprogrammer</string> <string name="add_ons">Tilleggsprogrammer</string>
<string name="verify_success">Integritetsverifisering vellykket!</string>
<string name="verify_failure">Integritetsverifisering mislyktes!</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">ROM-en din er kryptert</string> <string name="loader_error_encrypted">ROM-en din er kryptert</string>
<string name="loader_error_encrypted_keys_description"><![CDATA[Vennligst sørg for at <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> filen er installert slik at spillene kan dekrypteres.]]></string> <string name="loader_error_encrypted_keys_description"><![CDATA[Vennligst sørg for at <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> filen er installert slik at spillene kan dekrypteres.]]></string>
@ -282,6 +234,7 @@
<string name="emulation_unpause">Ta emuleringen ut av pause</string> <string name="emulation_unpause">Ta emuleringen ut av pause</string>
<string name="emulation_input_overlay">Overlay-alternativer</string> <string name="emulation_input_overlay">Overlay-alternativer</string>
<string name="touchscreen">Touch-skjerm</string> <string name="touchscreen">Touch-skjerm</string>
<string name="load_settings">Laster inn innstillinger...</string> <string name="load_settings">Laster inn innstillinger...</string>
<!-- Software keyboard --> <!-- Software keyboard -->

View File

@ -95,8 +95,6 @@
<string name="install_game_content">Zainstaluj zawartość gry</string> <string name="install_game_content">Zainstaluj zawartość gry</string>
<string name="install_game_content_description">Zainstaluj aktualizację gry lub dodatek DLC</string> <string name="install_game_content_description">Zainstaluj aktualizację gry lub dodatek DLC</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia isn\'t real</string> <string name="gaia_is_not_real">Gaia isn\'t real</string>
<string name="copied_to_clipboard">Skopiowano do schowka</string> <string name="copied_to_clipboard">Skopiowano do schowka</string>
@ -130,6 +128,7 @@
<string name="frame_limit_slider">Procentowy limit szybkości emulacji</string> <string name="frame_limit_slider">Procentowy limit szybkości emulacji</string>
<string name="frame_limit_slider_description">Określa limit szybkości emulacji gier. Domyślna wartość 100% oznacza normalną szybkość z jaką działa gra. Wartości niższe lub wyższe zmniejszą lub zwiększą limit szybkości.</string> <string name="frame_limit_slider_description">Określa limit szybkości emulacji gier. Domyślna wartość 100% oznacza normalną szybkość z jaką działa gra. Wartości niższe lub wyższe zmniejszą lub zwiększą limit szybkości.</string>
<string name="cpu_accuracy">Dokładność procesora CPU</string> <string name="cpu_accuracy">Dokładność procesora CPU</string>
<!-- System settings strings -->
<string name="use_docked_mode">Tryb zadokowany</string> <string name="use_docked_mode">Tryb zadokowany</string>
<string name="use_docked_mode_description">Zwiększa rozdzielczość kosztem wydajności. Kiedy wyłączone, używany jest tryb Handheld, który obniża rozdzielczość i dzięki temu zwiększa wydajność.</string> <string name="use_docked_mode_description">Zwiększa rozdzielczość kosztem wydajności. Kiedy wyłączone, używany jest tryb Handheld, który obniża rozdzielczość i dzięki temu zwiększa wydajność.</string>
<string name="emulated_region">Region emulacji</string> <string name="emulated_region">Region emulacji</string>
@ -163,48 +162,6 @@
<string name="audio_volume">Głośność</string> <string name="audio_volume">Głośność</string>
<string name="audio_volume_description">Ustala poziom głośności wyjścia dźwięku.</string> <string name="audio_volume_description">Ustala poziom głośności wyjścia dźwięku.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Plus</string>
<string name="button_minus">Minus</string>
<string name="button_home">Home</string>
<string name="button_capture">Zrzut ekranu</string>
<string name="dpad">D-Pad</string>
<string name="up">Góra</string>
<string name="down">Dół</string>
<string name="left">Lewo</string>
<string name="right">Prawo</string>
<string name="left_stick">Lewa gałka</string>
<string name="right_stick">Prawa gałka</string>
<string name="c_stick">C-gałka</string>
<string name="pressed">Naciśnięty</string>
<string name="range">Zasięg</string>
<string name="modifier">Modyfikator</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Nieprawidłowe</string>
<string name="unknown">Nieznany</string>
<string name="pro_controller">Pro kontroler</string>
<string name="handheld">Przenośnie</string>
<string name="dual_joycons">Para Joyconów</string>
<string name="left_joycon">Lewy Joycon</string>
<string name="right_joycon">Prawy Joycon</string>
<string name="gamecube_controller">Kontroler GameCube</string>
<string name="invert_axis">Odwróć oś</string>
<string name="invert_button">Odwróć przycisk</string>
<string name="toggle_button">Przycisk Toggle</string>
<string name="turbo_button">Przycisk TURBO</string>
<string name="set_threshold">Ustaw próg</string>
<string name="toggle_axis">Przełącz oś</string>
<string name="connected">Połączono</string>
<string name="vibration">Wibracje</string>
<string name="profile">Profil</string>
<string name="use_global_input_configuration">Użyj globalnej konfiguracji wejściowej</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Domyślne</string> <string name="slider_default">Domyślne</string>
<string name="ini_saved">Ustawienia zapisane</string> <string name="ini_saved">Ustawienia zapisane</string>
@ -227,8 +184,6 @@
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Wyczyść</string> <string name="clear">Wyczyść</string>
<string name="custom">Losowy</string> <string name="custom">Losowy</string>
<string name="save">Zapisz</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Wybierz sterownik GPU </string> <string name="select_gpu_driver">Wybierz sterownik GPU </string>
<string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string> <string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string>
@ -244,7 +199,6 @@
<string name="preferences_system">System</string> <string name="preferences_system">System</string>
<string name="preferences_graphics">Grafika</string> <string name="preferences_graphics">Grafika</string>
<string name="preferences_audio">Dźwięk</string> <string name="preferences_audio">Dźwięk</string>
<string name="preferences_controls">Sterowanie</string>
<string name="preferences_theme">Motyw i kolor</string> <string name="preferences_theme">Motyw i kolor</string>
<string name="preferences_debug">Debug</string> <string name="preferences_debug">Debug</string>
<!-- Game properties --> <!-- Game properties -->
@ -280,6 +234,7 @@
<string name="emulation_unpause">Wznów emulację</string> <string name="emulation_unpause">Wznów emulację</string>
<string name="emulation_input_overlay">Opcje nakładki</string> <string name="emulation_input_overlay">Opcje nakładki</string>
<string name="touchscreen">Ekran dotykowy</string> <string name="touchscreen">Ekran dotykowy</string>
<string name="load_settings">Wczytuję ustawienia...</string> <string name="load_settings">Wczytuję ustawienia...</string>
<!-- Software keyboard --> <!-- Software keyboard -->

View File

@ -22,16 +22,16 @@
<string name="back">Voltar</string> <string name="back">Voltar</string>
<string name="add_games">Adicionar Jogos</string> <string name="add_games">Adicionar Jogos</string>
<string name="add_games_description">Selecione sua pasta de Jogos</string> <string name="add_games_description">Selecione sua pasta de Jogos</string>
<string name="step_complete">Concluído!</string> <string name="step_complete">Completo!</string>
<!-- Home strings --> <!-- Home strings -->
<string name="home_games">Jogos</string> <string name="home_games">Jogos</string>
<string name="home_search">Pesquisar</string> <string name="home_search">Pesquisar</string>
<string name="home_settings">Configurações</string> <string name="home_settings">Configurações</string>
<string name="empty_gamelist">Não foram encontrados jogos ou a pasta de Jogos ainda não foi definida. </string> <string name="empty_gamelist">Não foram encontrados jogos ou a pasta de Jogos ainda não foi definida. </string>
<string name="search_and_filter_games">Procura e filtra jogos</string> <string name="search_and_filter_games">Procura e filtra jogos.</string>
<string name="select_games_folder">Seleciona a pasta de jogos</string> <string name="select_games_folder">Seleciona a pasta de jogos.</string>
<string name="manage_game_folders">Gerenciar pastas de jogos</string> <string name="manage_game_folders">Gerencie as pastas de jogos</string>
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string> <string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string>
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string> <string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string> <string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
@ -40,7 +40,7 @@
<string name="search_settings">Procurar nas configurações</string> <string name="search_settings">Procurar nas configurações</string>
<string name="games_dir_selected">Pasta de jogos selecionada</string> <string name="games_dir_selected">Pasta de jogos selecionada</string>
<string name="install_prod_keys">Instalar prod.keys</string> <string name="install_prod_keys">Instalar prod.keys</string>
<string name="install_prod_keys_description">Necessárias para desencriptar jogos comerciais</string> <string name="install_prod_keys_description">Necessário para desencriptar jogos comerciais</string>
<string name="install_prod_keys_warning">Ignorar a adição de chaves?</string> <string name="install_prod_keys_warning">Ignorar a adição de chaves?</string>
<string name="install_prod_keys_warning_description">São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar.</string> <string name="install_prod_keys_warning_description">São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar.</string>
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string> <string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
@ -48,16 +48,16 @@
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string> <string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
<string name="give_permission">Conceder permissão</string> <string name="give_permission">Conceder permissão</string>
<string name="notification_warning">Ignorar a concessão da permissão de notificação?</string> <string name="notification_warning">Ignorar a concessão da permissão de notificação?</string>
<string name="notification_warning_description">O Yuzu não irá te notificar de informações importantes. </string> <string name="notification_warning_description">Yuzu não conseguirá te notificar de informações importantes. </string>
<string name="permission_denied">Permissão negada</string> <string name="permission_denied">Permissão negada</string>
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string> <string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
<string name="about">Sobre</string> <string name="about">Sobre</string>
<string name="about_description">Versão da compilação, créditos e mais</string> <string name="about_description">Versão de compilação, créditos e mais</string>
<string name="warning_help">Ajuda</string> <string name="warning_help">Ajuda</string>
<string name="warning_skip">Ignorar</string> <string name="warning_skip">Ignorar</string>
<string name="warning_cancel">Cancelar</string> <string name="warning_cancel">Cancelar</string>
<string name="install_amiibo_keys">Instalar chaves Amiibo</string> <string name="install_amiibo_keys">Instalar chaves Amiibo</string>
<string name="install_amiibo_keys_description">Necessárias para usar Amiibos em um jogo</string> <string name="install_amiibo_keys_description">Necessário para usar Amiibos em um jogo</string>
<string name="invalid_keys_file">Arquivo de chaves selecionado inválido</string> <string name="invalid_keys_file">Arquivo de chaves selecionado inválido</string>
<string name="install_keys_success">Chaves instaladas com sucesso</string> <string name="install_keys_success">Chaves instaladas com sucesso</string>
<string name="reading_keys_failure">Erro ao ler chaves de encriptação</string> <string name="reading_keys_failure">Erro ao ler chaves de encriptação</string>
@ -67,8 +67,8 @@
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="install_keys_failure_description">O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente.</string> <string name="install_keys_failure_description">O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente.</string>
<string name="gpu_driver_manager">Gerenciador de driver de GPU</string> <string name="gpu_driver_manager">Gerenciador de driver de GPU</string>
<string name="install_gpu_driver">Instalar driver para GPU</string> <string name="install_gpu_driver">Instala driver para GPU</string>
<string name="install_gpu_driver_description">Instale drivers alternativos para desempenho ou precisão potencialmente melhores</string> <string name="install_gpu_driver_description">Instala drivers alternativos para desempenho ou precisão potencialmente melhores</string>
<string name="advanced_settings">Configurações avançadas</string> <string name="advanced_settings">Configurações avançadas</string>
<string name="advanced_settings_game">Configurações avançadas: %1$s</string> <string name="advanced_settings_game">Configurações avançadas: %1$s</string>
<string name="settings_description">Configure opções do emulador</string> <string name="settings_description">Configure opções do emulador</string>
@ -81,17 +81,17 @@
<string name="theme_and_color_description">Altere a aparência do aplicativo</string> <string name="theme_and_color_description">Altere a aparência do aplicativo</string>
<string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string> <string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string>
<string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string> <string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string>
<string name="notification_no_directory_link_description">Por favor localize manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</string> <string name="notification_no_directory_link_description">Por favor localize a pasta do usuário com o painel lateral do gerenciador de arquivos manualmente.</string>
<string name="manage_save_data">Gerenciar os dados salvos dos jogos</string> <string name="manage_save_data">Gerenciar os dados salvos dos jogos</string>
<string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string> <string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string>
<string name="import_save_warning">Importar dados salvos</string> <string name="import_save_warning">Importar dados salvos</string>
<string name="import_save_warning_description">Isso irá substituir seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string> <string name="import_save_warning_description">Isso irá sobrescrever seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string>
<string name="import_export_saves_description">Importa ou exporta arquivos de dados salvos</string> <string name="import_export_saves_description">Importa ou exporta arquivos de dados salvos</string>
<string name="save_files_importing">Importando dados salvos...</string> <string name="save_files_importing">Importando dados salvos...</string>
<string name="save_files_exporting">Exportando arquivos de dados salvos...</string> <string name="save_files_exporting">Exportando arquivos de dados salvos...</string>
<string name="save_file_imported_success">Importado com sucesso</string> <string name="save_file_imported_success">Importado com sucesso</string>
<string name="save_file_invalid_zip_structure">Estrutura de diretório de dados salvos inválida</string> <string name="save_file_invalid_zip_structure">Estrutura de diretório de dados salvos inválida</string>
<string name="save_file_invalid_zip_structure_description">O nome da primeira subpasta deve ser a ID do jogo.</string> <string name="save_file_invalid_zip_structure_description">O nome da primeira sub pasta deve ser a ID do jogo.</string>
<string name="import_saves">Importar</string> <string name="import_saves">Importar</string>
<string name="export_saves">Exportar</string> <string name="export_saves">Exportar</string>
<string name="install_firmware">Instalar firmware</string> <string name="install_firmware">Instalar firmware</string>
@ -100,11 +100,11 @@
<string name="firmware_installed_success">Firmware instalado com sucesso.</string> <string name="firmware_installed_success">Firmware instalado com sucesso.</string>
<string name="firmware_installed_failure">Falha na instalação do firmware</string> <string name="firmware_installed_failure">Falha na instalação do firmware</string>
<string name="firmware_installed_failure_description">Verifique se os arquivos nca do firmware estão na raiz do arquivo zip e tente novamente.</string> <string name="firmware_installed_failure_description">Verifique se os arquivos nca do firmware estão na raiz do arquivo zip e tente novamente.</string>
<string name="share_log">Compartilhar registros de depuração</string> <string name="share_log">Compartilhar registros de debug</string>
<string name="share_log_description">Compartilhe o arquivo de registro do yuzu para obter ajuda com problemas</string> <string name="share_log_description">Compartilhe o arquivo de registro do yuzu para obter ajuda com problemas</string>
<string name="share_log_missing">Arquivo de registro não encontrado</string> <string name="share_log_missing">Arquivo de registro não encontrado</string>
<string name="install_game_content">Instalar conteúdo de jogos</string> <string name="install_game_content">Instalar conteúdo de jogos</string>
<string name="install_game_content_description">Instale atualizações de jogos ou DLC</string> <string name="install_game_content_description">Instala atualizações de jogos ou DLC</string>
<string name="installing_game_content">Instalando conteúdo...</string> <string name="installing_game_content">Instalando conteúdo...</string>
<string name="install_game_content_failure">Erro ao instalar arquivo(s) na NAND</string> <string name="install_game_content_failure">Erro ao instalar arquivo(s) na NAND</string>
<string name="install_game_content_failure_description">Por favor certifique-se de que o(s) conteúdo(s) é (são) válido(s) e que as prod.keys estão instaladas.</string> <string name="install_game_content_failure_description">Por favor certifique-se de que o(s) conteúdo(s) é (são) válido(s) e que as prod.keys estão instaladas.</string>
@ -116,9 +116,9 @@
<string name="install_game_content_success_overwrite">%1$d substituído com sucesso</string> <string name="install_game_content_success_overwrite">%1$d substituído com sucesso</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">Drivers personalizados não suportados</string> <string name="custom_driver_not_supported">Drivers personalizados não suportados</string>
<string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique essa opção novamente no futuro para ver se o suporte foi adicionado!</string> <string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique esse opção novamente no futuro para ver se o suporte foi adicionado!</string>
<string name="manage_yuzu_data">Administrar dados do yuzu</string> <string name="manage_yuzu_data">Administrar dados do yuzu</string>
<string name="manage_yuzu_data_description">Importe/exporte firmware, chaves, dados do usuário e mais!</string> <string name="manage_yuzu_data_description">Importa/exporta firmware, chaves, dados do usuário e mais!</string>
<string name="share_save_file">Compartilhar arquivo de dados salvos</string> <string name="share_save_file">Compartilhar arquivo de dados salvos</string>
<string name="export_save_failed">Erro ao exportar arquivo de dados salvos</string> <string name="export_save_failed">Erro ao exportar arquivo de dados salvos</string>
<string name="game_folders">Pastas de jogos</string> <string name="game_folders">Pastas de jogos</string>
@ -137,25 +137,20 @@
<item quantity="other">Dados salvos de %d importados com sucesso</item> <item quantity="other">Dados salvos de %d importados com sucesso</item>
</plurals> </plurals>
<string name="no_save_data_found">Dados salvos não encontrados</string> <string name="no_save_data_found">Dados salvos não encontrados</string>
<string name="verify_installed_content">Verificar conteúdo instalado</string>
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
<string name="keys_missing">Faltando chaves de encriptação</string>
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Launcher de miniaplicativos</string> <string name="applets">Launcher de miniaplicativos</string>
<string name="applets_description">Execute miniaplicativos do sistema usando o firmware instalado</string> <string name="applets_description">Inicia miniaplicativos do sistema usando o firmware instalado</string>
<string name="applets_error_firmware">Firmware não instalado</string> <string name="applets_error_firmware">Firmware não instalado</string>
<string name="applets_error_applet">Miniaplicativo não disponível</string> <string name="applets_error_applet">Miniaplicativo não disponível</string>
<string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> e o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">firmware</a> estão instalados e tente novamente.]]></string> <string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo 1prod.keys1 e o 2firmware2 estão instalados e tente novamente.]]></string>
<string name="album_applet">Álbum</string> <string name="album_applet">Álbum</string>
<string name="album_applet_description">Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema</string> <string name="album_applet_description">Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema</string>
<string name="mii_edit_applet">Editor de Mii</string> <string name="mii_edit_applet">Editor de Mii</string>
<string name="mii_edit_applet_description">Visualize e edite os Miis com o editor do sistema</string> <string name="mii_edit_applet_description">Visualize e edite os Miis com o editor do sistema</string>
<string name="cabinet_applet">Arquivo</string> <string name="cabinet_applet">Arquivo</string>
<string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string> <string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string>
<string name="cabinet_launcher">Launcher do Arquivo</string> <string name="cabinet_launcher">Inicializador do Arquivo</string>
<string name="cabinet_nickname_and_owner">Apelido e configurações do proprietário</string> <string name="cabinet_nickname_and_owner">Apelido e configurações do proprietário</string>
<string name="cabinet_game_data_eraser">Apagar dados de jogo</string> <string name="cabinet_game_data_eraser">Apagar dados de jogo</string>
<string name="cabinet_restorer">Restaurar</string> <string name="cabinet_restorer">Restaurar</string>
@ -169,9 +164,9 @@
<string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string> <string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string>
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string> <string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
<string name="licenses_description">Projetos que tornam o yuzu para Android possível</string> <string name="licenses_description">Projetos que tornam o yuzu para Android possível</string>
<string name="build">Versão da Compilação</string> <string name="build">Versão</string>
<string name="user_data">Dados do usuário</string> <string name="user_data">Dados do usuário</string>
<string name="user_data_description">Importe/exporte todos os dados do aplicativo.\n\nAo importar dados de usuário, todos os dados existentes serão excluídos!</string> <string name="user_data_description">Importar/exportar todos os dados do aplicativo.\n\n Ao importar dados de usuário, todos os dados existentes do usuário serão excluídos!</string>
<string name="exporting_user_data">Exportando dados do usuário...</string> <string name="exporting_user_data">Exportando dados do usuário...</string>
<string name="importing_user_data">Importando dados do usuário...</string> <string name="importing_user_data">Importando dados do usuário...</string>
<string name="import_user_data">Importar dados do usuário</string> <string name="import_user_data">Importar dados do usuário</string>
@ -179,14 +174,14 @@
<string name="user_data_export_success">Dados de usuário exportados com sucesso</string> <string name="user_data_export_success">Dados de usuário exportados com sucesso</string>
<string name="user_data_import_success">Dados de usuário importados com sucesso</string> <string name="user_data_import_success">Dados de usuário importados com sucesso</string>
<string name="user_data_export_cancelled">Exportação cancelada</string> <string name="user_data_export_cancelled">Exportação cancelada</string>
<string name="user_data_import_failed_description">Verifique se as pastas de dados do usuário estão na raiz da pasta zip, se possuem um arquivo de configuração em config/config.ini e tente novamente.</string> <string name="user_data_import_failed_description">Verifiqua se as pastas de dados do usuário estão na raiz da pasta zip e contêm um arquivo de configuração em config/config.ini e tente novamente.</string>
<string name="support_link">https://discord.gg/u77vRWY</string> <string name="support_link">https://discord.gg/u77vRWY</string>
<string name="website_link">https://yuzu-emu.org/</string> <string name="website_link">https://yuzu-emu.org/</string>
<string name="github_link">https://github.com/yuzu-emu</string> <string name="github_link">https://github.com/yuzu-emu</string>
<!-- Early access upgrade strings --> <!-- Early access upgrade strings -->
<string name="early_access">Acesso Antecipado</string> <string name="early_access">Acesso Antecipado</string>
<string name="get_early_access">Obter Acesso Antecipado</string> <string name="get_early_access">Obtenha o Acesso Antecipado</string>
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string> <string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
<string name="get_early_access_description">Recursos de ponta, acesso antecipado a atualizações e muito mais</string> <string name="get_early_access_description">Recursos de ponta, acesso antecipado a atualizações e muito mais</string>
<string name="early_access_benefits">Benefícios do Acesso Antecipado</string> <string name="early_access_benefits">Benefícios do Acesso Antecipado</string>
@ -208,35 +203,32 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">Nome do Dispositivo</string>
<string name="use_docked_mode">Modo TV</string> <string name="use_docked_mode">Modo TV</string>
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string> <string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
<string name="emulated_region">Região da emulação</string> <string name="emulated_region">Região da emulação</string>
<string name="emulated_language">Idioma da emulação</string> <string name="emulated_language">Idioma da emulação</string>
<string name="select_rtc_date">Selecione a data do sistema</string> <string name="select_rtc_date">Selecione a data do sistema</string>
<string name="select_rtc_time">Selecione a hora do sistema</string> <string name="select_rtc_time">Selecione a hora do sistema</string>
<string name="use_custom_rtc">Data e hora personalizadas</string> <string name="use_custom_rtc">Data e hora personalizada</string>
<string name="use_custom_rtc_description">Permite a você configurar um relógio em tempo real separado do relógio do seu dispositivo.</string> <string name="use_custom_rtc_description">Permite a você configurar um relógio em tempo real separado do relógio do seu dispositivo.</string>
<string name="set_custom_rtc">Definir um relógio em tempo real personalizado</string> <string name="set_custom_rtc">Defina um relógio em tempo real personalizado</string>
<!-- Graphics settings strings --> <!-- Graphics settings strings -->
<string name="renderer_accuracy">Nível de precisão</string> <string name="renderer_accuracy">Nível de precisão</string>
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string> <string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
<string name="renderer_vsync">Modo de VSync</string> <string name="renderer_vsync">Modo VSync</string>
<string name="renderer_screen_layout">Oriantação</string> <string name="renderer_screen_layout">Oriantação</string>
<string name="renderer_aspect_ratio">Proporção de tela</string> <string name="renderer_aspect_ratio">Proporção da tela</string>
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string> <string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
<string name="fsr_sharpness">Nitidez do FSR</string> <string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao utilizar o contraste dinâmico do FSR</string>
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
<string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</string> <string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</string>
<string name="renderer_force_max_clock_description">Força a GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string> <string name="renderer_force_max_clock_description">Força o GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string>
<string name="renderer_asynchronous_shaders">Usar shaders assíncronos </string> <string name="renderer_asynchronous_shaders">Usar shaders assíncronos </string>
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo engasgos, mas pode apresentar problemas.</string> <string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo travamentos, mas pode apresentar problemas.</string>
<string name="renderer_reactive_flushing">Usar flushing reativo</string> <string name="renderer_reactive_flushing">Usar flushing reativo</string>
<string name="renderer_reactive_flushing_description">Melhora a precisão da renderização em alguns jogos ao custo de desempenho.</string> <string name="renderer_reactive_flushing_description">Melhora a precisão da renderização em alguns jogos ao custo de desempenho.</string>
<string name="use_disk_shader_cache">Cache de shaders em disco</string> <string name="use_disk_shader_cache">Cache de shaders em disco</string>
<string name="use_disk_shader_cache_description">Reduz engasgos ao armazenar e carregar localmente os shaders.</string> <string name="use_disk_shader_cache_description">Reduz travamentos ao armazenar e carregar localmente os shaders.</string>
<string name="anisotropic_filtering">Filtragem anisotrópica</string> <string name="anisotropic_filtering">Filtragem anisotrópica</string>
<string name="anisotropic_filtering_description">Melhora a qualidade das texturas quando visualizadas de ângulos oblíquos</string> <string name="anisotropic_filtering_description">Melhora a qualidade das texturas quando visualizadas de ângulos oblíquos</string>
@ -251,96 +243,9 @@
<string name="fastmem">Fastmem</string> <string name="fastmem">Fastmem</string>
<!-- Audio settings strings --> <!-- Audio settings strings -->
<string name="audio_output_engine">Mecanismo de saída</string> <string name="audio_output_engine">Engine de reprodução</string>
<string name="audio_volume">Volume</string> <string name="audio_volume">Volume</string>
<string name="audio_volume_description">Especifica o volume da reprodução do áudio.</string> <string name="audio_volume_description">Especifica o volume de reprodução.</string>
<!-- Input strings -->
<string name="buttons">Botões</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Mais</string>
<string name="button_minus">Menos</string>
<string name="button_home">Botão Home</string>
<string name="button_capture">Capturar</string>
<string name="start_pause">Start/Pause</string>
<string name="dpad">Direcional</string>
<string name="up">Cima</string>
<string name="down">Baixo</string>
<string name="left">Esquerda</string>
<string name="right">Direita</string>
<string name="left_stick">Analógico esquerdo</string>
<string name="control_stick">Alavanca de controle</string>
<string name="right_stick">Analógico direito</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Pressionado</string>
<string name="range">Alcance</string>
<string name="deadzone">Zona morta</string>
<string name="modifier">Modificador</string>
<string name="modifier_range">Alcance do modificador</string>
<string name="triggers">Gatilhos</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">SL Esquerdo</string>
<string name="button_sr_left">SR Esquerdo</string>
<string name="button_sl_right">SL Direito</string>
<string name="button_sr_right">SR Direito</string>
<string name="button_z">Z</string>
<string name="invalid">Inválido</string>
<string name="not_set">Indefinido</string>
<string name="unknown">Desconhecido</string>
<string name="qualified_hat">%1$s%2$s%3$sDireção %4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
<string name="qualified_axis">Eixo %1$s%2$s</string>
<string name="unused">Não usado</string>
<string name="input_prompt">Mova ou aperte um botão</string>
<string name="unsupported_input">Tipo de entrada não suportada</string>
<string name="input_mapping_filter">Filtro de mapeamento dos controles</string>
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
<string name="auto_map">Mapear controle automaticamente</string>
<string name="auto_map_description">Selecione um controle para iniciar
uma tentativa de mapeamento automático</string>
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
<string name="controller_type">Tipo de controle</string>
<string name="pro_controller">Pro Controller</string>
<string name="handheld">Portátil</string>
<string name="dual_joycons">Par de Joycons</string>
<string name="left_joycon">Joycon Esquerdo</string>
<string name="right_joycon">Joycon Direito</string>
<string name="gamecube_controller">Controle de GameCube</string>
<string name="invert_axis">Inverter eixo</string>
<string name="invert_button">Inverter botão</string>
<string name="toggle_button">Alternar pressionamento do botão</string>
<string name="turbo_button">Botão Turbo</string>
<string name="set_threshold">Definir limite</string>
<string name="toggle_axis">Alternar eixos</string>
<string name="connected">Conectado</string>
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
<string name="input_overlay">Overlay do controle</string>
<string name="vibration">Vibração</string>
<string name="vibration_strength">Intensidade da vibração</string>
<string name="profile">Perfil</string>
<string name="create_new_profile">Criar novo perfil</string>
<string name="enter_profile_name">Insira o nome do perfil</string>
<string name="profile_name_already_exists">O nome do perfil já existe</string>
<string name="invalid_profile_name">Nome de perfil inválido</string>
<string name="use_global_input_configuration">Usar configuração global de controles</string>
<string name="player_num_profile">Perfil do Jogador %d</string>
<string name="delete_input_profile">Deletar perfil de controle</string>
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
<string name="map_control">Mapear botão %1$s</string>
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
<string name="reset_mapping">Redefinir mapeamento</string>
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Isso não pode ser desfeito.</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Padrão</string> <string name="slider_default">Padrão</string>
@ -351,10 +256,10 @@ uma tentativa de mapeamento automático</string>
<string name="loading">Carregando...</string> <string name="loading">Carregando...</string>
<string name="shutting_down">Encerrando...</string> <string name="shutting_down">Encerrando...</string>
<string name="reset_setting_confirmation">Deseja reverter esta configuração para os valores padrões?</string> <string name="reset_setting_confirmation">Deseja reverter esta configuração para os valores padrões?</string>
<string name="reset_to_default">Redefinir para o padrão</string> <string name="reset_to_default">Reverter para o padrão</string>
<string name="reset_to_default_description">Redefine todas as configurações avançadas</string> <string name="reset_to_default_description">Redefine todas as configurações avançadas</string>
<string name="reset_all_settings">Redefinir todas as configurações?</string> <string name="reset_all_settings">Redefinir todas as configurações?</string>
<string name="reset_all_settings_description">Todas as configurações avançadas serão redefinidas para o padrão. Isto não pode ser desfeito.</string> <string name="reset_all_settings_description">Todas as configurações avançadas retornarão ao padrão. Isto não pode ser desfeito.</string>
<string name="settings_reset">Configurações redefinidas</string> <string name="settings_reset">Configurações redefinidas</string>
<string name="close">Fechar</string> <string name="close">Fechar</string>
<string name="learn_more">Saiba mais</string> <string name="learn_more">Saiba mais</string>
@ -373,17 +278,9 @@ uma tentativa de mapeamento automático</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Limpar</string> <string name="clear">Limpar</string>
<string name="global">Global</string> <string name="global">Global</string>
<string name="custom">Personalizada</string> <string name="custom">Personalizado</string>
<string name="notice">Aviso</string> <string name="notice">Aviso</string>
<string name="import_complete">Importação concluída</string> <string name="import_complete">Importação concluída</string>
<string name="more_options">Mais opções</string>
<string name="use_global_setting">Usar configuração global</string>
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
<string name="retry">Reiniciar</string>
<string name="confirm">Confirmar</string>
<string name="load">Carregar</string>
<string name="save">Salvar</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Selecione o driver para a GPU</string> <string name="select_gpu_driver">Selecione o driver para a GPU</string>
<string name="select_gpu_driver_title">Gostaria de substituir o driver atual da GPU? </string> <string name="select_gpu_driver_title">Gostaria de substituir o driver atual da GPU? </string>
@ -401,12 +298,9 @@ uma tentativa de mapeamento automático</string>
<string name="preferences_system">Sistema</string> <string name="preferences_system">Sistema</string>
<string name="preferences_system_description">Modo TV, região, idioma</string> <string name="preferences_system_description">Modo TV, região, idioma</string>
<string name="preferences_graphics">Gráficos</string> <string name="preferences_graphics">Gráficos</string>
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shaders</string> <string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
<string name="preferences_audio">Áudio</string> <string name="preferences_audio">Áudio</string>
<string name="preferences_audio_description">Mecanismo de saída, volume</string> <string name="preferences_audio_description">Engine de reprodução, volume</string>
<string name="preferences_controls">Controles</string>
<string name="preferences_controls_description">Mapear entradas do controle</string>
<string name="preferences_player">Jogador %d</string>
<string name="preferences_theme">Tema e cor</string> <string name="preferences_theme">Tema e cor</string>
<string name="preferences_debug">Depuração</string> <string name="preferences_debug">Depuração</string>
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string> <string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
@ -414,7 +308,7 @@ uma tentativa de mapeamento automático</string>
<!-- Game properties --> <!-- Game properties -->
<string name="info">Informações</string> <string name="info">Informações</string>
<string name="info_description">ID do Programa, desenvolvedora, versão</string> <string name="info_description">ID do Programa, desenvolvedora, versão</string>
<string name="per_game_settings">Configurações do jogo</string> <string name="per_game_settings">Configurações por jogo</string>
<string name="per_game_settings_description">Edite configurações específicas para este jogo</string> <string name="per_game_settings_description">Edite configurações específicas para este jogo</string>
<string name="launch_options">Configurações de inicialização</string> <string name="launch_options">Configurações de inicialização</string>
<string name="path">Caminho</string> <string name="path">Caminho</string>
@ -422,13 +316,13 @@ uma tentativa de mapeamento automático</string>
<string name="developer">Desenvolvedora</string> <string name="developer">Desenvolvedora</string>
<string name="version">Versão</string> <string name="version">Versão</string>
<string name="copy_details">Copiar detalhes</string> <string name="copy_details">Copiar detalhes</string>
<string name="add_ons">Complementos</string> <string name="add_ons">Adicionais</string>
<string name="add_ons_description">Gerencie mods, atualizações e DLC</string> <string name="add_ons_description">Gerencie mods, atualizações e DLC</string>
<string name="clear_shader_cache">Excluir cache de shaders</string> <string name="clear_shader_cache">Excluir cache de shaders</string>
<string name="clear_shader_cache_description">Remove todos os shaders compilados durante a execução do jogo</string> <string name="clear_shader_cache_description">Remove todos os shaders compilados durante a execução do jogo</string>
<string name="clear_shader_cache_warning_description">Você terá mais engasgos enquanto o cache de shaders for recompilado</string> <string name="clear_shader_cache_warning_description">Você terá mais travamentos enquanto o cache de shaders for recompilado</string>
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string> <string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
<string name="addons_game">Complementos: %1$s</string> <string name="addons_game">Adicionais: %1$s</string>
<string name="save_data">Dados salvos</string> <string name="save_data">Dados salvos</string>
<string name="save_data_description">Gerencie dados salvos específicos deste jogo</string> <string name="save_data_description">Gerencie dados salvos específicos deste jogo</string>
<string name="delete_save_data">Deletar dados salvos</string> <string name="delete_save_data">Deletar dados salvos</string>
@ -438,33 +332,22 @@ uma tentativa de mapeamento automático</string>
<string name="select_content_type">Tipo de conteúdo</string> <string name="select_content_type">Tipo de conteúdo</string>
<string name="updates_and_dlc">Atualizações e DLC</string> <string name="updates_and_dlc">Atualizações e DLC</string>
<string name="mods_and_cheats">Mods e cheats</string> <string name="mods_and_cheats">Mods e cheats</string>
<string name="addon_notice">Aviso importante sobre os complementos</string> <string name="addon_notice">Aviso importante sobre os adicionais</string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated --> <!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="addon_notice_description">Para instalar mods e cheats, você deve selecionar uma pasta que contenha um diretório cheats/, romfs/ ou exefs. Não podemos verificar se eles são compatíveis com seu jogo, então tenha cuidado!</string> <string name="addon_notice_description">Para instalar mods e cheats, você deve selecionar uma pasta que contenha um diretório cheats/, romfs/ ou exefs. Não podemos verificar se eles são compatíveis com seu jogo, então tenha cuidado!</string>
<string name="invalid_directory">Diretório inválido </string> <string name="invalid_directory">Diretório inválido </string>
<!-- "cheats/" "romfs/" and "exefs/ should not be translated --> <!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
<string name="invalid_directory_description">Por favor verifique se o diretório selecionado contém uma pasta cheats/, romfs/ ou exefs/ e tente novamente.</string> <string name="invalid_directory_description">Por favor verifique se o diretório selecionado contém uma pasta cheats/, romfs/ ou exefs/ e tente novamente.</string>
<string name="addon_installed_successfully">Complemento instalado com sucesso</string> <string name="addon_installed_successfully">Adicional instalado com sucesso</string>
<string name="verifying_content">Verificando conteúdo...</string> <string name="verifying_content">Verificando conteúdo...</string>
<string name="content_install_notice">Aviso sobre a instalação do conteúdo</string> <string name="content_install_notice">Aviso sobre conteúdo adicional</string>
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string> <string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
<string name="confirm_uninstall">Confirmar desinstalação</string>
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse complemento?</string>
<string name="verify_integrity">Verificar integridade</string>
<string name="verifying">Verificando...</string>
<string name="verify_success">Verificação de integridade concluída!</string>
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">Sua ROM está encriptada</string> <string name="loader_error_encrypted">Sua ROM está encriptada</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente os seus <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de jogos</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
<string name="loader_error_encrypted_keys_description"><![CDATA[Por favor verifique se o seu arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> está instalado para que os jogos possam ser decriptados.]]></string> <string name="loader_error_encrypted_keys_description"><![CDATA[Por favor verifique se o seu arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> está instalado para que os jogos possam ser decriptados.]]></string>
<string name="loader_error_video_core">Ocorreu um erro ao iniciar o núcleo de vídeo.</string> <string name="loader_error_video_core">Ocorreu um erro ao iniciar o núcleo de vídeo.</string>
<string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU personalizado pode resolver este problema.</string> <string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU pode resolver este problema.</string>
<string name="loader_error_invalid_format">Impossível carregar a ROM</string> <string name="loader_error_invalid_format">Impossível carregar a ROM</string>
<string name="loader_error_file_not_found">O arquivo ROM não existe</string> <string name="loader_error_file_not_found">O arquivo ROM não existe</string>
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
<string name="emulation_exit">Sair da emulação</string> <string name="emulation_exit">Sair da emulação</string>
<string name="emulation_done">Feito</string> <string name="emulation_done">Feito</string>
<string name="emulation_fps_counter">Contador de FPS</string> <string name="emulation_fps_counter">Contador de FPS</string>
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
<string name="emulation_toggle_controls">Marcar/Desmarcar botões</string> <string name="emulation_toggle_controls">Marcar/Desmarcar botões</string>
<string name="emulation_rel_stick_center">Centro Relativo do Analógico</string> <string name="emulation_rel_stick_center">Centro Relativo do Analógico</string>
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string> <string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
@ -482,14 +364,12 @@ uma tentativa de mapeamento automático</string>
<string name="emulation_control_adjust">Ajustar overlay</string> <string name="emulation_control_adjust">Ajustar overlay</string>
<string name="emulation_control_scale">Escala</string> <string name="emulation_control_scale">Escala</string>
<string name="emulation_control_opacity">Opacidade</string> <string name="emulation_control_opacity">Opacidade</string>
<string name="emulation_touch_overlay_reset">Redefinir overlay</string> <string name="emulation_touch_overlay_reset">Resetar overlay</string>
<string name="emulation_touch_overlay_edit">Editar overlay</string> <string name="emulation_touch_overlay_edit">Editar overlay</string>
<string name="emulation_pause">Pausar emulação</string> <string name="emulation_pause">Pausar emulação</string>
<string name="emulation_unpause">Retomar a emulação</string> <string name="emulation_unpause">Retomar a emulação</string>
<string name="emulation_input_overlay">Opções de overlay</string> <string name="emulation_input_overlay">Opções de overlay</string>
<string name="touchscreen">Tela de toque</string> <string name="touchscreen">Tela de toque</string>
<string name="lock_drawer">Bloquear este menu</string>
<string name="unlock_drawer">Desbloquear este menu</string>
<string name="load_settings">Carregando configurações...</string> <string name="load_settings">Carregando configurações...</string>
@ -531,12 +411,12 @@ uma tentativa de mapeamento automático</string>
<!-- Renderer APIs --> <!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string> <string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Nenhuma</string> <string name="renderer_none">Nenhum</string>
<!-- Renderer Accuracy --> <!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">Normal</string> <string name="renderer_accuracy_normal">Normal</string>
<string name="renderer_accuracy_high">Alta</string> <string name="renderer_accuracy_high">Alto</string>
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string> <string name="renderer_accuracy_extreme">Extremo (Lento)</string>
<!-- Resolutions --> <!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string> <string name="resolution_half">0.5X (360p/540p)</string>
@ -582,13 +462,13 @@ uma tentativa de mapeamento automático</string>
<string name="ratio_stretch">Esticar à janela</string> <string name="ratio_stretch">Esticar à janela</string>
<!-- CPU Backend --> <!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string> <string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string> <string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
<!-- CPU Accuracy --> <!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Precisa</string> <string name="cpu_accuracy_accurate">Preciso</string>
<string name="cpu_accuracy_unsafe">Não segura</string> <string name="cpu_accuracy_unsafe">Não seguro</string>
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string> <string name="cpu_accuracy_paranoid">Paranóico (Lento)</string>
<!-- Gamepad Buttons --> <!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Botões Direcionais</string> <string name="gamepad_d_pad">Botões Direcionais</string>
@ -623,7 +503,7 @@ uma tentativa de mapeamento automático</string>
<string name="multiplier_sixteen">16x</string> <string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme --> <!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Planos de fundo pretos</string> <string name="use_black_backgrounds">Plano de fundo preto</string>
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string> <string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
<!-- Picture-In-Picture --> <!-- Picture-In-Picture -->
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
<string name="mute">Mudo</string> <string name="mute">Mudo</string>
<string name="unmute">Tirar do Mudo</string> <string name="unmute">Tirar do Mudo</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Alinhamento vertical</string>
<string name="top">Em cima</string>
<string name="center">Centralizado</string>
<string name="bottom">Embaixo</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Licenças</string> <string name="licenses">Licenças</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string> <string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>

View File

@ -137,11 +137,6 @@
<item quantity="other">Dados salvos de %d importados com sucesso</item> <item quantity="other">Dados salvos de %d importados com sucesso</item>
</plurals> </plurals>
<string name="no_save_data_found">Dados salvos não encontrados</string> <string name="no_save_data_found">Dados salvos não encontrados</string>
<string name="verify_installed_content">Verificar conteúdo instalado</string>
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
<string name="keys_missing">Faltando chaves de encriptação</string>
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Launcher de miniaplicativos</string> <string name="applets">Launcher de miniaplicativos</string>
@ -208,7 +203,6 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">Nome do Dispositivo</string>
<string name="use_docked_mode">Modo Ancorado</string> <string name="use_docked_mode">Modo Ancorado</string>
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string> <string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
<string name="emulated_region">Região da emulação</string> <string name="emulated_region">Região da emulação</string>
@ -226,8 +220,6 @@
<string name="renderer_screen_layout">Oriantação</string> <string name="renderer_screen_layout">Oriantação</string>
<string name="renderer_aspect_ratio">Proporção da tela</string> <string name="renderer_aspect_ratio">Proporção da tela</string>
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string> <string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
<string name="fsr_sharpness">Nitidez do FSR</string>
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao usar contraste dinâmico do FSR</string>
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string> <string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
<string name="renderer_force_max_clock">Força velocidade máxima (Adreno only)</string> <string name="renderer_force_max_clock">Força velocidade máxima (Adreno only)</string>
<string name="renderer_force_max_clock_description">Força o GPU a correr à velocidade máxima (restrições térmicas serão aplicadas)</string> <string name="renderer_force_max_clock_description">Força o GPU a correr à velocidade máxima (restrições térmicas serão aplicadas)</string>
@ -255,93 +247,6 @@
<string name="audio_volume">Volume</string> <string name="audio_volume">Volume</string>
<string name="audio_volume_description">Especifica o volume de saída.</string> <string name="audio_volume_description">Especifica o volume de saída.</string>
<!-- Input strings -->
<string name="buttons">Botões</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Mais</string>
<string name="button_minus">Menos</string>
<string name="button_home">Home</string>
<string name="button_capture">Capturar</string>
<string name="start_pause">Start/Pause</string>
<string name="dpad">D-Pad</string>
<string name="up">Cima</string>
<string name="down">Baixo</string>
<string name="left">Esquerda</string>
<string name="right">Direita</string>
<string name="left_stick">Analógico esquerdo</string>
<string name="control_stick">Alavanca de controle</string>
<string name="right_stick">Analógico direito</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Premido</string>
<string name="range">Alcance</string>
<string name="deadzone">Zona morta</string>
<string name="modifier">Modificador</string>
<string name="modifier_range">Alcance do modificador</string>
<string name="triggers">Gatilhos</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">SL Esquerdo</string>
<string name="button_sr_left">SR Esquerdo</string>
<string name="button_sl_right">SL Direito</string>
<string name="button_sr_right">SR Direito</string>
<string name="button_z">Z</string>
<string name="invalid">Inválido</string>
<string name="not_set">Indefinido</string>
<string name="unknown">Desconhecido</string>
<string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
<string name="qualified_axis">Eixo %1$s%2$s</string>
<string name="unused">Não usado</string>
<string name="input_prompt">Mova ou aperte um botão</string>
<string name="unsupported_input">Tipo de entrada não suportada</string>
<string name="input_mapping_filter">Filtro de mapeamento de entrada</string>
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
<string name="auto_map">Mapear controle automaticamente</string>
<string name="auto_map_description">Selecione um controle para iniciar
uma tentativa de mapeamento automático</string>
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
<string name="controller_type">Tipo de controle</string>
<string name="pro_controller">Comando Pro</string>
<string name="handheld">Portátil</string>
<string name="dual_joycons">Par de Joycons</string>
<string name="left_joycon">Joycon Esquerdo</string>
<string name="right_joycon">Joycon Direito</string>
<string name="gamecube_controller">Controlador de depuração</string>
<string name="invert_axis">Inverter eixo</string>
<string name="invert_button">Inverter botão</string>
<string name="toggle_button">Alternar pressionamento do botão</string>
<string name="turbo_button">Botão Turbo</string>
<string name="set_threshold">Definir limite</string>
<string name="toggle_axis">Alternar eixos</string>
<string name="connected">Conectado</string>
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
<string name="input_overlay">Overlay do controle</string>
<string name="vibration">Vibração</string>
<string name="vibration_strength">Intensidade da vibração</string>
<string name="profile">Perfil</string>
<string name="create_new_profile">Criar novo perfil</string>
<string name="enter_profile_name">Insira o nome do perfil</string>
<string name="profile_name_already_exists">O nome do perfil já existe</string>
<string name="invalid_profile_name">Nome de perfil inválido</string>
<string name="use_global_input_configuration">Usar configuração global de controles</string>
<string name="player_num_profile">Perfil do Jogador %d</string>
<string name="delete_input_profile">Deletar perfil de controle</string>
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
<string name="map_control">Mapear botão %1$s</string>
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
<string name="reset_mapping">Redefinir mapeamento</string>
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Iso não pode ser desfeito.</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Padrão</string> <string name="slider_default">Padrão</string>
<string name="ini_saved">Configurações guardadas</string> <string name="ini_saved">Configurações guardadas</string>
@ -376,14 +281,6 @@ uma tentativa de mapeamento automático</string>
<string name="custom">Personalizado</string> <string name="custom">Personalizado</string>
<string name="notice">Aviso</string> <string name="notice">Aviso</string>
<string name="import_complete">Importação concluída</string> <string name="import_complete">Importação concluída</string>
<string name="more_options">Mais opções</string>
<string name="use_global_setting">Usar configuração global</string>
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
<string name="retry">Reiniciar</string>
<string name="confirm">Confirmar</string>
<string name="load">Carregar</string>
<string name="save">Guardar</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Seleciona a driver para o GPU</string> <string name="select_gpu_driver">Seleciona a driver para o GPU</string>
<string name="select_gpu_driver_title">Queres substituir o driver do GPU atual? </string> <string name="select_gpu_driver_title">Queres substituir o driver do GPU atual? </string>
@ -404,9 +301,6 @@ uma tentativa de mapeamento automático</string>
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string> <string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
<string name="preferences_audio">Audio</string> <string name="preferences_audio">Audio</string>
<string name="preferences_audio_description">Engine de reprodução, volume</string> <string name="preferences_audio_description">Engine de reprodução, volume</string>
<string name="preferences_controls">Controlos</string>
<string name="preferences_controls_description">Mapear entradas do controle</string>
<string name="preferences_player">Jogador %d</string>
<string name="preferences_theme">Cor e tema.</string> <string name="preferences_theme">Cor e tema.</string>
<string name="preferences_debug">Depurar</string> <string name="preferences_debug">Depurar</string>
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string> <string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
@ -448,17 +342,6 @@ uma tentativa de mapeamento automático</string>
<string name="verifying_content">Verificando conteúdo</string> <string name="verifying_content">Verificando conteúdo</string>
<string name="content_install_notice">Aviso sobre conteúdo adicional</string> <string name="content_install_notice">Aviso sobre conteúdo adicional</string>
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string> <string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
<string name="confirm_uninstall">Confirmar desinstalação</string>
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse adicional?</string>
<string name="verify_integrity">Verificar integridade</string>
<string name="verifying">Verificando...</string>
<string name="verify_success">Verificação de integridade concluída!</string>
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">A tua ROM está encriptada</string> <string name="loader_error_encrypted">A tua ROM está encriptada</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para despejar novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> or <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para despejar novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> or <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
<string name="emulation_exit">Parar emulação</string> <string name="emulation_exit">Parar emulação</string>
<string name="emulation_done">Feito</string> <string name="emulation_done">Feito</string>
<string name="emulation_fps_counter">Contador de FPS</string> <string name="emulation_fps_counter">Contador de FPS</string>
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
<string name="emulation_toggle_controls">Alterar controles</string> <string name="emulation_toggle_controls">Alterar controles</string>
<string name="emulation_rel_stick_center">Centro Relativo de Analógico</string> <string name="emulation_rel_stick_center">Centro Relativo de Analógico</string>
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string> <string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
@ -488,8 +370,6 @@ uma tentativa de mapeamento automático</string>
<string name="emulation_unpause">Despausar emulação</string> <string name="emulation_unpause">Despausar emulação</string>
<string name="emulation_input_overlay">Opções de overlay</string> <string name="emulation_input_overlay">Opções de overlay</string>
<string name="touchscreen">Ecrã Táctil</string> <string name="touchscreen">Ecrã Táctil</string>
<string name="lock_drawer">Bloquear submenu</string>
<string name="unlock_drawer">Desbloquear submenu</string>
<string name="load_settings">Carregando configurações...</string> <string name="load_settings">Carregando configurações...</string>
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
<string name="mute">Mute</string> <string name="mute">Mute</string>
<string name="unmute">Unmute</string> <string name="unmute">Unmute</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Alinhamento vertical</string>
<string name="top">Em cima</string>
<string name="center">Centralizado</string>
<string name="bottom">Embaixo</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Licenças</string> <string name="licenses">Licenças</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string> <string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>

View File

@ -140,11 +140,6 @@
<item quantity="other">Импортировано %d сохранений</item> <item quantity="other">Импортировано %d сохранений</item>
</plurals> </plurals>
<string name="no_save_data_found">Не найдены сохраненмия</string> <string name="no_save_data_found">Не найдены сохраненмия</string>
<string name="verify_installed_content">Подтвердить установленный контент</string>
<string name="verify_installed_content_description">Проверяет весь установленный контент на наличие повреждений</string>
<string name="keys_missing">Отсутствуют ключи шифрования</string>
<string name="keys_missing_description">Прошивка и розничные игры не могут быть расшифрованы</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">Запуск апплета</string> <string name="applets">Запуск апплета</string>
@ -211,7 +206,6 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">Название устройства</string>
<string name="use_docked_mode">Режим док-станции</string> <string name="use_docked_mode">Режим док-станции</string>
<string name="use_docked_mode_description">Увеличивает разрешение, снижая производительность. Портативный режим используется при отключении, снижая разрешение и повышая производительность.</string> <string name="use_docked_mode_description">Увеличивает разрешение, снижая производительность. Портативный режим используется при отключении, снижая разрешение и повышая производительность.</string>
<string name="emulated_region">Регион консоли</string> <string name="emulated_region">Регион консоли</string>
@ -229,8 +223,6 @@
<string name="renderer_screen_layout">Ориентация</string> <string name="renderer_screen_layout">Ориентация</string>
<string name="renderer_aspect_ratio">Соотношение сторон</string> <string name="renderer_aspect_ratio">Соотношение сторон</string>
<string name="renderer_scaling_filter">Фильтр адаптации окна</string> <string name="renderer_scaling_filter">Фильтр адаптации окна</string>
<string name="fsr_sharpness">Резкость FSR</string>
<string name="fsr_sharpness_description">Определяет, насколько чётким будет изображение при использовании динамического контраста FSR.</string>
<string name="renderer_anti_aliasing">Метод сглаживания</string> <string name="renderer_anti_aliasing">Метод сглаживания</string>
<string name="renderer_force_max_clock">Принудительно заставить максимальную тактовую частоту (только для Adreno)</string> <string name="renderer_force_max_clock">Принудительно заставить максимальную тактовую частоту (только для Adreno)</string>
<string name="renderer_force_max_clock_description">Заставляет ГП работать на максимально возможных тактовых частотах (тепловые ограничения все равно будут применяться).</string> <string name="renderer_force_max_clock_description">Заставляет ГП работать на максимально возможных тактовых частотах (тепловые ограничения все равно будут применяться).</string>
@ -258,92 +250,6 @@
<string name="audio_volume">Громкость</string> <string name="audio_volume">Громкость</string>
<string name="audio_volume_description">Задает громкость аудиовыхода.</string> <string name="audio_volume_description">Задает громкость аудиовыхода.</string>
<!-- Input strings -->
<string name="buttons">Кнопки</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Плюс</string>
<string name="button_minus">Минус</string>
<string name="button_home">Home</string>
<string name="button_capture">Захват</string>
<string name="start_pause">Старт / Пауза</string>
<string name="dpad">Крестовина</string>
<string name="up">Вверх</string>
<string name="down">Вниз</string>
<string name="left">Влево</string>
<string name="right">Вправо</string>
<string name="left_stick">Левый стик</string>
<string name="control_stick">Стик управления</string>
<string name="right_stick">Правый стик</string>
<string name="c_stick">C-Джойстик</string>
<string name="pressed">Нажатие</string>
<string name="range">Диапазон</string>
<string name="deadzone">Мертвая зона</string>
<string name="modifier">Модификатор</string>
<string name="modifier_range">Диапазон модификатора</string>
<string name="triggers">Триггеры</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">Левый SL</string>
<string name="button_sr_left">Левый SR</string>
<string name="button_sl_right">Правый SL</string>
<string name="button_sr_right">Правый SR</string>
<string name="button_z">Z</string>
<string name="invalid">Недопустимо</string>
<string name="not_set">Не установлено</string>
<string name="unknown">Неизвестно</string>
<string name="qualified_hat">%1$s%2$s%3$sКрест%4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$sОсь%4$s</string>
<string name="qualified_button">%1$s%2$s%3$sКнопка %4$s</string>
<string name="qualified_axis">Ось %1$s%2$s</string>
<string name="unused">Не используется</string>
<string name="input_prompt">Переместите или нажмите</string>
<string name="unsupported_input">Неподдерживаемый тип ввода</string>
<string name="input_mapping_filter">Фильтр маппинга ввода</string>
<string name="input_mapping_filter_description">Выберите устройство для фильтрации маппинга</string>
<string name="auto_map">Авто-маппинг контроллера</string>
<string name="auto_map_description">Выберите устройство для автоматического маппинга</string>
<string name="attempted_auto_map">Попытка автоматического маппинга %1$s</string>
<string name="controller_type">Тип контроллера</string>
<string name="pro_controller">Контроллер Pro</string>
<string name="handheld">Портативный</string>
<string name="dual_joycons">Двойные Joy-Сon\'ы</string>
<string name="left_joycon">Левый Joy-Сon</string>
<string name="right_joycon">Правый Joy-Сon</string>
<string name="gamecube_controller">Контроллер GameCube</string>
<string name="invert_axis">Инвертировать оси</string>
<string name="invert_button">Инвертировать кнопку</string>
<string name="toggle_button">Переключить кнопку</string>
<string name="turbo_button">Турбо кнопка</string>
<string name="set_threshold">Установить порог</string>
<string name="toggle_axis">Переключить оси</string>
<string name="connected">Подключено</string>
<string name="use_system_vibrator">Использовать системное вибро</string>
<string name="input_overlay">Оверлей ввода</string>
<string name="vibration">Вибрация</string>
<string name="vibration_strength">Сила вибрации</string>
<string name="profile">Профиль</string>
<string name="create_new_profile">Создать новый профиль</string>
<string name="enter_profile_name">Введите имя профиля</string>
<string name="profile_name_already_exists">Имя профиля уже существует</string>
<string name="invalid_profile_name">Неверное имя профиля</string>
<string name="use_global_input_configuration">Использовать глобальную настройку управления</string>
<string name="player_num_profile">Профиль игрока %d</string>
<string name="delete_input_profile">Удалить профиль управления</string>
<string name="delete_input_profile_description">Вы уверены, что хотите удалить этот профиль? Это необратимо.</string>
<string name="stick_map_description">Переместите стик влево, а затем вверх или нажмите</string>
<string name="button_map_description">Нажмите кнопку или переместите триггер/стик.</string>
<string name="map_dpad_direction">Назначить на D-Pad %1$s</string>
<string name="map_control">Назначить на %1$s</string>
<string name="failed_to_load_profile">Не удалось загрузить профиль</string>
<string name="failed_to_save_profile">Не удалось сохранить профиль</string>
<string name="reset_mapping">Сбросить маппинги</string>
<string name="reset_mapping_description">Вы уверены, что хотите сбросить все маппинги для этого контроллера на значения по умолчанию? Это действие нельзя отменить.</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">По умолчанию</string> <string name="slider_default">По умолчанию</string>
<string name="ini_saved">Сохраненные настройки</string> <string name="ini_saved">Сохраненные настройки</string>
@ -378,14 +284,6 @@
<string name="custom">Другое</string> <string name="custom">Другое</string>
<string name="notice">Уведомление</string> <string name="notice">Уведомление</string>
<string name="import_complete">Импорт завершен</string> <string name="import_complete">Импорт завершен</string>
<string name="more_options">Больше настроек</string>
<string name="use_global_setting">Исп. глобальные настройки</string>
<string name="operation_completed_successfully">Операция выполнена успешно</string>
<string name="retry">Повторить</string>
<string name="confirm">Подтвердить</string>
<string name="load">Загрузить</string>
<string name="save">Сохранить</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Выбрать драйвер ГП</string> <string name="select_gpu_driver">Выбрать драйвер ГП</string>
<string name="select_gpu_driver_title">Хотите заменить текущий драйвер ГП?</string> <string name="select_gpu_driver_title">Хотите заменить текущий драйвер ГП?</string>
@ -406,9 +304,6 @@
<string name="preferences_graphics_description">Уровень точности, разрешение, кэш шейдеров</string> <string name="preferences_graphics_description">Уровень точности, разрешение, кэш шейдеров</string>
<string name="preferences_audio">Аудио</string> <string name="preferences_audio">Аудио</string>
<string name="preferences_audio_description">Движок вывода, громкость</string> <string name="preferences_audio_description">Движок вывода, громкость</string>
<string name="preferences_controls">Управление</string>
<string name="preferences_controls_description">Маппинг контроллера</string>
<string name="preferences_player">Игрок %d</string>
<string name="preferences_theme">Тема и цвет</string> <string name="preferences_theme">Тема и цвет</string>
<string name="preferences_debug">Отладка</string> <string name="preferences_debug">Отладка</string>
<string name="preferences_debug_description">Отладка ЦП/ГП, графический API, fastmem</string> <string name="preferences_debug_description">Отладка ЦП/ГП, графический API, fastmem</string>
@ -450,17 +345,6 @@
<string name="verifying_content">Проверка содержимого...</string> <string name="verifying_content">Проверка содержимого...</string>
<string name="content_install_notice">Уведомление об установке контента</string> <string name="content_install_notice">Уведомление об установке контента</string>
<string name="content_install_notice_description">Содержимое, которое вы выбрали, не соответствует этой игре.\nУстановить все равно?</string> <string name="content_install_notice_description">Содержимое, которое вы выбрали, не соответствует этой игре.\nУстановить все равно?</string>
<string name="confirm_uninstall">Подтверждение удаления</string>
<string name="confirm_uninstall_description">Вы уверены, что хотите удалить это дополнение?</string>
<string name="verify_integrity">Проверить целостность</string>
<string name="verifying">Проверка...</string>
<string name="verify_success">Проверка целостности прошла успешно!</string>
<string name="verify_failure">Проверка целостности не удалась!</string>
<string name="verify_failure_description">Файл может быть поврежден</string>
<string name="verify_no_result">Проверка целостности не может быть выполнена</string>
<string name="verify_no_result_description">Файл не проверялся на корректность</string>
<string name="verification_failed_for">Проверка не удалась для следующих файлов:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">Ваш ROM зашифрованный</string> <string name="loader_error_encrypted">Ваш ROM зашифрованный</string>
<string name="loader_error_encrypted_roms_description"><![CDATA[Следуйте инструкциям, чтобы пере-дампить игровые картриджи <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\"> или <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\"> установленные игры</a>.]]></string> <string name="loader_error_encrypted_roms_description"><![CDATA[Следуйте инструкциям, чтобы пере-дампить игровые картриджи <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\"> или <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\"> установленные игры</a>.]]></string>
@ -474,7 +358,6 @@
<string name="emulation_exit">Выход из эмуляции</string> <string name="emulation_exit">Выход из эмуляции</string>
<string name="emulation_done">Готово</string> <string name="emulation_done">Готово</string>
<string name="emulation_fps_counter">Счётчик FPS</string> <string name="emulation_fps_counter">Счётчик FPS</string>
<string name="emulation_thermal_indicator">Индикатор температуры</string>
<string name="emulation_toggle_controls">Переключение управления</string> <string name="emulation_toggle_controls">Переключение управления</string>
<string name="emulation_rel_stick_center">Относительный центр стика</string> <string name="emulation_rel_stick_center">Относительный центр стика</string>
<string name="emulation_dpad_slide">Слайд крестовиной</string> <string name="emulation_dpad_slide">Слайд крестовиной</string>
@ -490,8 +373,6 @@
<string name="emulation_unpause">Возобновить эмуляцию</string> <string name="emulation_unpause">Возобновить эмуляцию</string>
<string name="emulation_input_overlay">Настройка оверлея</string> <string name="emulation_input_overlay">Настройка оверлея</string>
<string name="touchscreen">Сенсорный экран</string> <string name="touchscreen">Сенсорный экран</string>
<string name="lock_drawer">Заморозить док</string>
<string name="unlock_drawer">Разморозить док</string>
<string name="load_settings">Загрузка настроек...</string> <string name="load_settings">Загрузка настроек...</string>
@ -636,12 +517,6 @@
<string name="mute">Выключить звук</string> <string name="mute">Выключить звук</string>
<string name="unmute">Включить звук</string> <string name="unmute">Включить звук</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">Вертикальное выравнивание</string>
<string name="top">Верх</string>
<string name="center">Центр</string>
<string name="bottom">Низ</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">Лицензии</string> <string name="licenses">Лицензии</string>
<string name="license_fidelityfx_fsr_description">Высококачественное масштабирование от AMD</string> <string name="license_fidelityfx_fsr_description">Высококачественное масштабирование от AMD</string>

View File

@ -81,8 +81,6 @@
<string name="save_file_invalid_zip_structure_description">Назва першої вкладеної папки має бути ідентифікатором гри.</string> <string name="save_file_invalid_zip_structure_description">Назва першої вкладеної папки має бути ідентифікатором гри.</string>
<string name="import_saves">Імпорт</string> <string name="import_saves">Імпорт</string>
<string name="export_saves">Експорт</string> <string name="export_saves">Експорт</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia не існує</string> <string name="gaia_is_not_real">Gaia не існує</string>
<string name="copied_to_clipboard">Скопійовано в буфер обміну</string> <string name="copied_to_clipboard">Скопійовано в буфер обміну</string>
@ -126,46 +124,6 @@
<string name="audio_volume">Гучність</string> <string name="audio_volume">Гучність</string>
<string name="audio_volume_description">Вказує гучність аудіовиходу.</string> <string name="audio_volume_description">Вказує гучність аудіовиходу.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Плюс</string>
<string name="button_minus">Мінус</string>
<string name="button_home">Home</string>
<string name="button_capture">Захоплення</string>
<string name="dpad">Кнопки напрямків</string>
<string name="up">Вгору</string>
<string name="down">Вниз</string>
<string name="left">Вліво</string>
<string name="right">Вправо</string>
<string name="c_stick">C-Джойстик</string>
<string name="pressed">Натиснення</string>
<string name="range">Діапазон</string>
<string name="deadzone">Мертва зона</string>
<string name="modifier">Модифікатор</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Неприпустимо</string>
<string name="pro_controller">Контролер Pro</string>
<string name="handheld">Портативний</string>
<string name="dual_joycons">Подвійні Joy-Con\'и</string>
<string name="left_joycon">Лівий Joy-Con</string>
<string name="right_joycon">Правий Joy-Con</string>
<string name="gamecube_controller">Контролер GameCube</string>
<string name="invert_axis">Інвертувати осі</string>
<string name="invert_button">Інвертувати кнопку</string>
<string name="toggle_button">Переключити кнопку</string>
<string name="turbo_button">Турбо кнопка</string>
<string name="set_threshold">Встановити поріг</string>
<string name="toggle_axis">Переключити осі</string>
<string name="connected">З\'єднано</string>
<string name="vibration">Вібрація</string>
<string name="profile">Профіль</string>
<string name="use_global_input_configuration">Використовувати глобальну конфігурацію вводу</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">За замовчуванням</string> <string name="slider_default">За замовчуванням</string>
<string name="ini_saved">Збережені налаштування</string> <string name="ini_saved">Збережені налаштування</string>
@ -186,8 +144,6 @@
<string name="delete">Видалити</string> <string name="delete">Видалити</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="clear">Очистити</string> <string name="clear">Очистити</string>
<string name="save">Зберегти</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Вибрати драйвер ГП</string> <string name="select_gpu_driver">Вибрати драйвер ГП</string>
<string name="select_gpu_driver_title">Хочете замінити поточний драйвер ГП?</string> <string name="select_gpu_driver_title">Хочете замінити поточний драйвер ГП?</string>
@ -203,7 +159,6 @@
<string name="preferences_system">Система</string> <string name="preferences_system">Система</string>
<string name="preferences_graphics">Графіка</string> <string name="preferences_graphics">Графіка</string>
<string name="preferences_audio">Аудіо</string> <string name="preferences_audio">Аудіо</string>
<string name="preferences_controls">Керування</string>
<string name="preferences_theme">Тема і колір</string> <string name="preferences_theme">Тема і колір</string>
<string name="preferences_debug">Налагодження</string> <string name="preferences_debug">Налагодження</string>
<!-- Game properties --> <!-- Game properties -->
@ -224,6 +179,7 @@
<string name="emulation_control_scale">Масштаб</string> <string name="emulation_control_scale">Масштаб</string>
<string name="emulation_control_opacity">Непрозорість</string> <string name="emulation_control_opacity">Непрозорість</string>
<string name="touchscreen">Сенсорний екран</string> <string name="touchscreen">Сенсорний екран</string>
<!-- Errors and warnings --> <!-- Errors and warnings -->
<string name="abort_button">Перервати</string> <string name="abort_button">Перервати</string>
<string name="continue_button">Продовжити</string> <string name="continue_button">Продовжити</string>

View File

@ -1,49 +1,49 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_disclaimer">Phần mềm này sẽ chạy trò chơi cho máy chơi game Nintendo Switch. Không có game titles hoặc keys được bao gồm.&lt;br /&gt;&lt;br /&gt;Trước khi bạn bắt đầu, hãy tìm file <![CDATA[<b> prod.keys </b>]]> trên bộ nhớ thiết bị của bạn.&lt;br /&gt;&lt;br /&gt;<![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\">Tìm hiểu thêm</a>]]></string> <string name="app_disclaimer">Phần mềm này sẽ chạy các game cho máy chơi game Nintendo Switch. Không có title games hoặc keys được bao gồm.&lt;br /&gt;&lt;br /&gt;Trước khi bạn bắt đầu, hãy tìm tập tin <![CDATA[<b> prod.keys </b>]]> trên bộ nhớ thiết bị của bạn.&lt;br /&gt;&lt;br /&gt;<![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\">Tìm hiểu thêm</a>]]></string>
<string name="notice_notification_channel_name">Thông báo và lỗi</string> <string name="notice_notification_channel_name">Thông báo và lỗi</string>
<string name="notice_notification_channel_description">Hiển thị thông báo khi có sự cố xảy ra</string> <string name="notice_notification_channel_description">Hiển thị thông báo khi có sự cố xảy ra.</string>
<string name="notification_permission_not_granted">Ứng dụng không được cấp quyền thông báo!</string> <string name="notification_permission_not_granted">Ứng dụng không được cấp quyền thông báo!</string>
<!-- Setup strings --> <!-- Setup strings -->
<string name="welcome">Chào mừng!</string> <string name="welcome">Chào mừng!</string>
<string name="welcome_description">Tìm hiểu cách cài đặt &lt;b>yuzu&lt;/b> và bắt đầu giả lập.</string> <string name="welcome_description">Tìm hiểu cách cài đặt &lt;b>yuzu&lt;/b> và bắt đầu giả lập.</string>
<string name="get_started">Bắt đầu</string> <string name="get_started">Bắt đầu</string>
<string name="keys">Chìa khóa</string> <string name="keys">Keys</string>
<string name="keys_description">Chọn file &lt;b>prod.keys&lt;/b> của bạn bằng nút bên dưới.</string> <string name="keys_description">Chọn tệp &lt;b>prod.keys&lt;/b> của bạn bằng nút bên dưới.</string>
<string name="select_keys">Chọn Chìa khóa</string> <string name="select_keys">Chọn Keys</string>
<string name="games">Trò chơi</string> <string name="games">Game</string>
<string name="games_description">Chọn thư mục &lt;b>Games&lt;/b> của bạn bằng nút bên dưới.</string> <string name="games_description">Chọn thư mục &lt;b>Game&lt;/b> của bạn bằng nút bên dưới.</string>
<string name="done">Hoàn thành</string> <string name="done">Hoàn thành</string>
<string name="done_description">Tất cả đã hoàn tất.\nHãy tận hưởng trò chơi của bạn!</string> <string name="done_description">Tất cả đã hoàn tất.\nHãy tận hưởng các game của bạn!</string>
<string name="text_continue">Tiếp tục</string> <string name="text_continue">Tiếp tục</string>
<string name="next">Tiếp theo</string> <string name="next">Tiếp theo</string>
<string name="back">Trở lại</string> <string name="back">Trở lại</string>
<string name="add_games">Thêm Trò chơi</string> <string name="add_games">Thêm Game</string>
<string name="add_games_description">Chọn thư mục trò chơi của bạn</string> <string name="add_games_description">Chọn thư mục game của bạn</string>
<!-- Home strings --> <!-- Home strings -->
<string name="home_games">Trò chơi</string> <string name="home_games">Game</string>
<string name="home_search">Tìm</string> <string name="home_search">Tìm kiếm</string>
<string name="home_settings">Cài đặt</string> <string name="home_settings">Cài đặt</string>
<string name="empty_gamelist">Không tìm thấy files hoặc chưa có thư mục trò chơi nào được chọn.</string> <string name="empty_gamelist">Không tìm thấy tập tin hoặc chưa có thư mục game nào được chọn.</string>
<string name="search_and_filter_games">Tìm và lọc trò chơi</string> <string name="search_and_filter_games">Tìm và lọc game</string>
<string name="select_games_folder">Chọn thư mục trò chơi</string> <string name="select_games_folder">Chọn thư mục game</string>
<string name="select_games_folder_description">Cho phép yuzu thêm các trò chơi vào danh sách</string> <string name="select_games_folder_description">Cho phép yuzu thêm vào danh sách game</string>
<string name="add_games_warning">Bỏ qua lựa chọn thư mục trò chơi?</string> <string name="add_games_warning">Bỏ qua việc lựa chọn thư mục game?</string>
<string name="add_games_warning_description">Trò chơi sẽ không hiển thị trong danh sách nếu một thư mục không được chọn</string> <string name="add_games_warning_description">Game sẽ không hiển thị trong danh sách nếu một thư mục không được chọn.</string>
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string> <string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
<string name="home_search_games">Tìm kiếm games</string> <string name="home_search_games">Tìm kiếm game</string>
<string name="games_dir_selected">Thư mục trò chơi đã được chọn</string> <string name="games_dir_selected">Thư mục game đã được chọn</string>
<string name="install_prod_keys">Cài prod.keys</string> <string name="install_prod_keys">Cài đặt prod.keys</string>
<string name="install_prod_keys_description">Yêu cầu để giải mã các game bán lẻ</string> <string name="install_prod_keys_description">Yêu cầu để giải mã các game bán lẻ</string>
<string name="install_prod_keys_warning">Bỏ qua thêm chìa khóa?</string> <string name="install_prod_keys_warning">Bỏ qua việc thêm keys?</string>
<string name="install_prod_keys_warning_description">Cần có chìa khóa hợp lệ để giả lập trò chơi. Chỉ có các ứng dụng homebrew có thể vận hành nếu bạn tiếp tục</string> <string name="install_prod_keys_warning_description">Cần có keys hợp lệ để giả lập các game bán lẻ. Chỉ có các ứng dụng homebrew có thể vận hành nếu bạn tiếp tục.</string>
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string> <string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
<string name="notifications">Thông báo</string> <string name="notifications">Thông báo</string>
<string name="notifications_description">Ấn vào nút bên dưới để cấp quyền ứng dụng gửi thông báo</string> <string name="notifications_description">Cấp quyền thông báo bằng nút bên dưới.</string>
<string name="give_permission">Cấp quyền</string> <string name="give_permission">Cấp quyền</string>
<string name="notification_warning">Bỏ qua cấp quyền thông báo?</string> <string name="notification_warning">Bỏ qua việc cấp quyền thông báo?</string>
<string name="notification_warning_description">yuzu sẽ không thể gửi những thông báo quan trọng đến bạn.</string> <string name="notification_warning_description">yuzu sẽ không thể gửi những thông báo quan trọng đến bạn.</string>
<string name="permission_denied">Đã từ chối cấp quyền</string> <string name="permission_denied">Đã từ chối cấp quyền</string>
<string name="permission_denied_description">Bạn từ chối cấp quyền này quá nhiều lần và giờ bạn phải cấp quyền thủ công trong cài đặt máy.</string> <string name="permission_denied_description">Bạn từ chối cấp quyền này quá nhiều lần và giờ bạn phải cấp quyền thủ công trong cài đặt máy.</string>
@ -51,29 +51,29 @@
<string name="about_description">Phiên bản, đóng góp và những thứ khác</string> <string name="about_description">Phiên bản, đóng góp và những thứ khác</string>
<string name="warning_help">Trợ giúp</string> <string name="warning_help">Trợ giúp</string>
<string name="warning_skip">Bỏ qua</string> <string name="warning_skip">Bỏ qua</string>
<string name="warning_cancel">Huỷ</string> <string name="warning_cancel">Hủy bỏ</string>
<string name="install_amiibo_keys">Cài đặt Amiibo</string> <string name="install_amiibo_keys">Cài đặt keys Amiibo</string>
<string name="install_amiibo_keys_description">Cần thiết để dùng Amiibo trong trò chơi</string> <string name="install_amiibo_keys_description">Cần thiết để dùng Amiibo trong game</string>
<string name="invalid_keys_file">Chìa khóa không hợp lệ</string> <string name="invalid_keys_file">Tệp keys không hợp lệ đã được chọn</string>
<string name="install_keys_success">Cài đặt chìa khóa thành công</string> <string name="install_keys_success">Cài đặt keys thành công</string>
<string name="reading_keys_failure">Lỗi đọc keys mã hóa</string> <string name="reading_keys_failure">Lỗi đọc keys mã hóa</string>
<string name="install_prod_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .keys và thử lại.</string> <string name="install_prod_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .keys và thử lại.</string>
<string name="install_amiibo_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .bin và thử lại.</string> <string name="install_amiibo_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .bin và thử lại.</string>
<string name="invalid_keys_error">Keys mã hoá không hợp lệ</string> <string name="invalid_keys_error">Keys mã hoá không hợp lệ</string>
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<string name="install_keys_failure_description">Chọn file sai hoặc bị hỏng. Hãy xuất chìa khóa khác</string> <string name="install_keys_failure_description">Tệp đã chọn sai hoặc hỏng. Vui lòng trích xuất lại keys của bạn.</string>
<string name="install_gpu_driver">Cài đặt driver GPU</string> <string name="install_gpu_driver">Cài đặt driver GPU</string>
<string name="install_gpu_driver_description">Cài đặt driver thay thế để có thể có hiệu suất tốt và chính xác hơn</string> <string name="install_gpu_driver_description">Cài đặt driver thay thế để có thể có hiệu suất tốt và chính xác hơn</string>
<string name="advanced_settings">Cài đặt nâng cao</string> <string name="advanced_settings">Cài đặt nâng cao</string>
<string name="settings_description">Tinh chỉnh cài đặt giả lập</string> <string name="settings_description">Cấu hình cài đặt giả lập</string>
<string name="search_recently_played">Đã chơi gần đây</string> <string name="search_recently_played">Đã chơi gần đây</string>
<string name="search_recently_added">Đã thêm gần đây</string> <string name="search_recently_added">Đã thêm gần đây</string>
<string name="search_retail">Bán lẻ</string> <string name="search_retail">Bán lẻ</string>
<string name="search_homebrew">Homebrew</string> <string name="search_homebrew">Homebrew</string>
<string name="open_user_folder">Mở thư mục yuzu</string> <string name="open_user_folder">Mở thư mục yuzu</string>
<string name="open_user_folder_description">Quản lý file nội bộ của yuzu</string> <string name="open_user_folder_description">Quản lý tệp nội bộ của yuzu</string>
<string name="theme_and_color_description">Thay đổi giao diện ứng dụng</string> <string name="theme_and_color_description">Thay đổi giao diện ứng dụng</string>
<string name="no_file_manager">Không tìm thấy trình quản lý tệp</string> <string name="no_file_manager">Không tìm thấy trình quản lý tập tin</string>
<string name="notification_no_directory_link">Không thể mở thư mục yuzu</string> <string name="notification_no_directory_link">Không thể mở thư mục yuzu</string>
<string name="notification_no_directory_link_description">Vui lòng xác định thư mục người dùng với bảng điều khiển bên của trình quản lý tệp thủ công.</string> <string name="notification_no_directory_link_description">Vui lòng xác định thư mục người dùng với bảng điều khiển bên của trình quản lý tệp thủ công.</string>
<string name="manage_save_data">Quản lý dữ liệu save</string> <string name="manage_save_data">Quản lý dữ liệu save</string>
@ -81,7 +81,7 @@
<string name="import_export_saves_description">Nhập hoặc xuất tệp save</string> <string name="import_export_saves_description">Nhập hoặc xuất tệp save</string>
<string name="save_file_imported_success">Nhập thành công</string> <string name="save_file_imported_success">Nhập thành công</string>
<string name="save_file_invalid_zip_structure">Cấu trúc thư mục save không hợp lệ</string> <string name="save_file_invalid_zip_structure">Cấu trúc thư mục save không hợp lệ</string>
<string name="save_file_invalid_zip_structure_description">Tên thư mục con đầu tiên phải là title ID của game.</string> <string name="save_file_invalid_zip_structure_description">Tên thư mục con đầu tiên phải là ID title của game.</string>
<string name="import_saves">Nhập</string> <string name="import_saves">Nhập</string>
<string name="export_saves">Xuất</string> <string name="export_saves">Xuất</string>
<string name="install_firmware">Cài đặt firmware</string> <string name="install_firmware">Cài đặt firmware</string>
@ -89,14 +89,12 @@
<string name="firmware_installing">Đang cài đặt firmware</string> <string name="firmware_installing">Đang cài đặt firmware</string>
<string name="firmware_installed_success">Cài đặt firmware thành công</string> <string name="firmware_installed_success">Cài đặt firmware thành công</string>
<string name="firmware_installed_failure">Cài đặt firmware thất bại</string> <string name="firmware_installed_failure">Cài đặt firmware thất bại</string>
<string name="share_log">Chia sẽ log gỡ lỗi</string> <string name="share_log">Chia sẻ nhật ký gỡ lỗi</string>
<string name="share_log_description">Chia sẻ tệp log của yuzu để gỡ lỗi vấn đề</string> <string name="share_log_description">Chia sẻ tập tin nhật ký của yuzu để gỡ lỗi vấn đề</string>
<string name="share_log_missing">Không tìm thấy tệp log</string> <string name="share_log_missing">Không tìm thấy tập tin nhật ký</string>
<string name="install_game_content">Cài đặt nội dung game</string> <string name="install_game_content">Cài đặt nội dung game</string>
<string name="install_game_content_description">Cài đặt cập nhật game hoặc DLC</string> <string name="install_game_content_description">Cài đặt cập nhật game hoặc DLC</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia không có thật</string> <string name="gaia_is_not_real">Gaia không có thật</string>
<string name="copied_to_clipboard">Đã sao chép vào bộ nhớ tạm</string> <string name="copied_to_clipboard">Đã sao chép vào bộ nhớ tạm</string>
@ -114,15 +112,15 @@
<string name="early_access">Early Access</string> <string name="early_access">Early Access</string>
<string name="get_early_access">Tải Early Access</string> <string name="get_early_access">Tải Early Access</string>
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string> <string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
<string name="get_early_access_description">Các tính năng tiên tiến, truy cập sớm vào các cập nhật và nhiều hơn nữa</string> <string name="get_early_access_description">Các tính năng tiên tiến, truy cập sớm các bản cập nhật và nhiều hơn nữa</string>
<string name="early_access_benefits">Lợi ích của Early Access</string> <string name="early_access_benefits">Lợi ích của Early Access</string>
<string name="cutting_edge_features">Tính năng tiên tiến</string> <string name="cutting_edge_features">Tính năng tiên tiến</string>
<string name="early_access_updates">Truy cập sớm vào cập nhật</string> <string name="early_access_updates">Truy cập sớm các bản cập nhật</string>
<string name="no_manual_installation">Không có cài đặt thủ công</string> <string name="no_manual_installation">Không có cài đặt thủ công</string>
<string name="prioritized_support">Ưu tiên hỗ trợ</string> <string name="prioritized_support">Ưu tiên hỗ trợ</string>
<string name="helping_game_preservation">Hỗ trợ bảo tồn trò chơi</string> <string name="helping_game_preservation">Hỗ trợ bảo tồn game</string>
<string name="our_eternal_gratitude">Sự biết ơn vô hạn của chúng tôi</string> <string name="our_eternal_gratitude">Sự biết ơn vô hạn của chúng tôi</string>
<string name="are_you_interested">Bạn có thấy thú vị không?</string> <string name="are_you_interested">Bạn có thấy hứng thú không?</string>
<!-- General settings strings --> <!-- General settings strings -->
<string name="frame_limit_enable">Giới hạn tốc độ</string> <string name="frame_limit_enable">Giới hạn tốc độ</string>
@ -130,8 +128,9 @@
<string name="frame_limit_slider">Giới hạn phần trăm tốc độ</string> <string name="frame_limit_slider">Giới hạn phần trăm tốc độ</string>
<string name="frame_limit_slider_description">Xác định phần trăm để giới hạn tốc độ giả lập. 100% là tốc độ bình thường. Giá trị cao hơn hoặc thấp hơn sẽ tăng hoặc giảm giới hạn tốc độ.</string> <string name="frame_limit_slider_description">Xác định phần trăm để giới hạn tốc độ giả lập. 100% là tốc độ bình thường. Giá trị cao hơn hoặc thấp hơn sẽ tăng hoặc giảm giới hạn tốc độ.</string>
<string name="cpu_accuracy">Độ chính xác CPU</string> <string name="cpu_accuracy">Độ chính xác CPU</string>
<string name="use_docked_mode">Chế độ Docked</string> <!-- System settings strings -->
<string name="use_docked_mode_description">Tăng độ phân giải, giảm hiệu suất. Chế độ Handheld được sử dụng khi tắt, giảm độ phân giải và tăng hiệu suất.</string> <string name="use_docked_mode">Chế độ docked</string>
<string name="use_docked_mode_description">Tăng độ phân giải, giảm hiệu suất. Chế độ handheld được sử dụng khi tắt, giảm độ phân giải và tăng hiệu suất.</string>
<string name="emulated_region">Khu vực giả lập</string> <string name="emulated_region">Khu vực giả lập</string>
<string name="emulated_language">Ngôn ngữ giả lập</string> <string name="emulated_language">Ngôn ngữ giả lập</string>
<string name="select_rtc_date">Chọn ngày RTC</string> <string name="select_rtc_date">Chọn ngày RTC</string>
@ -147,12 +146,12 @@
<string name="renderer_aspect_ratio">Tỉ lệ khung hình</string> <string name="renderer_aspect_ratio">Tỉ lệ khung hình</string>
<string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string> <string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string>
<string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string> <string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string>
<string name="renderer_force_max_clock">Buộc chạy ở xung nhịp tối đa (chỉ Adreno)</string> <string name="renderer_force_max_clock">Buộc chạy ở xung nhịp tối đa (chỉ cho Adreno)</string>
<string name="renderer_force_max_clock_description">Buộc GPU hoạt động ở xung nhịp tối đa có thể (ràng buộc nhiệt độ vẫn sẽ được áp dụng).</string> <string name="renderer_force_max_clock_description">Buộc GPU hoạt động ở xung nhịp tối đa có thể (ràng buộc nhiệt độ vẫn sẽ được áp dụng).</string>
<string name="renderer_asynchronous_shaders">Dùng các shader bất đồng bộ</string> <string name="renderer_asynchronous_shaders">Dùng các shader bất đồng bộ</string>
<string name="renderer_asynchronous_shaders_description">Biên dịch các shader bất đồng bộ, giảm tình trạng giật lag nhưng có thể gây ra các lỗi.</string> <string name="renderer_asynchronous_shaders_description">Biên dịch các shader bất đồng bộ, giảm tình trạng giật lag nhưng có thể gây ra các lỗi.</string>
<string name="renderer_reactive_flushing">Bật xả tương ứng</string> <string name="renderer_reactive_flushing">Dùng xả tương ứng</string>
<string name="renderer_reactive_flushing_description">Cải thiện độ chính xác hiển thị trong một số trò chơi nhưng đồng thời giảm hiệu suất chơi.</string> <string name="renderer_reactive_flushing_description">Cải thiện độ chính xác kết xuất trong một số game nhưng đồng thời giảm hiệu suất.</string>
<string name="use_disk_shader_cache">Lưu bộ nhớ đệm shader trên ổ cứng</string> <string name="use_disk_shader_cache">Lưu bộ nhớ đệm shader trên ổ cứng</string>
<string name="use_disk_shader_cache_description">Giảm tình trạng giật lag bằng cách lưu trữ và tải các shader được tạo ra nội bộ.</string> <string name="use_disk_shader_cache_description">Giảm tình trạng giật lag bằng cách lưu trữ và tải các shader được tạo ra nội bộ.</string>
<!-- Debug settings strings --> <!-- Debug settings strings -->
@ -163,49 +162,6 @@
<string name="audio_volume">Âm lượng</string> <string name="audio_volume">Âm lượng</string>
<string name="audio_volume_description">Xác định âm lượng của đầu ra âm thanh.</string> <string name="audio_volume_description">Xác định âm lượng của đầu ra âm thanh.</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus">Cộng</string>
<string name="button_minus">Trừ</string>
<string name="button_home">Home</string>
<string name="button_capture">Chụp</string>
<string name="dpad">D-Pad</string>
<string name="up">Lên</string>
<string name="down">Xuống</string>
<string name="left">Trái</string>
<string name="right">Phải</string>
<string name="left_stick">Cần xoay trái</string>
<string name="right_stick">Cần xoay phải</string>
<string name="c_stick">C-Stick</string>
<string name="pressed">Nhấn</string>
<string name="range">Phạm vi</string>
<string name="deadzone">Vùng chết</string>
<string name="modifier">Ngưỡng điều chỉnh</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_z">Z</string>
<string name="invalid">Không hợp lệ</string>
<string name="unknown">Không xác định</string>
<string name="pro_controller">Tay cầm Pro Controller</string>
<string name="handheld">Cầm tay</string>
<string name="dual_joycons">Joycon đôi</string>
<string name="left_joycon">Joycon Trái</string>
<string name="right_joycon">Joycon Phải</string>
<string name="gamecube_controller">Tay cầm GameCube</string>
<string name="invert_axis">Đảo ngược trục</string>
<string name="invert_button">Đảo ngược nút</string>
<string name="toggle_button">Đổi nút</string>
<string name="turbo_button">Nút Turbo</string>
<string name="set_threshold">Thiết lập ngưỡng</string>
<string name="toggle_axis">Chuyển đổi trục</string>
<string name="connected">Đã kết nối</string>
<string name="vibration">Độ rung</string>
<string name="profile">Hồ sơ</string>
<string name="use_global_input_configuration">Dùng cấu hình đầu vào chung</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">Mặc định</string> <string name="slider_default">Mặc định</string>
<string name="ini_saved">Cài đặt đã lưu</string> <string name="ini_saved">Cài đặt đã lưu</string>
@ -227,10 +183,8 @@
<string name="install">Cài đặt</string> <string name="install">Cài đặt</string>
<string name="delete">Xoá</string> <string name="delete">Xoá</string>
<string name="start">Bắt đầu</string> <string name="start">Bắt đầu</string>
<string name="clear">Bỏ trống</string> <string name="clear">Xóa</string>
<string name="custom">Tùy chỉnh</string> <string name="custom">Tùy chỉnh</string>
<string name="save">Lưu</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">Chọn driver GPU</string> <string name="select_gpu_driver">Chọn driver GPU</string>
<string name="select_gpu_driver_title">Bạn có muốn thay thế driver GPU hiện tại không?</string> <string name="select_gpu_driver_title">Bạn có muốn thay thế driver GPU hiện tại không?</string>
@ -242,32 +196,29 @@
<!-- Preferences Screen --> <!-- Preferences Screen -->
<string name="preferences_settings">Cài đặt</string> <string name="preferences_settings">Cài đặt</string>
<string name="preferences_general">Tổng Quan</string> <string name="preferences_general">Chung</string>
<string name="preferences_system">Hệ thống</string> <string name="preferences_system">Hệ thống</string>
<string name="preferences_graphics">Đồ Họa</string> <string name="preferences_graphics">Đồ hoạ</string>
<string name="preferences_audio">Âm Thanh</string> <string name="preferences_audio">Âm thanh</string>
<string name="preferences_controls">Phím</string>
<string name="preferences_theme">Chủ đề và màu sắc</string> <string name="preferences_theme">Chủ đề và màu sắc</string>
<string name="preferences_debug"> lỗi</string> <string name="preferences_debug">Gỡ lỗi</string>
<!-- Game properties --> <!-- Game properties -->
<string name="info">Thông Tin</string> <string name="info">Thông tin</string>
<string name="path">Đường dẫn</string> <string name="path">Đường dẫn</string>
<string name="developer">Nhà Phát Hành</string> <string name="developer">Nhà phát triển</string>
<string name="version">Phiên Bản</string> <string name="version">Phiên bản</string>
<string name="add_ons">Tiện ích ngoài</string> <string name="add_ons">Add-ons</string>
<string name="verify_success">Kiểm tra tính toàn vẹn thành công!</string>
<string name="verify_failure">Kiểm tra tính toàn vẹn thất bại!</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">ROM của bạn đã bị mã hoá</string> <string name="loader_error_encrypted">ROM của bạn đã bị mã hoá</string>
<string name="loader_error_encrypted_keys_description"><![CDATA[Vui lòng đảm bảo file <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> đã được cài đặt để game có thể được giải mã.]]></string> <string name="loader_error_encrypted_keys_description"><![CDATA[Vui lòng đảm bảo tệp <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> đã được cài đặt để các game có thể được giải mã.]]></string>
<string name="loader_error_video_core">Đã xảy ra lỗi khi khởi tạo lõi video</string> <string name="loader_error_video_core">Đã xảy ra lỗi khi khởi tạo lõi video</string>
<string name="loader_error_video_core_description">Việc này thường do driver GPU không tương thích. Cài đặt một driver GPU tùy chỉnh có thể giải quyết vấn đề này.</string> <string name="loader_error_video_core_description">Việc này thường do driver GPU không tương thích. Cài đặt một driver GPU tùy chỉnh có thể giải quyết vấn đề này.</string>
<string name="loader_error_invalid_format">Không thể tải ROM</string> <string name="loader_error_invalid_format">Không thể nạp ROM</string>
<string name="loader_error_file_not_found">Tệp ROM không tồn tại</string> <string name="loader_error_file_not_found">Tệp ROM không tồn tại</string>
<!-- Emulation Menu --> <!-- Emulation Menu -->
<string name="emulation_exit">Thoát giả lập</string> <string name="emulation_exit">Thoát giả lập</string>
<string name="emulation_done">Hoàn tất</string> <string name="emulation_done">Hoàn thành</string>
<string name="emulation_fps_counter">Bộ đếm FPS</string> <string name="emulation_fps_counter">Bộ đếm FPS</string>
<string name="emulation_toggle_controls">Chuyển đổi điều khiển</string> <string name="emulation_toggle_controls">Chuyển đổi điều khiển</string>
<string name="emulation_rel_stick_center">Trung tâm nút cần xoay tương đối</string> <string name="emulation_rel_stick_center">Trung tâm nút cần xoay tương đối</string>
@ -284,6 +235,7 @@
<string name="emulation_unpause">Tiếp tục giả lập</string> <string name="emulation_unpause">Tiếp tục giả lập</string>
<string name="emulation_input_overlay">Tuỳ chọn lớp phủ</string> <string name="emulation_input_overlay">Tuỳ chọn lớp phủ</string>
<string name="touchscreen">Màn hình cảm ứng</string> <string name="touchscreen">Màn hình cảm ứng</string>
<string name="load_settings">Đang tải cài đặt...</string> <string name="load_settings">Đang tải cài đặt...</string>
<!-- Software keyboard --> <!-- Software keyboard -->
@ -292,18 +244,18 @@
<!-- Errors and warnings --> <!-- Errors and warnings -->
<string name="abort_button">Hủy bỏ</string> <string name="abort_button">Hủy bỏ</string>
<string name="continue_button">Tiếp tục</string> <string name="continue_button">Tiếp tục</string>
<string name="system_archive_not_found">Không tìm thấy tệp tin hệ thống</string> <string name="system_archive_not_found">Không tìm thấy bản lưu trữ của hệ thống</string>
<string name="system_archive_not_found_message">%s bị thiếu. Vui lòng trích xuất các tập tin hệ thống của bạn.\nNếu chạy tiếp giả lập có thể gặp sự cố và lỗi.</string> <string name="system_archive_not_found_message">%s bị thiếu. Vui lòng trích xuất các bản lưu trữ hệ thống của bạn.\nNếu chạy tiếp giả lập có thể bị crash và lỗi.</string>
<string name="system_archive_general">Một tập tin hệ thống</string> <string name="system_archive_general">Một bản lưu trữ của hệ thống</string>
<string name="save_load_error">Lỗi Lưu/Tải</string> <string name="save_load_error">Lỗi Lưu/Tải</string>
<string name="fatal_error">Lỗi nghiêm trọng</string> <string name="fatal_error">Lỗi nghiêm trọng</string>
<string name="fatal_error_message">Đã xảy ra lỗi nghiêm trọng. Kiểm tra nhật ký để biết chi tiết.\nViệc tiếp tục giả lập có thể dẫn đến sự cố và lỗi.</string> <string name="fatal_error_message">Đã xảy ra lỗi nghiêm trọng. Kiểm tra nhật ký để biết thêm chi tiết.\nNếu chạy tiếp giả lập có thể bị crash và lỗi.</string>
<string name="performance_warning">Tắt cài đặt này sẽ làm giảm đáng kể hiệu suất giả lập! Để có trải nghiệm tốt nhất, bạn nên bật cài này.</string> <string name="performance_warning">Tắt cài đặt này sẽ làm giảm đáng kể hiệu suất giả lập! Để có trải nghiệm tốt nhất, bạn nên bật cài đặt này.</string>
<!-- Region Names --> <!-- Region Names -->
<string name="region_japan">Nhật Bản</string> <string name="region_japan">Nhật Bản</string>
<string name="region_usa">Hoa Kỳ</string> <string name="region_usa">Hoa Kỳ</string>
<string name="region_europe">Châu Âu</string> <string name="region_europe">Châu Âu</string>
<string name="region_australia">Châu Úc</string> <string name="region_australia">Úc</string>
<string name="region_china">Trung Quốc</string> <string name="region_china">Trung Quốc</string>
<string name="region_korea">Hàn Quốc</string> <string name="region_korea">Hàn Quốc</string>
<string name="region_taiwan">Đài Loan</string> <string name="region_taiwan">Đài Loan</string>
@ -312,12 +264,12 @@
<string name="memory_gigabyte">GB</string> <string name="memory_gigabyte">GB</string>
<!-- Renderer APIs --> <!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string> <string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Trống</string> <string name="renderer_none">Không có</string>
<!-- Renderer Accuracy --> <!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">Trung bình</string> <string name="renderer_accuracy_normal">Bình thường</string>
<string name="renderer_accuracy_high">Khỏe</string> <string name="renderer_accuracy_high">Cao</string>
<string name="renderer_accuracy_extreme">Tối đa (Chậm)</string> <string name="renderer_accuracy_extreme">Cực đại (Chậm)</string>
<!-- Resolutions --> <!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string> <string name="resolution_half">0.5X (360p/540p)</string>
@ -328,21 +280,21 @@
<string name="resolution_four">4X (2880p/4320p) (Chậm)</string> <string name="resolution_four">4X (2880p/4320p) (Chậm)</string>
<!-- Renderer VSync --> <!-- Renderer VSync -->
<string name="renderer_vsync_immediate">Ngay lập tức (Tắt)</string> <string name="renderer_vsync_immediate">Immediate (Tắt)</string>
<string name="renderer_vsync_mailbox">Mailbox</string> <string name="renderer_vsync_mailbox">Mailbox</string>
<string name="renderer_vsync_fifo">FIFO (On)</string> <string name="renderer_vsync_fifo">FIFO (Bật)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string> <string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
<!-- Scaling Filters --> <!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string> <string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
<string name="scaling_filter_bilinear">Bilinear</string> <string name="scaling_filter_bilinear">Bilinear</string>
<string name="scaling_filter_bicubic">Bicubic</string> <string name="scaling_filter_bicubic">Bicubic</string>
<string name="scaling_filter_gaussian">ScaleForce</string> <string name="scaling_filter_gaussian">Gaussian</string>
<string name="scaling_filter_scale_force">ScaleForce</string> <string name="scaling_filter_scale_force">ScaleForce</string>
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string> <string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
<!-- Anti-Aliasing --> <!-- Anti-Aliasing -->
<string name="anti_aliasing_none">Trống</string> <string name="anti_aliasing_none">Không có</string>
<string name="anti_aliasing_fxaa">FXAA</string> <string name="anti_aliasing_fxaa">FXAA</string>
<string name="anti_aliasing_smaa">SMAA</string> <string name="anti_aliasing_smaa">SMAA</string>
@ -352,24 +304,24 @@
<string name="ratio_default">Mặc định (16:9)</string> <string name="ratio_default">Mặc định (16:9)</string>
<string name="ratio_force_four_three">Dùng 4:3</string> <string name="ratio_force_four_three">Dùng 4:3</string>
<string name="ratio_force_twenty_one_nine">Dùng 21:9</string> <string name="ratio_force_twenty_one_nine">Dùng 21:9</string>
<string name="ratio_force_sixteen_ten">Dung 16:10</string> <string name="ratio_force_sixteen_ten">Dùng 16:10</string>
<string name="ratio_stretch">Mở rộng đến cửa sổ</string> <string name="ratio_stretch">Mở rộng đến cửa sổ</string>
<!-- CPU Accuracy --> <!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Tuyệt đối</string> <string name="cpu_accuracy_accurate">Chính xác</string>
<string name="cpu_accuracy_unsafe">Tương đối</string> <string name="cpu_accuracy_unsafe">Không an toàn</string>
<string name="cpu_accuracy_paranoid">Paranoid (Chậm)</string> <string name="cpu_accuracy_paranoid">Paranoid (Chậm)</string>
<!-- Gamepad Buttons --> <!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D-pad</string> <string name="gamepad_d_pad">D-pad</string>
<string name="gamepad_left_stick">Cần xoay trái</string> <string name="gamepad_left_stick">Cần trái</string>
<string name="gamepad_right_stick">Cần xoay phải</string> <string name="gamepad_right_stick">Cần phải</string>
<string name="gamepad_home">Home</string> <string name="gamepad_home">Home</string>
<string name="gamepad_screenshot">Chụp màn hình</string> <string name="gamepad_screenshot">Ảnh chụp màn hình</string>
<!-- Disk shader cache --> <!-- Disk shader cache -->
<string name="preparing_shaders">Chuẩn bị shaders</string> <string name="preparing_shaders">Đang chuẩn bị shader</string>
<string name="building_shaders">Dựng shaders</string> <string name="building_shaders">Đang đựng shader</string>
<!-- Theme options --> <!-- Theme options -->
<string name="change_app_theme">Thay đổi chủ đề ứng dụng</string> <string name="change_app_theme">Thay đổi chủ đề ứng dụng</string>
@ -377,7 +329,7 @@
<string name="theme_material_you">Material You</string> <string name="theme_material_you">Material You</string>
<!-- Theme Modes --> <!-- Theme Modes -->
<string name="change_theme_mode">Thay đổi chế độ giao diện</string> <string name="change_theme_mode">Thay đổi chủ đề</string>
<string name="theme_mode_follow_system">Theo hệ thống</string> <string name="theme_mode_follow_system">Theo hệ thống</string>
<string name="theme_mode_light">Sáng</string> <string name="theme_mode_light">Sáng</string>
<string name="theme_mode_dark">Tối</string> <string name="theme_mode_dark">Tối</string>
@ -389,7 +341,7 @@
<string name="multiplier_sixteen">16x</string> <string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme --> <!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Nền tối</string> <string name="use_black_backgrounds">Nền đen</string>
<string name="use_black_backgrounds_description">Khi sử dụng chủ đề tối, hãy áp dụng nền đen.</string> <string name="use_black_backgrounds_description">Khi sử dụng chủ đề tối, hãy áp dụng nền đen.</string>
<string name="mute">Tắt tiếng</string> <string name="mute">Tắt tiếng</string>

View File

@ -32,7 +32,7 @@
<string name="search_and_filter_games">搜索游戏</string> <string name="search_and_filter_games">搜索游戏</string>
<string name="select_games_folder">选择游戏文件夹</string> <string name="select_games_folder">选择游戏文件夹</string>
<string name="manage_game_folders">管理游戏文件夹</string> <string name="manage_game_folders">管理游戏文件夹</string>
<string name="select_games_folder_description">允许 yuzu 更新游戏列表</string> <string name="select_games_folder_description">允许 yuzu 填充游戏列表</string>
<string name="add_games_warning">跳过选择游戏文件夹?</string> <string name="add_games_warning">跳过选择游戏文件夹?</string>
<string name="add_games_warning_description">如果未选择游戏文件夹,游戏将不会显示在游戏列表中。</string> <string name="add_games_warning_description">如果未选择游戏文件夹,游戏将不会显示在游戏列表中。</string>
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string> <string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
@ -81,7 +81,7 @@
<string name="theme_and_color_description">更改外观</string> <string name="theme_and_color_description">更改外观</string>
<string name="no_file_manager">找不到可用的文件管理器</string> <string name="no_file_manager">找不到可用的文件管理器</string>
<string name="notification_no_directory_link">无法打开 yuzu 文件夹</string> <string name="notification_no_directory_link">无法打开 yuzu 文件夹</string>
<string name="notification_no_directory_link_description">请使用文件管理器侧边栏中的内部存储手动定位用户文件夹。</string> <string name="notification_no_directory_link_description">请使用文件管理器的侧部面板手动定位用户文件夹。</string>
<string name="manage_save_data">管理存档数据</string> <string name="manage_save_data">管理存档数据</string>
<string name="manage_save_data_description">已找到存档数据,请选择下方的选项。</string> <string name="manage_save_data_description">已找到存档数据,请选择下方的选项。</string>
<string name="import_save_warning">导入保存数据</string> <string name="import_save_warning">导入保存数据</string>
@ -110,21 +110,21 @@
<string name="install_game_content_failure_description">请确保附加内容的有效性,并且 prod.keys 密钥文件已安装。</string> <string name="install_game_content_failure_description">请确保附加内容的有效性,并且 prod.keys 密钥文件已安装。</string>
<string name="install_game_content_failure_base">为避免产生冲突,此功能不能用于安装游戏本体。</string> <string name="install_game_content_failure_base">为避免产生冲突,此功能不能用于安装游戏本体。</string>
<string name="install_game_content_failure_file_extension">只有 NSP 或 XCI 格式的附加内容可以安装。请确保您的游戏附加内容是有效的。</string> <string name="install_game_content_failure_file_extension">只有 NSP 或 XCI 格式的附加内容可以安装。请确保您的游戏附加内容是有效的。</string>
<string name="install_game_content_failed_count">%1$d 个包安装出错</string> <string name="install_game_content_failed_count">%1$d 安装出错</string>
<string name="install_game_content_success">游戏附加内容已成功安装</string> <string name="install_game_content_success">游戏附加内容已成功安装</string>
<string name="install_game_content_success_install">%1$d 个包安装成功</string> <string name="install_game_content_success_install">%1$d 安装成功</string>
<string name="install_game_content_success_overwrite">%1$d 个包覆盖安装成功</string> <string name="install_game_content_success_overwrite">%1$d 覆盖安装成功</string>
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">不支持自定义驱动</string> <string name="custom_driver_not_supported">不支持自定义驱动</string>
<string name="custom_driver_not_supported_description">此设备不支持自定义驱动。\n请之后再访问此项查看是否已为此设备添加支持。</string> <string name="custom_driver_not_supported_description">此设备不支持自定义驱动。\n请之后再访问此项查看是否已为此设备添加支持。</string>
<string name="manage_yuzu_data">管理 yuzu 数据</string> <string name="manage_yuzu_data">管理 yuzu 数据</string>
<string name="manage_yuzu_data_description">导入/导出固件、密钥、用户数据及其他</string> <string name="manage_yuzu_data_description">导入/导出固件、密钥、用户数据及其他</string>
<string name="share_save_file">分享存档文件</string> <string name="share_save_file">分享存档文件</string>
<string name="export_save_failed">导出存档文件失败</string> <string name="export_save_failed">导出存档文件失败</string>
<string name="game_folders">游戏文件夹</string> <string name="game_folders">游戏文件夹</string>
<string name="deep_scan">深度扫描</string> <string name="deep_scan">深度扫描</string>
<string name="add_game_folder">添加游戏文件夹</string> <string name="add_game_folder">添加游戏文件夹</string>
<string name="folder_already_added">这个文件夹已被添加!</string> <string name="folder_already_added">这个文件夹先前已被添加!</string>
<string name="game_folder_properties">游戏文件夹属性</string> <string name="game_folder_properties">游戏文件夹属性</string>
<plurals name="saves_import_failed"> <plurals name="saves_import_failed">
<item quantity="other">%d 个存档导入失败</item> <item quantity="other">%d 个存档导入失败</item>
@ -133,11 +133,6 @@
<item quantity="other">成功导入 %d 个存档</item> <item quantity="other">成功导入 %d 个存档</item>
</plurals> </plurals>
<string name="no_save_data_found">未找到存档数据</string> <string name="no_save_data_found">未找到存档数据</string>
<string name="verify_installed_content">验证已安装内容的完整性</string>
<string name="verify_installed_content_description">检查所有安装的内容是否有损坏</string>
<string name="keys_missing">密钥缺失</string>
<string name="keys_missing_description">无法解密固件和商业游戏</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">小程序启动器</string> <string name="applets">小程序启动器</string>
@ -153,9 +148,9 @@
<string name="cabinet_applet_description">编辑、删除存储在 amiibo 上的数据</string> <string name="cabinet_applet_description">编辑、删除存储在 amiibo 上的数据</string>
<string name="cabinet_launcher">Cabinet 启动器</string> <string name="cabinet_launcher">Cabinet 启动器</string>
<string name="cabinet_nickname_and_owner">昵称和所有者设置</string> <string name="cabinet_nickname_and_owner">昵称和所有者设置</string>
<string name="cabinet_game_data_eraser">清除游戏数据</string> <string name="cabinet_game_data_eraser">游戏数据擦除器</string>
<string name="cabinet_restorer">恢复</string> <string name="cabinet_restorer">恢复</string>
<string name="cabinet_formatter">格式化</string> <string name="cabinet_formatter">格式化程序</string>
<!-- About screen strings --> <!-- About screen strings -->
<string name="gaia_is_not_real">Gaia 不真实</string> <string name="gaia_is_not_real">Gaia 不真实</string>
@ -204,7 +199,6 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">设备名称</string>
<string name="use_docked_mode">主机模式</string> <string name="use_docked_mode">主机模式</string>
<string name="use_docked_mode_description">提高分辨率,但降低性能。禁用此项时使用掌机模式,降低分辨率并提高性能。</string> <string name="use_docked_mode_description">提高分辨率,但降低性能。禁用此项时使用掌机模式,降低分辨率并提高性能。</string>
<string name="emulated_region">模拟区域</string> <string name="emulated_region">模拟区域</string>
@ -222,8 +216,6 @@
<string name="renderer_screen_layout">屏幕方向</string> <string name="renderer_screen_layout">屏幕方向</string>
<string name="renderer_aspect_ratio">屏幕纵横比</string> <string name="renderer_aspect_ratio">屏幕纵横比</string>
<string name="renderer_scaling_filter">窗口滤镜</string> <string name="renderer_scaling_filter">窗口滤镜</string>
<string name="fsr_sharpness">FSR 锐化度</string>
<string name="fsr_sharpness_description">指定使用 FSR 时图像的锐化程度</string>
<string name="renderer_anti_aliasing">抗锯齿方式</string> <string name="renderer_anti_aliasing">抗锯齿方式</string>
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string> <string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string> <string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string>
@ -244,99 +236,13 @@
<string name="renderer_api">API</string> <string name="renderer_api">API</string>
<string name="renderer_debug">图形调试</string> <string name="renderer_debug">图形调试</string>
<string name="renderer_debug_description">将图形 API 设置为较慢的调试模式。</string> <string name="renderer_debug_description">将图形 API 设置为较慢的调试模式。</string>
<string name="fastmem">Fastmem 内存访问</string> <string name="fastmem">Fastmem</string>
<!-- Audio settings strings --> <!-- Audio settings strings -->
<string name="audio_output_engine">输出引擎</string> <string name="audio_output_engine">输出引擎</string>
<string name="audio_volume">音量</string> <string name="audio_volume">音量</string>
<string name="audio_volume_description">指定输出的音量。</string> <string name="audio_volume_description">指定输出的音量。</string>
<!-- Input strings -->
<string name="buttons">按键</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus"></string>
<string name="button_minus"></string>
<string name="button_home">Home</string>
<string name="button_capture">截图</string>
<string name="start_pause">开始/暂停</string>
<string name="dpad">十字方向键</string>
<string name="up"></string>
<string name="down"></string>
<string name="left"></string>
<string name="right"></string>
<string name="left_stick">左摇杆</string>
<string name="control_stick">控制摇杆</string>
<string name="right_stick">右摇杆</string>
<string name="c_stick">C 摇杆</string>
<string name="pressed">按下</string>
<string name="range">灵敏度</string>
<string name="deadzone">死区</string>
<string name="modifier">轻推</string>
<string name="modifier_range">摇杆灵敏度</string>
<string name="triggers">扳机键</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">左 SL</string>
<string name="button_sr_left">左 SR</string>
<string name="button_sl_right">右 SL</string>
<string name="button_sr_right">右 SR</string>
<string name="button_z">Z</string>
<string name="invalid">无效</string>
<string name="not_set">未设置</string>
<string name="unknown">未知</string>
<string name="qualified_hat">%1$s%2$s%3$s方向键 %4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$s轴 %4$s</string>
<string name="qualified_button">%1$s%2$s%3$s按键 %4$s</string>
<string name="qualified_axis">轴 %1$s%2$s</string>
<string name="unused">未使用</string>
<string name="input_prompt">移动摇杆或按下按键来输入</string>
<string name="unsupported_input">不支持的输入类型</string>
<string name="input_mapping_filter">输入映射过滤器</string>
<string name="input_mapping_filter_description">选择一个设备过滤输入映射</string>
<string name="auto_map">控制器自动映射</string>
<string name="auto_map_description">选择一个设备以尝试自动映射</string>
<string name="attempted_auto_map">尝试为 %1$s 自动映射</string>
<string name="controller_type">控制器类型</string>
<string name="pro_controller">Pro Controller</string>
<string name="handheld">掌机模式</string>
<string name="dual_joycons">双 Joycons 手柄</string>
<string name="left_joycon">左 Joycon 手柄</string>
<string name="right_joycon">右 Joycon 手柄</string>
<string name="gamecube_controller">GameCube 控制器</string>
<string name="invert_axis">轴方向倒置</string>
<string name="invert_button">反转按键</string>
<string name="toggle_button">切换按键</string>
<string name="turbo_button">连发键</string>
<string name="set_threshold">阈值设定</string>
<string name="toggle_axis">切换轴</string>
<string name="connected">已连接</string>
<string name="use_system_vibrator">使用系统震动器</string>
<string name="input_overlay">虚拟按键输入</string>
<string name="vibration">震动</string>
<string name="vibration_strength">震动强度</string>
<string name="profile">用户配置</string>
<string name="create_new_profile">新建配置文件</string>
<string name="enter_profile_name">输入配置文件名称</string>
<string name="profile_name_already_exists">该名称已被其他配置文件使用</string>
<string name="invalid_profile_name">无效的配置文件名称</string>
<string name="use_global_input_configuration">使用全局输入设置</string>
<string name="player_num_profile">玩家 %d 配置文件</string>
<string name="delete_input_profile">删除输入配置文件</string>
<string name="delete_input_profile_description">您确定要删除这个配置文件?此操作不可撤销。</string>
<string name="stick_map_description">向左移动摇杆,然后将其向上移动或按下一个按钮</string>
<string name="button_map_description">按下一个按钮或移动扳机键/摇杆</string>
<string name="map_dpad_direction">映射到十字方向键 %1$s</string>
<string name="map_control">映射到 %1$s</string>
<string name="failed_to_load_profile">加载配置文件失败</string>
<string name="failed_to_save_profile">保存配置文件失败</string>
<string name="reset_mapping">重置映射</string>
<string name="reset_mapping_description">您确定要将此控制器的所有映射重置为默认值?此操作不可撤销。</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">系统默认</string> <string name="slider_default">系统默认</string>
<string name="ini_saved">已保存设置</string> <string name="ini_saved">已保存设置</string>
@ -345,12 +251,12 @@
<string name="unimplemented_menu">未生效菜单</string> <string name="unimplemented_menu">未生效菜单</string>
<string name="loading">加载中…</string> <string name="loading">加载中…</string>
<string name="shutting_down">正在关闭…</string> <string name="shutting_down">正在关闭…</string>
<string name="reset_setting_confirmation">您要将此设定重为默认值吗?</string> <string name="reset_setting_confirmation">您要将此设定重为默认值吗?</string>
<string name="reset_to_default">恢复默认</string> <string name="reset_to_default">恢复默认</string>
<string name="reset_to_default_description">重置所有高级选项</string> <string name="reset_to_default_description">重置所有高级选项</string>
<string name="reset_all_settings">重置所有设置项?</string> <string name="reset_all_settings">重置所有设置项?</string>
<string name="reset_all_settings_description">所有高级选项都将被重,此动作无法还原。</string> <string name="reset_all_settings_description">所有高级选项都将被重,此动作无法还原。</string>
<string name="settings_reset">设置项</string> <string name="settings_reset">设置项</string>
<string name="close">关闭</string> <string name="close">关闭</string>
<string name="learn_more">了解更多</string> <string name="learn_more">了解更多</string>
<string name="auto">自动</string> <string name="auto">自动</string>
@ -369,19 +275,14 @@
<string name="clear">清除</string> <string name="clear">清除</string>
<string name="global">全局</string> <string name="global">全局</string>
<string name="custom">自定义</string> <string name="custom">自定义</string>
<string name="notice">通知</string> <string name="notice">提醒</string>
<string name="import_complete">导入完成</string> <string name="import_complete">导入完成</string>
<string name="more_options">更多选项</string> <string name="more_options">更多选项</string>
<string name="use_global_setting">使用全局设置</string> <string name="use_global_setting">使用全局设置</string>
<string name="operation_completed_successfully">操作已成功完成</string>
<string name="retry">重试</string>
<string name="confirm">确认</string>
<string name="load">加载</string>
<string name="save">保存</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">选择 GPU 驱动程序</string> <string name="select_gpu_driver">选择 GPU 驱动程序</string>
<string name="select_gpu_driver_title">想更换当前的 GPU 驱动程序吗?</string> <string name="select_gpu_driver_title">要取代您当前的 GPU 驱动程序吗?</string>
<string name="select_gpu_driver_install">安装</string> <string name="select_gpu_driver_install">安装</string>
<string name="select_gpu_driver_default">系统默认</string> <string name="select_gpu_driver_default">系统默认</string>
<string name="select_gpu_driver_use_default">使用默认 GPU 驱动程序</string> <string name="select_gpu_driver_use_default">使用默认 GPU 驱动程序</string>
@ -399,9 +300,6 @@
<string name="preferences_graphics_description">精度等级、分辨率及着色器缓存</string> <string name="preferences_graphics_description">精度等级、分辨率及着色器缓存</string>
<string name="preferences_audio">声音</string> <string name="preferences_audio">声音</string>
<string name="preferences_audio_description">输出引擎及音量</string> <string name="preferences_audio_description">输出引擎及音量</string>
<string name="preferences_controls">控制</string>
<string name="preferences_controls_description">使用控制器来映射输入</string>
<string name="preferences_player">玩家 %d</string>
<string name="preferences_theme">主题和色彩</string> <string name="preferences_theme">主题和色彩</string>
<string name="preferences_debug">调试</string> <string name="preferences_debug">调试</string>
<string name="preferences_debug_description">CPU/GPU 调试、图形 API 及 fastmem 内存访问</string> <string name="preferences_debug_description">CPU/GPU 调试、图形 API 及 fastmem 内存访问</string>
@ -421,7 +319,7 @@
<string name="add_ons_description">管理 mod、游戏更新及 DLC</string> <string name="add_ons_description">管理 mod、游戏更新及 DLC</string>
<string name="clear_shader_cache">清除着色器缓存</string> <string name="clear_shader_cache">清除着色器缓存</string>
<string name="clear_shader_cache_description">删除此游戏的所有着色器缓存</string> <string name="clear_shader_cache_description">删除此游戏的所有着色器缓存</string>
<string name="clear_shader_cache_warning_description">由于着色器缓存需要重新生成,您将遇到更多卡顿</string> <string name="clear_shader_cache_warning_description">由于着色器缓存的重新生成,您将遭遇更多卡顿</string>
<string name="cleared_shaders_successfully">着色器缓存清除成功</string> <string name="cleared_shaders_successfully">着色器缓存清除成功</string>
<string name="addons_game">附加项: %1$s</string> <string name="addons_game">附加项: %1$s</string>
<string name="save_data">保存数据</string> <string name="save_data">保存数据</string>
@ -445,14 +343,6 @@
<string name="content_install_notice_description">您选择安装的内容与此游戏不匹配。\n继续安装</string> <string name="content_install_notice_description">您选择安装的内容与此游戏不匹配。\n继续安装</string>
<string name="confirm_uninstall">卸载确认</string> <string name="confirm_uninstall">卸载确认</string>
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string> <string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
<string name="verify_integrity">完整性验证</string>
<string name="verifying">验证中...</string>
<string name="verify_success">完整性验证成功!</string>
<string name="verify_failure">完整性验证失败!</string>
<string name="verify_failure_description">文件可能已经损坏</string>
<string name="verify_no_result">无法执行完整性验证</string>
<string name="verify_no_result_description">未检查文件的完整性</string>
<string name="verification_failed_for">以下文件完整性验证失败:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">您的 ROM 已加密</string> <string name="loader_error_encrypted">您的 ROM 已加密</string>
@ -467,7 +357,6 @@
<string name="emulation_exit">退出模拟</string> <string name="emulation_exit">退出模拟</string>
<string name="emulation_done">完成</string> <string name="emulation_done">完成</string>
<string name="emulation_fps_counter">FPS 计数器</string> <string name="emulation_fps_counter">FPS 计数器</string>
<string name="emulation_thermal_indicator">温度指示器</string>
<string name="emulation_toggle_controls">按键切换</string> <string name="emulation_toggle_controls">按键切换</string>
<string name="emulation_rel_stick_center">相对摇杆中心</string> <string name="emulation_rel_stick_center">相对摇杆中心</string>
<string name="emulation_dpad_slide">十字方向键滑动</string> <string name="emulation_dpad_slide">十字方向键滑动</string>
@ -477,14 +366,12 @@
<string name="emulation_control_adjust">调整虚拟按键</string> <string name="emulation_control_adjust">调整虚拟按键</string>
<string name="emulation_control_scale">缩放</string> <string name="emulation_control_scale">缩放</string>
<string name="emulation_control_opacity">不透明度</string> <string name="emulation_control_opacity">不透明度</string>
<string name="emulation_touch_overlay_reset">虚拟按键</string> <string name="emulation_touch_overlay_reset">虚拟按键</string>
<string name="emulation_touch_overlay_edit">编辑虚拟按键</string> <string name="emulation_touch_overlay_edit">编辑虚拟按键</string>
<string name="emulation_pause">暂停模拟</string> <string name="emulation_pause">暂停模拟</string>
<string name="emulation_unpause">继续模拟</string> <string name="emulation_unpause">继续模拟</string>
<string name="emulation_input_overlay">虚拟按键选项</string> <string name="emulation_input_overlay">虚拟按键选项</string>
<string name="touchscreen">触摸屏</string> <string name="touchscreen">触摸屏</string>
<string name="lock_drawer">锁定侧边菜单</string>
<string name="unlock_drawer">解锁侧边菜单</string>
<string name="load_settings">正在载入设定…</string> <string name="load_settings">正在载入设定…</string>
@ -553,12 +440,12 @@
<string name="scaling_filter_bicubic">双三线过滤</string> <string name="scaling_filter_bicubic">双三线过滤</string>
<string name="scaling_filter_gaussian">高斯模糊</string> <string name="scaling_filter_gaussian">高斯模糊</string>
<string name="scaling_filter_scale_force">强制缩放</string> <string name="scaling_filter_scale_force">强制缩放</string>
<string name="scaling_filter_fsr">AMD FidelityFX™ 超级分辨率锐画技术 (FSR)</string> <string name="scaling_filter_fsr">AMD FidelityFX™ 超级分辨率锐画技术</string>
<!-- Anti-Aliasing --> <!-- Anti-Aliasing -->
<string name="anti_aliasing_none"></string> <string name="anti_aliasing_none"></string>
<string name="anti_aliasing_fxaa">快速近似抗锯齿 (FXAA)</string> <string name="anti_aliasing_fxaa">快速近似抗锯齿</string>
<string name="anti_aliasing_smaa">子像素形态学抗锯齿 (SMAA)</string> <string name="anti_aliasing_smaa">子像素形态学抗锯齿</string>
<!-- Screen Layouts --> <!-- Screen Layouts -->
<string name="screen_layout_auto">自动</string> <string name="screen_layout_auto">自动</string>
@ -629,13 +516,7 @@
<string name="mute">静音</string> <string name="mute">静音</string>
<string name="unmute">取消静音</string> <string name="unmute">取消静音</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">垂直对齐</string>
<string name="top">顶部</string>
<string name="center">居中</string>
<string name="bottom">底部</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">许可证</string> <string name="licenses">许可证</string>
<string name="license_fidelityfx_fsr_description">来自 AMD 的高品质画质升级技术</string> <string name="license_fidelityfx_fsr_description">来自 AMD 的高品质画质升级</string>
</resources> </resources>

View File

@ -133,11 +133,6 @@
<item quantity="other">成功导入 %d 个存档</item> <item quantity="other">成功导入 %d 个存档</item>
</plurals> </plurals>
<string name="no_save_data_found">未找到存档数据</string> <string name="no_save_data_found">未找到存档数据</string>
<string name="verify_installed_content">验证已安装内容的完整性</string>
<string name="verify_installed_content_description">检查所有安装的内容是否有损坏</string>
<string name="keys_missing">密钥缺失</string>
<string name="keys_missing_description">无法解密固件和商业游戏</string>
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- Applet launcher strings --> <!-- Applet launcher strings -->
<string name="applets">小程式啟動器</string> <string name="applets">小程式啟動器</string>
@ -204,7 +199,6 @@
<string name="value_with_units">%1$s%2$s</string> <string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings --> <!-- System settings strings -->
<string name="device_name">设备名称</string>
<string name="use_docked_mode">底座模式</string> <string name="use_docked_mode">底座模式</string>
<string name="use_docked_mode_description">提高解析度,降低效能。停用後將會使用手提模式,會降低解析度並提高效能。</string> <string name="use_docked_mode_description">提高解析度,降低效能。停用後將會使用手提模式,會降低解析度並提高效能。</string>
<string name="emulated_region">模擬區域</string> <string name="emulated_region">模擬區域</string>
@ -222,8 +216,6 @@
<string name="renderer_screen_layout">方向</string> <string name="renderer_screen_layout">方向</string>
<string name="renderer_aspect_ratio">長寬比</string> <string name="renderer_aspect_ratio">長寬比</string>
<string name="renderer_scaling_filter">視窗適應過濾器</string> <string name="renderer_scaling_filter">視窗適應過濾器</string>
<string name="fsr_sharpness">FSR 锐化度</string>
<string name="fsr_sharpness_description">指定使用 FSR 时图像的锐化程度</string>
<string name="renderer_anti_aliasing">消除鋸齒方法</string> <string name="renderer_anti_aliasing">消除鋸齒方法</string>
<string name="renderer_force_max_clock">強制最大時脈 (僅 Adreno)</string> <string name="renderer_force_max_clock">強制最大時脈 (僅 Adreno)</string>
<string name="renderer_force_max_clock_description">強制 GPU 以最大可能時脈執行 (熱溫限制仍被套用)。</string> <string name="renderer_force_max_clock_description">強制 GPU 以最大可能時脈執行 (熱溫限制仍被套用)。</string>
@ -251,92 +243,6 @@
<string name="audio_volume">音量</string> <string name="audio_volume">音量</string>
<string name="audio_volume_description">指定音訊輸出音量。</string> <string name="audio_volume_description">指定音訊輸出音量。</string>
<!-- Input strings -->
<string name="buttons">按键</string>
<string name="button_a">A</string>
<string name="button_b">B</string>
<string name="button_x">X</string>
<string name="button_y">Y</string>
<string name="button_plus"></string>
<string name="button_minus"></string>
<string name="button_home">HOME</string>
<string name="button_capture">截圖</string>
<string name="start_pause">开始/暂停</string>
<string name="dpad">方向鍵</string>
<string name="up"></string>
<string name="down"></string>
<string name="left"></string>
<string name="right"></string>
<string name="left_stick">左搖桿</string>
<string name="control_stick">控制摇杆</string>
<string name="right_stick">右搖桿</string>
<string name="c_stick">C 搖桿</string>
<string name="pressed">按壓</string>
<string name="range">靈敏度</string>
<string name="deadzone">無感帶</string>
<string name="modifier">輕推</string>
<string name="modifier_range">摇杆灵敏度</string>
<string name="triggers">肩部按键</string>
<string name="button_l">L</string>
<string name="button_r">R</string>
<string name="button_zl">ZL</string>
<string name="button_zr">ZR</string>
<string name="button_sl_left">左 SL</string>
<string name="button_sr_left">左 SR</string>
<string name="button_sl_right">右 SL</string>
<string name="button_sr_right">右 SR</string>
<string name="button_z">Z</string>
<string name="invalid">無效</string>
<string name="not_set">未设置</string>
<string name="unknown">未知</string>
<string name="qualified_hat">%1$s%2$s%3$s方向键 %4$s</string>
<string name="qualified_button_stick_axis">%1$s%2$s%3$s轴 %4$s</string>
<string name="qualified_button">%1$s%2$s%3$s按键 %4$s</string>
<string name="qualified_axis">轴 %1$s%2$s</string>
<string name="unused">未使用</string>
<string name="input_prompt">移动或按下按键来输入</string>
<string name="unsupported_input">不支持的输入类型</string>
<string name="input_mapping_filter">输入映射过滤器</string>
<string name="input_mapping_filter_description">选择一个设备过滤输入映射</string>
<string name="auto_map">控制器自动映射</string>
<string name="auto_map_description">选择一个控制器以尝试自动映射</string>
<string name="attempted_auto_map">尝试为 %1$s 自动映射</string>
<string name="controller_type">控制器类型</string>
<string name="pro_controller">Pro 手把</string>
<string name="handheld">掌機模式</string>
<string name="dual_joycons">雙 Joycon 手把</string>
<string name="left_joycon">左 Joycon 手把</string>
<string name="right_joycon">右 Joycon 手把</string>
<string name="gamecube_controller">GameCube 手把</string>
<string name="invert_axis">方向反轉</string>
<string name="invert_button">無效按鈕</string>
<string name="toggle_button">切換按鍵</string>
<string name="turbo_button">连发键</string>
<string name="set_threshold">設定閾值</string>
<string name="toggle_axis">切換軸</string>
<string name="connected">已連線</string>
<string name="use_system_vibrator">使用系统震动器</string>
<string name="input_overlay">虚拟按键输入</string>
<string name="vibration">震動</string>
<string name="vibration_strength">震动强度</string>
<string name="profile">設定檔</string>
<string name="create_new_profile">新建配置文件</string>
<string name="enter_profile_name">输入配置文件名称</string>
<string name="profile_name_already_exists">该名称已被其他配置文件使用</string>
<string name="invalid_profile_name">无效的配置文件名称</string>
<string name="use_global_input_configuration">使用全域輸入設定</string>
<string name="player_num_profile">玩家 %d 配置文件</string>
<string name="delete_input_profile">删除输入配置文件</string>
<string name="delete_input_profile_description">您确定要删除这个配置文件?此操作不可撤销。</string>
<string name="stick_map_description">向左移动摇杆,然后将其向上移动或按下一个按钮</string>
<string name="button_map_description">按下一个按钮或移动扳机键/摇杆</string>
<string name="map_dpad_direction">将十字方向键映射到 %1$s</string>
<string name="map_control">映射到 %1$s</string>
<string name="failed_to_load_profile">加载配置文件失败</string>
<string name="failed_to_save_profile">保存配置文件失败</string>
<string name="reset_mapping">重置映射</string>
<string name="reset_mapping_description">您确定要将此控制器的所有映射重置为默认值?此操作不可撤销。</string>
<!-- Miscellaneous --> <!-- Miscellaneous -->
<string name="slider_default">預設</string> <string name="slider_default">預設</string>
<string name="ini_saved">已儲存設定</string> <string name="ini_saved">已儲存設定</string>
@ -373,11 +279,6 @@
<string name="import_complete">导入完成</string> <string name="import_complete">导入完成</string>
<string name="more_options">更多选项</string> <string name="more_options">更多选项</string>
<string name="use_global_setting">使用全局设置</string> <string name="use_global_setting">使用全局设置</string>
<string name="operation_completed_successfully">操作已成功完成</string>
<string name="retry">重试</string>
<string name="confirm">确定</string>
<string name="load">加载</string>
<string name="save">儲存</string>
<!-- GPU driver installation --> <!-- GPU driver installation -->
<string name="select_gpu_driver">選取 GPU 驅動程式</string> <string name="select_gpu_driver">選取 GPU 驅動程式</string>
@ -399,9 +300,6 @@
<string name="preferences_graphics_description">準確度層級、解析度及著色器快取</string> <string name="preferences_graphics_description">準確度層級、解析度及著色器快取</string>
<string name="preferences_audio">音訊</string> <string name="preferences_audio">音訊</string>
<string name="preferences_audio_description">輸出引擎及音量</string> <string name="preferences_audio_description">輸出引擎及音量</string>
<string name="preferences_controls">控制</string>
<string name="preferences_controls_description">控制器输入映射</string>
<string name="preferences_player">玩家 %d</string>
<string name="preferences_theme">主題和色彩</string> <string name="preferences_theme">主題和色彩</string>
<string name="preferences_debug">偵錯</string> <string name="preferences_debug">偵錯</string>
<string name="preferences_debug_description">CPU/GPU 偵錯、圖形 API 及 fastmem</string> <string name="preferences_debug_description">CPU/GPU 偵錯、圖形 API 及 fastmem</string>
@ -445,14 +343,6 @@
<string name="content_install_notice_description">您選取的內容與此遊戲不相符。\n仍要繼續安裝嗎</string> <string name="content_install_notice_description">您選取的內容與此遊戲不相符。\n仍要繼續安裝嗎</string>
<string name="confirm_uninstall">确认卸载</string> <string name="confirm_uninstall">确认卸载</string>
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string> <string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
<string name="verify_integrity">完整性验证</string>
<string name="verifying">验证中...</string>
<string name="verify_success">完整性驗證成功!</string>
<string name="verify_failure">完整性驗證失敗!</string>
<string name="verify_failure_description">文件可能已经损坏</string>
<string name="verify_no_result">无法执行完整性验证</string>
<string name="verify_no_result_description">未检查文件的完整性</string>
<string name="verification_failed_for">以下文件完整性验证失败:\n%1$s</string>
<!-- ROM loading errors --> <!-- ROM loading errors -->
<string name="loader_error_encrypted">您的 ROM 已加密</string> <string name="loader_error_encrypted">您的 ROM 已加密</string>
@ -467,7 +357,6 @@
<string name="emulation_exit">結束模擬</string> <string name="emulation_exit">結束模擬</string>
<string name="emulation_done">完成</string> <string name="emulation_done">完成</string>
<string name="emulation_fps_counter">FPS 計數器</string> <string name="emulation_fps_counter">FPS 計數器</string>
<string name="emulation_thermal_indicator">温度指示器</string>
<string name="emulation_toggle_controls">切換控制</string> <string name="emulation_toggle_controls">切換控制</string>
<string name="emulation_rel_stick_center">相對搖桿中心</string> <string name="emulation_rel_stick_center">相對搖桿中心</string>
<string name="emulation_dpad_slide">方向鍵滑動</string> <string name="emulation_dpad_slide">方向鍵滑動</string>
@ -483,8 +372,6 @@
<string name="emulation_unpause">取消暫停模擬</string> <string name="emulation_unpause">取消暫停模擬</string>
<string name="emulation_input_overlay">覆疊選項</string> <string name="emulation_input_overlay">覆疊選項</string>
<string name="touchscreen">觸控螢幕</string> <string name="touchscreen">觸控螢幕</string>
<string name="lock_drawer">锁定侧边菜单</string>
<string name="unlock_drawer">解锁侧边菜单</string>
<string name="load_settings">正在載入設定…</string> <string name="load_settings">正在載入設定…</string>
@ -629,12 +516,6 @@
<string name="mute">靜音</string> <string name="mute">靜音</string>
<string name="unmute">取消靜音</string> <string name="unmute">取消靜音</string>
<!-- Emulation vertical alignment -->
<string name="vertical_alignment">垂直对齐</string>
<string name="top">顶部</string>
<string name="center">中心</string>
<string name="bottom">底部</string>
<!-- Licenses screen strings --> <!-- Licenses screen strings -->
<string name="licenses">授權</string> <string name="licenses">授權</string>
<string name="license_fidelityfx_fsr_description">來自 AMD 的升級圖像品質</string> <string name="license_fidelityfx_fsr_description">來自 AMD 的升級圖像品質</string>

View File

@ -401,16 +401,14 @@ add_library(core STATIC
hle/service/am/am_types.h hle/service/am/am_types.h
hle/service/am/applet.cpp hle/service/am/applet.cpp
hle/service/am/applet.h hle/service/am/applet.h
hle/service/am/applet_manager.cpp
hle/service/am/applet_data_broker.cpp hle/service/am/applet_data_broker.cpp
hle/service/am/applet_data_broker.h hle/service/am/applet_data_broker.h
hle/service/am/applet_manager.cpp
hle/service/am/applet_manager.h hle/service/am/applet_manager.h
hle/service/am/button_poller.cpp hle/service/am/applet_message_queue.cpp
hle/service/am/button_poller.h hle/service/am/applet_message_queue.h
hle/service/am/display_layer_manager.cpp hle/service/am/display_layer_manager.cpp
hle/service/am/display_layer_manager.h hle/service/am/display_layer_manager.h
hle/service/am/event_observer.cpp
hle/service/am/event_observer.h
hle/service/am/frontend/applet_cabinet.cpp hle/service/am/frontend/applet_cabinet.cpp
hle/service/am/frontend/applet_cabinet.h hle/service/am/frontend/applet_cabinet.h
hle/service/am/frontend/applet_controller.cpp hle/service/am/frontend/applet_controller.cpp
@ -436,12 +434,8 @@ add_library(core STATIC
hle/service/am/hid_registration.h hle/service/am/hid_registration.h
hle/service/am/library_applet_storage.cpp hle/service/am/library_applet_storage.cpp
hle/service/am/library_applet_storage.h hle/service/am/library_applet_storage.h
hle/service/am/lifecycle_manager.cpp hle/service/am/process.cpp
hle/service/am/lifecycle_manager.h hle/service/am/process.h
hle/service/am/process_creation.cpp
hle/service/am/process_creation.h
hle/service/am/process_holder.cpp
hle/service/am/process_holder.h
hle/service/am/service/all_system_applet_proxies_service.cpp hle/service/am/service/all_system_applet_proxies_service.cpp
hle/service/am/service/all_system_applet_proxies_service.h hle/service/am/service/all_system_applet_proxies_service.h
hle/service/am/service/applet_common_functions.cpp hle/service/am/service/applet_common_functions.cpp
@ -492,8 +486,6 @@ add_library(core STATIC
hle/service/am/service/system_applet_proxy.h hle/service/am/service/system_applet_proxy.h
hle/service/am/service/window_controller.cpp hle/service/am/service/window_controller.cpp
hle/service/am/service/window_controller.h hle/service/am/service/window_controller.h
hle/service/am/window_system.cpp
hle/service/am/window_system.h
hle/service/aoc/addon_content_manager.cpp hle/service/aoc/addon_content_manager.cpp
hle/service/aoc/addon_content_manager.h hle/service/aoc/addon_content_manager.h
hle/service/aoc/purchase_event_manager.cpp hle/service/aoc/purchase_event_manager.cpp
@ -676,10 +668,6 @@ add_library(core STATIC
hle/service/glue/time/worker.h hle/service/glue/time/worker.h
hle/service/grc/grc.cpp hle/service/grc/grc.cpp
hle/service/grc/grc.h hle/service/grc/grc.h
hle/service/hid/active_vibration_device_list.cpp
hle/service/hid/active_vibration_device_list.h
hle/service/hid/applet_resource.cpp
hle/service/hid/applet_resource.h
hle/service/hid/hid.cpp hle/service/hid/hid.cpp
hle/service/hid/hid.h hle/service/hid/hid.h
hle/service/hid/hid_debug_server.cpp hle/service/hid/hid_debug_server.cpp
@ -926,8 +914,6 @@ add_library(core STATIC
hle/service/os/multi_wait_utils.h hle/service/os/multi_wait_utils.h
hle/service/os/mutex.cpp hle/service/os/mutex.cpp
hle/service/os/mutex.h hle/service/os/mutex.h
hle/service/os/process.cpp
hle/service/os/process.h
hle/service/pcie/pcie.cpp hle/service/pcie/pcie.cpp
hle/service/pcie/pcie.h hle/service/pcie/pcie.h
hle/service/pctl/parental_control_service_factory.cpp hle/service/pctl/parental_control_service_factory.cpp

View File

@ -3,6 +3,7 @@
#include <array> #include <array>
#include <atomic> #include <atomic>
#include <exception>
#include <memory> #include <memory>
#include <utility> #include <utility>
@ -19,6 +20,7 @@
#include "core/cpu_manager.h" #include "core/cpu_manager.h"
#include "core/debugger/debugger.h" #include "core/debugger/debugger.h"
#include "core/device_memory.h" #include "core/device_memory.h"
#include "core/file_sys/bis_factory.h"
#include "core/file_sys/fs_filesystem.h" #include "core/file_sys/fs_filesystem.h"
#include "core/file_sys/patch_manager.h" #include "core/file_sys/patch_manager.h"
#include "core/file_sys/registered_cache.h" #include "core/file_sys/registered_cache.h"
@ -36,7 +38,6 @@
#include "core/hle/service/acc/profile_manager.h" #include "core/hle/service/acc/profile_manager.h"
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
#include "core/hle/service/am/frontend/applets.h" #include "core/hle/service/am/frontend/applets.h"
#include "core/hle/service/am/process_creation.h"
#include "core/hle/service/apm/apm_controller.h" #include "core/hle/service/apm/apm_controller.h"
#include "core/hle/service/filesystem/filesystem.h" #include "core/hle/service/filesystem/filesystem.h"
#include "core/hle/service/glue/glue_manager.h" #include "core/hle/service/glue/glue_manager.h"
@ -71,6 +72,30 @@ MICROPROFILE_DEFINE(ARM_CPU3, "ARM", "CPU 3", MP_RGB(255, 64, 64));
namespace Core { namespace Core {
namespace {
FileSys::StorageId GetStorageIdForFrontendSlot(
std::optional<FileSys::ContentProviderUnionSlot> slot) {
if (!slot.has_value()) {
return FileSys::StorageId::None;
}
switch (*slot) {
case FileSys::ContentProviderUnionSlot::UserNAND:
return FileSys::StorageId::NandUser;
case FileSys::ContentProviderUnionSlot::SysNAND:
return FileSys::StorageId::NandSystem;
case FileSys::ContentProviderUnionSlot::SDMC:
return FileSys::StorageId::SdCard;
case FileSys::ContentProviderUnionSlot::FrontendManual:
return FileSys::StorageId::Host;
default:
return FileSys::StorageId::None;
}
}
} // Anonymous namespace
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
const std::string& path) { const std::string& path) {
// To account for split 00+01+etc files. // To account for split 00+01+etc files.
@ -272,6 +297,9 @@ struct System::Impl {
} }
SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) { SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) {
/// Reset all glue registrations
arp_manager.ResetAll();
telemetry_session = std::make_unique<Core::TelemetrySession>(); telemetry_session = std::make_unique<Core::TelemetrySession>();
host1x_core = std::make_unique<Tegra::Host1x::Host1x>(system); host1x_core = std::make_unique<Tegra::Host1x::Host1x>(system);
@ -307,24 +335,8 @@ struct System::Impl {
SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window, SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window,
const std::string& filepath, const std::string& filepath,
Service::AM::FrontendAppletParameters& params) { Service::AM::FrontendAppletParameters& params) {
InitializeKernel(system); app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath),
params.program_id, params.program_index);
const auto file = GetGameFileFromPath(virtual_filesystem, filepath);
// Create the application process
Loader::ResultStatus load_result{};
std::vector<u8> control;
auto process =
Service::AM::CreateApplicationProcess(control, app_loader, load_result, system, file,
params.program_id, params.program_index);
if (load_result != Loader::ResultStatus::Success) {
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
ShutdownMainProcess();
return static_cast<SystemResultStatus>(
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
}
if (!app_loader) { if (!app_loader) {
LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath); LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath);
@ -332,7 +344,7 @@ struct System::Impl {
} }
if (app_loader->ReadProgramId(params.program_id) != Loader::ResultStatus::Success) { if (app_loader->ReadProgramId(params.program_id) != Loader::ResultStatus::Success) {
LOG_ERROR(Core, "Failed to find program id for ROM!"); LOG_ERROR(Core, "Failed to find title id for ROM!");
} }
std::string name = "Unknown program"; std::string name = "Unknown program";
@ -340,10 +352,23 @@ struct System::Impl {
LOG_ERROR(Core, "Failed to read title for ROM!"); LOG_ERROR(Core, "Failed to read title for ROM!");
} }
LOG_INFO(Core, "Loading {} ({:016X}) ...", name, params.program_id); LOG_INFO(Core, "Loading {} ({})", name, params.program_id);
// Make the process created be the application InitializeKernel(system);
kernel.MakeApplicationProcess(process->GetHandle());
// Create the application process.
auto main_process = Kernel::KProcess::Create(system.Kernel());
Kernel::KProcess::Register(system.Kernel(), main_process);
kernel.AppendNewProcess(main_process);
kernel.MakeApplicationProcess(main_process);
const auto [load_result, load_parameters] = app_loader->Load(*main_process, system);
if (load_result != Loader::ResultStatus::Success) {
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
ShutdownMainProcess();
return static_cast<SystemResultStatus>(
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
}
// Set up the rest of the system. // Set up the rest of the system.
SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)}; SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)};
@ -354,6 +379,7 @@ struct System::Impl {
return init_result; return init_result;
} }
AddGlueRegistrationForProcess(*app_loader, *main_process);
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider); telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
// Initialize cheat engine // Initialize cheat engine
@ -361,9 +387,14 @@ struct System::Impl {
cheat_engine->Initialize(); cheat_engine->Initialize();
} }
// Register with applet manager // Register with applet manager.
// All threads are started, begin main process execution, now that we're in the clear applet_manager.CreateAndInsertByFrontendAppletParameters(main_process->GetProcessId(),
applet_manager.CreateAndInsertByFrontendAppletParameters(std::move(process), params); params);
// All threads are started, begin main process execution, now that we're in the clear.
main_process->Run(load_parameters->main_thread_priority,
load_parameters->main_thread_stack_size);
main_process->Close();
if (Settings::values.gamecard_inserted) { if (Settings::values.gamecard_inserted) {
if (Settings::values.gamecard_current_game) { if (Settings::values.gamecard_current_game) {
@ -430,6 +461,7 @@ struct System::Impl {
kernel.SuspendEmulation(true); kernel.SuspendEmulation(true);
kernel.CloseServices(); kernel.CloseServices();
kernel.ShutdownCores(); kernel.ShutdownCores();
applet_manager.Reset();
services.reset(); services.reset();
service_manager.reset(); service_manager.reset();
fs_controller.Reset(); fs_controller.Reset();
@ -452,9 +484,6 @@ struct System::Impl {
room_member->SendGameInfo(game_info); room_member->SendGameInfo(game_info);
} }
// Reset all glue registrations
arp_manager.ResetAll();
LOG_DEBUG(Core, "Shutdown OK"); LOG_DEBUG(Core, "Shutdown OK");
} }
@ -472,6 +501,31 @@ struct System::Impl {
return app_loader->ReadTitle(out); return app_loader->ReadTitle(out);
} }
void AddGlueRegistrationForProcess(Loader::AppLoader& loader, Kernel::KProcess& process) {
std::vector<u8> nacp_data;
FileSys::NACP nacp;
if (loader.ReadControlData(nacp) == Loader::ResultStatus::Success) {
nacp_data = nacp.GetRawBytes();
} else {
nacp_data.resize(sizeof(FileSys::RawNACP));
}
Service::Glue::ApplicationLaunchProperty launch{};
launch.title_id = process.GetProgramId();
FileSys::PatchManager pm{launch.title_id, fs_controller, *content_provider};
launch.version = pm.GetGameVersion().value_or(0);
// TODO(DarkLordZach): When FSController/Game Card Support is added, if
// current_process_game_card use correct StorageId
launch.base_game_storage_id = GetStorageIdForFrontendSlot(content_provider->GetSlotForEntry(
launch.title_id, FileSys::ContentRecordType::Program));
launch.update_storage_id = GetStorageIdForFrontendSlot(content_provider->GetSlotForEntry(
FileSys::GetUpdateTitleID(launch.title_id), FileSys::ContentRecordType::Program));
arp_manager.Register(launch.title_id, launch, std::move(nacp_data));
}
void SetStatus(SystemResultStatus new_status, const char* details = nullptr) { void SetStatus(SystemResultStatus new_status, const char* details = nullptr) {
status = new_status; status = new_status;
if (details) { if (details) {

View File

@ -31,8 +31,8 @@ AesXtsStorage::AesXtsStorage(VirtualFile base, const void* key1, const void* key
ASSERT(iv_size == IvSize); ASSERT(iv_size == IvSize);
ASSERT(Common::IsAligned(m_block_size, AesBlockSize)); ASSERT(Common::IsAligned(m_block_size, AesBlockSize));
std::memcpy(m_key.data() + 0, key1, KeySize / 2); std::memcpy(m_key.data() + 0, key1, KeySize);
std::memcpy(m_key.data() + 0x10, key2, KeySize / 2); std::memcpy(m_key.data() + 0x10, key2, KeySize);
std::memcpy(m_iv.data(), iv, IvSize); std::memcpy(m_iv.data(), iv, IvSize);
m_cipher.emplace(m_key, Core::Crypto::Mode::XTS); m_cipher.emplace(m_key, Core::Crypto::Mode::XTS);

View File

@ -1170,7 +1170,6 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std:
// Determine if we are an application. // Determine if we are an application.
if (pool == KMemoryManager::Pool::Application) { if (pool == KMemoryManager::Pool::Application) {
flag |= Svc::CreateProcessFlag::IsApplication; flag |= Svc::CreateProcessFlag::IsApplication;
m_is_application = true;
} }
// If we are 64-bit, create as such. // If we are 64-bit, create as such.

View File

@ -2,26 +2,19 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "core/hle/service/am/am.h" #include "core/hle/service/am/am.h"
#include "core/hle/service/am/button_poller.h"
#include "core/hle/service/am/event_observer.h"
#include "core/hle/service/am/service/all_system_applet_proxies_service.h" #include "core/hle/service/am/service/all_system_applet_proxies_service.h"
#include "core/hle/service/am/service/application_proxy_service.h" #include "core/hle/service/am/service/application_proxy_service.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/server_manager.h" #include "core/hle/service/server_manager.h"
namespace Service::AM { namespace Service::AM {
void LoopProcess(Core::System& system) { void LoopProcess(Core::System& system) {
WindowSystem window_system(system);
ButtonPoller button_poller(system, window_system);
EventObserver event_observer(system, window_system);
auto server_manager = std::make_unique<ServerManager>(system); auto server_manager = std::make_unique<ServerManager>(system);
server_manager->RegisterNamedService( server_manager->RegisterNamedService("appletAE",
"appletAE", std::make_shared<IAllSystemAppletProxiesService>(system, window_system)); std::make_shared<IAllSystemAppletProxiesService>(system));
server_manager->RegisterNamedService( server_manager->RegisterNamedService("appletOE",
"appletOE", std::make_shared<IApplicationProxyService>(system, window_system)); std::make_shared<IApplicationProxyService>(system));
ServerManager::RunServer(std::move(server_manager)); ServerManager::RunServer(std::move(server_manager));
} }

View File

@ -9,7 +9,6 @@ namespace Service::AM {
constexpr Result ResultNoDataInChannel{ErrorModule::AM, 2}; constexpr Result ResultNoDataInChannel{ErrorModule::AM, 2};
constexpr Result ResultNoMessages{ErrorModule::AM, 3}; constexpr Result ResultNoMessages{ErrorModule::AM, 3};
constexpr Result ResultLibraryAppletTerminated{ErrorModule::AM, 22};
constexpr Result ResultInvalidOffset{ErrorModule::AM, 503}; constexpr Result ResultInvalidOffset{ErrorModule::AM, 503};
constexpr Result ResultInvalidStorageType{ErrorModule::AM, 511}; constexpr Result ResultInvalidStorageType{ErrorModule::AM, 511};
constexpr Result ResultFatalSectionCountImbalance{ErrorModule::AM, 512}; constexpr Result ResultFatalSectionCountImbalance{ErrorModule::AM, 512};

View File

@ -61,6 +61,12 @@ enum class ScreenshotPermission : u32 {
Disable = 2, Disable = 2,
}; };
struct FocusHandlingMode {
bool notify;
bool background;
bool suspend;
};
enum class IdleTimeDetectionExtension : u32 { enum class IdleTimeDetectionExtension : u32 {
Disabled = 0, Disabled = 0,
Extended = 1, Extended = 1,
@ -233,6 +239,7 @@ struct ApplicationPlayStatistics {
static_assert(sizeof(ApplicationPlayStatistics) == 0x18, static_assert(sizeof(ApplicationPlayStatistics) == 0x18,
"ApplicationPlayStatistics has incorrect size."); "ApplicationPlayStatistics has incorrect size.");
using AppletResourceUserId = u64;
using ProgramId = u64; using ProgramId = u64;
struct Applet; struct Applet;

View File

@ -1,71 +1,27 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "common/scope_exit.h"
#include "core/core.h" #include "core/core.h"
#include "core/hle/service/am/am_results.h"
#include "core/hle/service/am/applet.h" #include "core/hle/service/am/applet.h"
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
namespace Service::AM { namespace Service::AM {
Applet::Applet(Core::System& system, std::unique_ptr<Process> process_, bool is_application) Applet::Applet(Core::System& system, std::unique_ptr<Process> process_)
: context(system, "Applet"), lifecycle_manager(system, context, is_application), : context(system, "Applet"), message_queue(system), process(std::move(process_)),
process(std::move(process_)), hid_registration(system, *process), hid_registration(system, *process), gpu_error_detected_event(context),
gpu_error_detected_event(context), friend_invitation_storage_channel_event(context), friend_invitation_storage_channel_event(context), notification_storage_channel_event(context),
notification_storage_channel_event(context), health_warning_disappeared_system_event(context), health_warning_disappeared_system_event(context), acquired_sleep_lock_event(context),
acquired_sleep_lock_event(context), pop_from_general_channel_event(context), pop_from_general_channel_event(context), library_applet_launchable_event(context),
library_applet_launchable_event(context), accumulated_suspended_tick_changed_event(context), accumulated_suspended_tick_changed_event(context), sleep_lock_event(context) {
sleep_lock_event(context), state_changed_event(context) {
aruid.pid = process->GetProcessId(); aruid = process->GetProcessId();
program_id = process->GetProgramId(); program_id = process->GetProgramId();
} }
Applet::~Applet() = default; Applet::~Applet() = default;
void Applet::UpdateSuspensionStateLocked(bool force_message) {
// Remove any forced resumption.
lifecycle_manager.RemoveForceResumeIfPossible();
// Check if we're runnable.
const bool curr_activity_runnable = lifecycle_manager.IsRunnable();
const bool prev_activity_runnable = is_activity_runnable;
const bool was_changed = curr_activity_runnable != prev_activity_runnable;
if (was_changed) {
if (curr_activity_runnable) {
process->Suspend(false);
} else {
process->Suspend(true);
lifecycle_manager.RequestResumeNotification();
}
is_activity_runnable = curr_activity_runnable;
}
if (lifecycle_manager.GetForcedSuspend()) {
// TODO: why is this allowed?
return;
}
// Signal if the focus state was changed or the process state was changed.
if (lifecycle_manager.UpdateRequestedFocusState() || was_changed || force_message) {
lifecycle_manager.SignalSystemEventIfNeeded();
}
}
void Applet::SetInteractibleLocked(bool interactible) {
if (is_interactible == interactible) {
return;
}
is_interactible = interactible;
hid_registration.EnableAppletToGetInput(interactible && !lifecycle_manager.GetExitRequested());
}
void Applet::OnProcessTerminatedLocked() {
is_completed = true;
state_changed_event.Signal();
}
} // namespace Service::AM } // namespace Service::AM

View File

@ -3,28 +3,25 @@
#pragma once #pragma once
#include <deque>
#include <mutex> #include <mutex>
#include "common/math_util.h" #include "common/math_util.h"
#include "core/hle/service/apm/apm_controller.h" #include "core/hle/service/apm/apm_controller.h"
#include "core/hle/service/caps/caps_types.h" #include "core/hle/service/caps/caps_types.h"
#include "core/hle/service/cmif_types.h"
#include "core/hle/service/kernel_helpers.h" #include "core/hle/service/kernel_helpers.h"
#include "core/hle/service/os/event.h" #include "core/hle/service/os/event.h"
#include "core/hle/service/os/process.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
#include "core/hle/service/am/am_types.h" #include "core/hle/service/am/am_types.h"
#include "core/hle/service/am/applet_message_queue.h"
#include "core/hle/service/am/display_layer_manager.h" #include "core/hle/service/am/display_layer_manager.h"
#include "core/hle/service/am/hid_registration.h" #include "core/hle/service/am/hid_registration.h"
#include "core/hle/service/am/lifecycle_manager.h" #include "core/hle/service/am/process.h"
#include "core/hle/service/am/process_holder.h"
namespace Service::AM { namespace Service::AM {
struct Applet { struct Applet {
explicit Applet(Core::System& system, std::unique_ptr<Process> process_, bool is_application); explicit Applet(Core::System& system, std::unique_ptr<Process> process_);
~Applet(); ~Applet();
// Lock // Lock
@ -33,13 +30,11 @@ struct Applet {
// Event creation helper // Event creation helper
KernelHelpers::ServiceContext context; KernelHelpers::ServiceContext context;
// Lifecycle manager // Applet message queue
LifecycleManager lifecycle_manager; AppletMessageQueue message_queue;
// Process // Process
std::unique_ptr<Process> process; std::unique_ptr<Process> process;
std::optional<ProcessHolder> process_holder;
bool is_process_running{};
// Creation state // Creation state
AppletId applet_id{}; AppletId applet_id{};
@ -80,9 +75,11 @@ struct Applet {
bool game_play_recording_supported{}; bool game_play_recording_supported{};
GamePlayRecordingState game_play_recording_state{GamePlayRecordingState::Disabled}; GamePlayRecordingState game_play_recording_state{GamePlayRecordingState::Disabled};
bool jit_service_launched{}; bool jit_service_launched{};
bool is_running{};
bool application_crash_report_enabled{}; bool application_crash_report_enabled{};
// Common state // Common state
FocusState focus_state{};
bool sleep_lock_enabled{}; bool sleep_lock_enabled{};
bool vr_mode_enabled{}; bool vr_mode_enabled{};
bool lcd_backlight_off_enabled{}; bool lcd_backlight_off_enabled{};
@ -96,12 +93,15 @@ struct Applet {
// Caller applet // Caller applet
std::weak_ptr<Applet> caller_applet{}; std::weak_ptr<Applet> caller_applet{};
std::shared_ptr<AppletDataBroker> caller_applet_broker{}; std::shared_ptr<AppletDataBroker> caller_applet_broker{};
std::list<std::shared_ptr<Applet>> child_applets{};
bool is_completed{};
// Self state // Self state
bool exit_locked{}; bool exit_locked{};
s32 fatal_section_count{}; s32 fatal_section_count{};
bool operation_mode_changed_notification_enabled{true};
bool performance_mode_changed_notification_enabled{true};
FocusHandlingMode focus_handling_mode{};
bool restart_message_enabled{};
bool out_of_focus_suspension_enabled{true};
Capture::AlbumImageOrientation album_image_orientation{}; Capture::AlbumImageOrientation album_image_orientation{};
bool handles_request_to_display{}; bool handles_request_to_display{};
ScreenshotPermission screenshot_permission{}; ScreenshotPermission screenshot_permission{};
@ -110,9 +110,6 @@ struct Applet {
u64 suspended_ticks{}; u64 suspended_ticks{};
bool album_image_taken_notification_enabled{}; bool album_image_taken_notification_enabled{};
bool record_volume_muted{}; bool record_volume_muted{};
bool is_activity_runnable{};
bool is_interactible{true};
bool window_visible{true};
// Events // Events
Event gpu_error_detected_event; Event gpu_error_detected_event;
@ -124,15 +121,9 @@ struct Applet {
Event library_applet_launchable_event; Event library_applet_launchable_event;
Event accumulated_suspended_tick_changed_event; Event accumulated_suspended_tick_changed_event;
Event sleep_lock_event; Event sleep_lock_event;
Event state_changed_event;
// Frontend state // Frontend state
std::shared_ptr<Frontend::FrontendApplet> frontend{}; std::shared_ptr<Frontend::FrontendApplet> frontend{};
// Process state management
void UpdateSuspensionStateLocked(bool force_message);
void SetInteractibleLocked(bool interactible);
void OnProcessTerminatedLocked();
}; };
} // namespace Service::AM } // namespace Service::AM

View File

@ -44,8 +44,24 @@ Kernel::KReadableEvent* AppletStorageChannel::GetEvent() {
AppletDataBroker::AppletDataBroker(Core::System& system_) AppletDataBroker::AppletDataBroker(Core::System& system_)
: system(system_), context(system_, "AppletDataBroker"), in_data(context), : system(system_), context(system_, "AppletDataBroker"), in_data(context),
interactive_in_data(context), out_data(context), interactive_out_data(context) {} interactive_in_data(context), out_data(context), interactive_out_data(context),
state_changed_event(context), is_completed(false) {}
AppletDataBroker::~AppletDataBroker() = default; AppletDataBroker::~AppletDataBroker() = default;
void AppletDataBroker::SignalCompletion() {
{
std::scoped_lock lk{lock};
if (is_completed) {
return;
}
is_completed = true;
state_changed_event.Signal();
}
system.GetAppletManager().FocusStateChanged();
}
} // namespace Service::AM } // namespace Service::AM

View File

@ -53,6 +53,16 @@ public:
return interactive_out_data; return interactive_out_data;
} }
Event& GetStateChangedEvent() {
return state_changed_event;
}
bool IsCompleted() const {
return is_completed;
}
void SignalCompletion();
private: private:
Core::System& system; Core::System& system;
KernelHelpers::ServiceContext context; KernelHelpers::ServiceContext context;
@ -61,6 +71,10 @@ private:
AppletStorageChannel interactive_in_data; AppletStorageChannel interactive_in_data;
AppletStorageChannel out_data; AppletStorageChannel out_data;
AppletStorageChannel interactive_out_data; AppletStorageChannel interactive_out_data;
Event state_changed_event;
std::mutex lock;
bool is_completed;
}; };
} // namespace Service::AM } // namespace Service::AM

View File

@ -13,7 +13,6 @@
#include "core/hle/service/am/frontend/applet_mii_edit_types.h" #include "core/hle/service/am/frontend/applet_mii_edit_types.h"
#include "core/hle/service/am/frontend/applet_software_keyboard_types.h" #include "core/hle/service/am/frontend/applet_software_keyboard_types.h"
#include "core/hle/service/am/service/storage.h" #include "core/hle/service/am/service/storage.h"
#include "core/hle/service/am/window_system.h"
#include "hid_core/hid_types.h" #include "hid_core/hid_types.h"
namespace Service::AM { namespace Service::AM {
@ -226,46 +225,49 @@ void PushInShowSoftwareKeyboard(Core::System& system, AppletStorageChannel& chan
} // namespace } // namespace
AppletManager::AppletManager(Core::System& system) : m_system(system) {} AppletManager::AppletManager(Core::System& system) : m_system(system) {}
AppletManager::~AppletManager() = default; AppletManager::~AppletManager() {
this->Reset();
}
void AppletManager::CreateAndInsertByFrontendAppletParameters( void AppletManager::InsertApplet(std::shared_ptr<Applet> applet) {
std::unique_ptr<Process> process, const FrontendAppletParameters& params) { std::scoped_lock lk{m_lock};
m_applets.emplace(applet->aruid, std::move(applet));
}
void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
std::shared_ptr<Applet> applet;
bool should_stop = false;
{ {
std::scoped_lock lk{m_lock}; std::scoped_lock lk{m_lock};
m_pending_process = std::move(process);
m_pending_parameters = params;
}
m_cv.notify_all();
}
void AppletManager::RequestExit() { const auto it = m_applets.find(aruid);
std::scoped_lock lk{m_lock}; if (it == m_applets.end()) {
if (m_window_system) { return;
m_window_system->OnExitRequested(); }
applet = it->second;
m_applets.erase(it);
should_stop = m_applets.empty();
}
// Terminate process.
applet->process->Terminate();
// If there were no applets left, stop emulation.
if (should_stop) {
m_system.Exit();
} }
} }
void AppletManager::OperationModeChanged() { void AppletManager::CreateAndInsertByFrontendAppletParameters(
std::scoped_lock lk{m_lock}; AppletResourceUserId aruid, const FrontendAppletParameters& params) {
if (m_window_system) { // TODO: this should be run inside AM so that the events will have a parent process
m_window_system->OnOperationModeChanged(); // TODO: have am create the guest process
} auto applet = std::make_shared<Applet>(m_system, std::make_unique<Process>(m_system));
}
void AppletManager::SetWindowSystem(WindowSystem* window_system) {
std::unique_lock lk{m_lock};
m_window_system = window_system;
if (!m_window_system) {
return;
}
m_cv.wait(lk, [&] { return m_pending_process != nullptr; });
const auto& params = m_pending_parameters;
auto applet = std::make_shared<Applet>(m_system, std::move(m_pending_process),
params.applet_id == AppletId::Application);
applet->aruid = aruid;
applet->program_id = params.program_id; applet->program_id = params.program_id;
applet->applet_id = params.applet_id; applet->applet_id = params.applet_id;
applet->type = params.applet_type; applet->type = params.applet_type;
@ -320,19 +322,59 @@ void AppletManager::SetWindowSystem(WindowSystem* window_system) {
} }
// Applet was started by frontend, so it is foreground. // Applet was started by frontend, so it is foreground.
applet->lifecycle_manager.SetFocusState(FocusState::InFocus); applet->message_queue.PushMessage(AppletMessage::ChangeIntoForeground);
applet->message_queue.PushMessage(AppletMessage::FocusStateChanged);
applet->focus_state = FocusState::InFocus;
if (applet->applet_id == AppletId::QLaunch) { this->InsertApplet(std::move(applet));
applet->lifecycle_manager.SetFocusHandlingMode(false); }
applet->lifecycle_manager.SetOutOfFocusSuspendingEnabled(false);
m_window_system->TrackApplet(applet, false); std::shared_ptr<Applet> AppletManager::GetByAppletResourceUserId(AppletResourceUserId aruid) const {
m_window_system->RequestHomeMenuToGetForeground(); std::scoped_lock lk{m_lock};
} else {
m_window_system->TrackApplet(applet, true); if (const auto it = m_applets.find(aruid); it != m_applets.end()) {
m_window_system->RequestApplicationToGetForeground(); return it->second;
} }
applet->process->Run(); return {};
}
void AppletManager::Reset() {
std::scoped_lock lk{m_lock};
m_applets.clear();
}
void AppletManager::RequestExit() {
std::scoped_lock lk{m_lock};
for (const auto& [aruid, applet] : m_applets) {
applet->message_queue.RequestExit();
}
}
void AppletManager::RequestResume() {
std::scoped_lock lk{m_lock};
for (const auto& [aruid, applet] : m_applets) {
applet->message_queue.RequestResume();
}
}
void AppletManager::OperationModeChanged() {
std::scoped_lock lk{m_lock};
for (const auto& [aruid, applet] : m_applets) {
applet->message_queue.OperationModeChanged();
}
}
void AppletManager::FocusStateChanged() {
std::scoped_lock lk{m_lock};
for (const auto& [aruid, applet] : m_applets) {
applet->message_queue.FocusStateChanged();
}
} }
} // namespace Service::AM } // namespace Service::AM

View File

@ -3,23 +3,17 @@
#pragma once #pragma once
#include <condition_variable> #include <map>
#include <mutex> #include <mutex>
#include "core/hle/service/am/am_types.h" #include "core/hle/service/am/applet.h"
namespace Core { namespace Core {
class System; class System;
} }
namespace Service {
class Process;
}
namespace Service::AM { namespace Service::AM {
class WindowSystem;
enum class LaunchType { enum class LaunchType {
FrontendInitiated, FrontendInitiated,
ApplicationInitiated, ApplicationInitiated,
@ -39,24 +33,27 @@ public:
explicit AppletManager(Core::System& system); explicit AppletManager(Core::System& system);
~AppletManager(); ~AppletManager();
void CreateAndInsertByFrontendAppletParameters(std::unique_ptr<Process> process, void InsertApplet(std::shared_ptr<Applet> applet);
const FrontendAppletParameters& params); void TerminateAndRemoveApplet(AppletResourceUserId aruid);
void RequestExit();
void OperationModeChanged();
public: void CreateAndInsertByFrontendAppletParameters(AppletResourceUserId aruid,
void SetWindowSystem(WindowSystem* window_system); const FrontendAppletParameters& params);
std::shared_ptr<Applet> GetByAppletResourceUserId(AppletResourceUserId aruid) const;
void Reset();
void RequestExit();
void RequestResume();
void OperationModeChanged();
void FocusStateChanged();
private: private:
Core::System& m_system; Core::System& m_system;
std::mutex m_lock; mutable std::mutex m_lock{};
std::condition_variable m_cv; std::map<AppletResourceUserId, std::shared_ptr<Applet>> m_applets{};
WindowSystem* m_window_system{}; // AudioController state goes here
FrontendAppletParameters m_pending_parameters{};
std::unique_ptr<Process> m_pending_process{};
}; };
} // namespace Service::AM } // namespace Service::AM

View File

@ -0,0 +1,73 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/hle/service/am/applet_message_queue.h"
#include "core/hle/service/ipc_helpers.h"
namespace Service::AM {
AppletMessageQueue::AppletMessageQueue(Core::System& system)
: service_context{system, "AppletMessageQueue"} {
on_new_message = service_context.CreateEvent("AMMessageQueue:OnMessageReceived");
on_operation_mode_changed = service_context.CreateEvent("AMMessageQueue:OperationModeChanged");
}
AppletMessageQueue::~AppletMessageQueue() {
service_context.CloseEvent(on_new_message);
service_context.CloseEvent(on_operation_mode_changed);
}
Kernel::KReadableEvent& AppletMessageQueue::GetMessageReceiveEvent() {
return on_new_message->GetReadableEvent();
}
Kernel::KReadableEvent& AppletMessageQueue::GetOperationModeChangedEvent() {
return on_operation_mode_changed->GetReadableEvent();
}
void AppletMessageQueue::PushMessage(AppletMessage msg) {
{
std::scoped_lock lk{lock};
messages.push(msg);
}
on_new_message->Signal();
}
AppletMessage AppletMessageQueue::PopMessage() {
std::scoped_lock lk{lock};
if (messages.empty()) {
on_new_message->Clear();
return AppletMessage::None;
}
auto msg = messages.front();
messages.pop();
if (messages.empty()) {
on_new_message->Clear();
}
return msg;
}
std::size_t AppletMessageQueue::GetMessageCount() const {
std::scoped_lock lk{lock};
return messages.size();
}
void AppletMessageQueue::RequestExit() {
PushMessage(AppletMessage::Exit);
}
void AppletMessageQueue::RequestResume() {
PushMessage(AppletMessage::Resume);
}
void AppletMessageQueue::FocusStateChanged() {
PushMessage(AppletMessage::FocusStateChanged);
}
void AppletMessageQueue::OperationModeChanged() {
PushMessage(AppletMessage::OperationModeChanged);
PushMessage(AppletMessage::PerformanceModeChanged);
on_operation_mode_changed->Signal();
}
} // namespace Service::AM

View File

@ -0,0 +1,43 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <queue>
#include "core/hle/service/am/am_types.h"
#include "core/hle/service/kernel_helpers.h"
#include "core/hle/service/service.h"
namespace Kernel {
class KReadableEvent;
} // namespace Kernel
namespace Service::AM {
class AppletMessageQueue {
public:
explicit AppletMessageQueue(Core::System& system);
~AppletMessageQueue();
Kernel::KReadableEvent& GetMessageReceiveEvent();
Kernel::KReadableEvent& GetOperationModeChangedEvent();
void PushMessage(AppletMessage msg);
AppletMessage PopMessage();
std::size_t GetMessageCount() const;
void RequestExit();
void RequestResume();
void FocusStateChanged();
void OperationModeChanged();
private:
KernelHelpers::ServiceContext service_context;
Kernel::KEvent* on_new_message;
Kernel::KEvent* on_operation_mode_changed;
mutable std::mutex lock;
std::queue<AppletMessage> messages;
};
} // namespace Service::AM

View File

@ -1,89 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/core.h"
#include "core/hle/service/am/button_poller.h"
#include "core/hle/service/am/window_system.h"
#include "hid_core/frontend/emulated_controller.h"
#include "hid_core/hid_core.h"
#include "hid_core/hid_types.h"
namespace Service::AM {
namespace {
ButtonPressDuration ClassifyPressDuration(std::chrono::steady_clock::time_point start) {
using namespace std::chrono_literals;
const auto dur = std::chrono::steady_clock::now() - start;
// TODO: determine actual thresholds
// TODO: these are likely different for each button
if (dur < 500ms) {
return ButtonPressDuration::ShortPressing;
} else if (dur < 1000ms) {
return ButtonPressDuration::MiddlePressing;
} else {
return ButtonPressDuration::LongPressing;
}
}
} // namespace
ButtonPoller::ButtonPoller(Core::System& system, WindowSystem& window_system)
: m_window_system(window_system) {
// TODO: am reads this from the home button state in hid, which is controller-agnostic.
Core::HID::ControllerUpdateCallback engine_callback{
.on_change =
[this](Core::HID::ControllerTriggerType type) {
if (type == Core::HID::ControllerTriggerType::Button) {
this->OnButtonStateChanged();
}
},
.is_npad_service = true,
};
m_handheld = system.HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld);
m_handheld_key = m_handheld->SetCallback(engine_callback);
m_player1 = system.HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1);
m_player1_key = m_player1->SetCallback(engine_callback);
}
ButtonPoller::~ButtonPoller() {
m_handheld->DeleteCallback(m_handheld_key);
m_player1->DeleteCallback(m_player1_key);
}
void ButtonPoller::OnButtonStateChanged() {
const bool home_button =
m_handheld->GetHomeButtons().home.Value() || m_player1->GetHomeButtons().home.Value();
const bool capture_button = m_handheld->GetCaptureButtons().capture.Value() ||
m_player1->GetCaptureButtons().capture.Value();
// Buttons pressed which were not previously pressed
if (home_button && !m_home_button_press_start) {
m_home_button_press_start = std::chrono::steady_clock::now();
}
if (capture_button && !m_capture_button_press_start) {
m_capture_button_press_start = std::chrono::steady_clock::now();
}
// if (power_button && !m_power_button_press_start) {
// m_power_button_press_start = std::chrono::steady_clock::now();
// }
// Buttons released which were previously held
if (!home_button && m_home_button_press_start) {
m_window_system.OnHomeButtonPressed(ClassifyPressDuration(*m_home_button_press_start));
m_home_button_press_start = std::nullopt;
}
if (!capture_button && m_capture_button_press_start) {
// TODO
m_capture_button_press_start = std::nullopt;
}
// if (!power_button && m_power_button_press_start) {
// // TODO
// m_power_button_press_start = std::nullopt;
// }
}
} // namespace Service::AM

View File

@ -1,43 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <chrono>
#include <optional>
#include "hid_core/frontend/emulated_controller.h"
namespace Core {
namespace HID {
class EmulatedController;
}
class System;
} // namespace Core
namespace Service::AM {
class WindowSystem;
class ButtonPoller {
public:
explicit ButtonPoller(Core::System& system, WindowSystem& window_system);
~ButtonPoller();
private:
void OnButtonStateChanged();
private:
WindowSystem& m_window_system;
Core::HID::EmulatedController* m_handheld{};
int m_handheld_key{};
Core::HID::EmulatedController* m_player1{};
int m_player1_key{};
std::optional<std::chrono::steady_clock::time_point> m_home_button_press_start{};
std::optional<std::chrono::steady_clock::time_point> m_capture_button_press_start{};
std::optional<std::chrono::steady_clock::time_point> m_power_button_press_start{};
};
} // namespace Service::AM

View File

@ -1,162 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/am/applet.h"
#include "core/hle/service/am/event_observer.h"
#include "core/hle/service/am/window_system.h"
namespace Service::AM {
enum class UserDataTag : u32 {
WakeupEvent,
AppletProcess,
};
EventObserver::EventObserver(Core::System& system, WindowSystem& window_system)
: m_system(system), m_context(system, "am:EventObserver"), m_window_system(window_system),
m_wakeup_event(m_context), m_wakeup_holder(m_wakeup_event.GetHandle()) {
m_window_system.SetEventObserver(this);
m_wakeup_holder.SetUserData(static_cast<uintptr_t>(UserDataTag::WakeupEvent));
m_wakeup_holder.LinkToMultiWait(std::addressof(m_multi_wait));
m_thread = std::thread([&] { this->ThreadFunc(); });
}
EventObserver::~EventObserver() {
// Signal thread and wait for processing to finish.
m_stop_source.request_stop();
m_wakeup_event.Signal();
m_thread.join();
// Free remaining owned sessions.
auto it = m_process_holder_list.begin();
while (it != m_process_holder_list.end()) {
// Get the holder.
auto* const holder = std::addressof(*it);
// Remove from the list.
it = m_process_holder_list.erase(it);
// Free the holder.
delete holder;
}
}
void EventObserver::TrackAppletProcess(Applet& applet) {
// Don't observe dummy processes.
if (!applet.process->IsInitialized()) {
return;
}
// Allocate new holder.
auto* holder = new ProcessHolder(applet, *applet.process);
holder->SetUserData(static_cast<uintptr_t>(UserDataTag::AppletProcess));
// Insert into list.
{
std::scoped_lock lk{m_lock};
m_process_holder_list.push_back(*holder);
holder->LinkToMultiWait(std::addressof(m_deferred_wait_list));
}
// Signal wakeup.
m_wakeup_event.Signal();
}
void EventObserver::RequestUpdate() {
m_wakeup_event.Signal();
}
void EventObserver::LinkDeferred() {
std::scoped_lock lk{m_lock};
m_multi_wait.MoveAll(std::addressof(m_deferred_wait_list));
}
MultiWaitHolder* EventObserver::WaitSignaled() {
while (true) {
this->LinkDeferred();
// If we're done, return before we start waiting.
if (m_stop_source.stop_requested()) {
return nullptr;
}
auto* selected = m_multi_wait.WaitAny(m_system.Kernel());
if (selected != std::addressof(m_wakeup_holder)) {
// Unlink the process.
selected->UnlinkFromMultiWait();
}
return selected;
}
}
void EventObserver::Process(MultiWaitHolder* holder) {
switch (static_cast<UserDataTag>(holder->GetUserData())) {
case UserDataTag::WakeupEvent:
this->OnWakeupEvent(holder);
break;
case UserDataTag::AppletProcess:
this->OnProcessEvent(static_cast<ProcessHolder*>(holder));
break;
default:
UNREACHABLE();
}
}
void EventObserver::OnWakeupEvent(MultiWaitHolder* holder) {
m_wakeup_event.Clear();
// Perform recalculation.
m_window_system.Update();
}
void EventObserver::OnProcessEvent(ProcessHolder* holder) {
// Check process state.
auto& applet = holder->GetApplet();
auto& process = holder->GetProcess();
{
std::scoped_lock lk{m_lock, applet.lock};
if (process.IsTerminated()) {
// Destroy the holder.
this->DestroyAppletProcessHolderLocked(holder);
} else {
// Reset signaled state.
process.ResetSignal();
// Relink wakeup event.
holder->LinkToMultiWait(std::addressof(m_deferred_wait_list));
}
// Set running.
applet.is_process_running = process.IsRunning();
}
// Perform recalculation.
m_window_system.Update();
}
void EventObserver::DestroyAppletProcessHolderLocked(ProcessHolder* holder) {
// Remove from owned list.
m_process_holder_list.erase(m_process_holder_list.iterator_to(*holder));
// Destroy and free.
delete holder;
}
void EventObserver::ThreadFunc() {
Common::SetCurrentThreadName("am:EventObserver");
while (true) {
auto* signaled_holder = this->WaitSignaled();
if (!signaled_holder) {
break;
}
this->Process(signaled_holder);
}
}
} // namespace Service::AM

View File

@ -1,74 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/polyfill_thread.h"
#include "common/thread.h"
#include "core/hle/service/kernel_helpers.h"
#include "core/hle/service/os/event.h"
#include "core/hle/service/os/multi_wait.h"
namespace Core {
class System;
}
namespace Service::AM {
struct Applet;
class ProcessHolder;
class WindowSystem;
class EventObserver {
public:
explicit EventObserver(Core::System& system, WindowSystem& window_system);
~EventObserver();
void TrackAppletProcess(Applet& applet);
void RequestUpdate();
private:
void LinkDeferred();
MultiWaitHolder* WaitSignaled();
void Process(MultiWaitHolder* holder);
bool WaitAndProcessImpl();
void LoopProcess();
private:
void OnWakeupEvent(MultiWaitHolder* holder);
void OnProcessEvent(ProcessHolder* holder);
private:
void DestroyAppletProcessHolderLocked(ProcessHolder* holder);
private:
void ThreadFunc();
private:
// System reference and context.
Core::System& m_system;
KernelHelpers::ServiceContext m_context;
// Window manager.
WindowSystem& m_window_system;
// Guest event handle to wake up the event loop processor.
Event m_wakeup_event;
MultiWaitHolder m_wakeup_holder;
// Mutex to protect remaining members.
std::mutex m_lock{};
// List of owned process holders.
Common::IntrusiveListBaseTraits<ProcessHolder>::ListType m_process_holder_list;
// Multi-wait objects for new tasks.
MultiWait m_multi_wait;
MultiWait m_deferred_wait_list;
// Processing thread.
std::thread m_thread{};
std::stop_source m_stop_source{};
};
} // namespace Service::AM

View File

@ -69,11 +69,7 @@ void FrontendApplet::PushInteractiveOutData(std::shared_ptr<IStorage> storage) {
} }
void FrontendApplet::Exit() { void FrontendApplet::Exit() {
auto applet_ = applet.lock(); applet.lock()->caller_applet_broker->SignalCompletion();
std::scoped_lock lk{applet_->lock};
applet_->is_completed = true;
applet_->state_changed_event.Signal();
} }
FrontendAppletSet::FrontendAppletSet() = default; FrontendAppletSet::FrontendAppletSet() = default;

View File

@ -3,28 +3,24 @@
#include "core/core.h" #include "core/core.h"
#include "core/hle/service/am/hid_registration.h" #include "core/hle/service/am/hid_registration.h"
#include "core/hle/service/am/process.h"
#include "core/hle/service/hid/hid_server.h" #include "core/hle/service/hid/hid_server.h"
#include "core/hle/service/os/process.h"
#include "core/hle/service/sm/sm.h" #include "core/hle/service/sm/sm.h"
#include "hid_core/resource_manager.h" #include "hid_core/resource_manager.h"
namespace Service::AM { namespace Service::AM {
HidRegistration::HidRegistration(Core::System& system, Process& process) : m_process(process) { HidRegistration::HidRegistration(Core::System& system, Process& process) : m_process(process) {
m_hid_server = system.ServiceManager().GetService<HID::IHidServer>("hid", true); m_hid_server = system.ServiceManager().GetService<HID::IHidServer>("hid");
if (m_process.IsInitialized()) { if (m_process.IsInitialized()) {
m_hid_server->GetResourceManager()->RegisterAppletResourceUserId(m_process.GetProcessId(), m_hid_server->GetResourceManager()->RegisterAppletResourceUserId(m_process.GetProcessId(),
true); true);
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
true);
} }
} }
HidRegistration::~HidRegistration() { HidRegistration::~HidRegistration() {
if (m_process.IsInitialized()) { if (m_process.IsInitialized()) {
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
false);
m_hid_server->GetResourceManager()->UnregisterAppletResourceUserId( m_hid_server->GetResourceManager()->UnregisterAppletResourceUserId(
m_process.GetProcessId()); m_process.GetProcessId());
} }
@ -32,8 +28,6 @@ HidRegistration::~HidRegistration() {
void HidRegistration::EnableAppletToGetInput(bool enable) { void HidRegistration::EnableAppletToGetInput(bool enable) {
if (m_process.IsInitialized()) { if (m_process.IsInitialized()) {
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
enable);
m_hid_server->GetResourceManager()->EnableInput(m_process.GetProcessId(), enable); m_hid_server->GetResourceManager()->EnableInput(m_process.GetProcessId(), enable);
} }
} }

View File

@ -13,12 +13,10 @@ namespace Service::HID {
class IHidServer; class IHidServer;
} }
namespace Service {
class Process;
}
namespace Service::AM { namespace Service::AM {
class Process;
class HidRegistration { class HidRegistration {
public: public:
explicit HidRegistration(Core::System& system, Process& process); explicit HidRegistration(Core::System& system, Process& process);

View File

@ -1,379 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
#include "core/hle/service/am/lifecycle_manager.h"
namespace Service::AM {
LifecycleManager::LifecycleManager(Core::System& system, KernelHelpers::ServiceContext& context,
bool is_application)
: m_system_event(context), m_operation_mode_changed_system_event(context),
m_is_application(is_application) {}
LifecycleManager::~LifecycleManager() = default;
Event& LifecycleManager::GetSystemEvent() {
return m_system_event;
}
Event& LifecycleManager::GetOperationModeChangedSystemEvent() {
return m_operation_mode_changed_system_event;
}
void LifecycleManager::PushUnorderedMessage(AppletMessage message) {
m_unordered_messages.push_back(message);
this->SignalSystemEventIfNeeded();
}
AppletMessage LifecycleManager::PopMessageInOrderOfPriority() {
if (m_has_resume) {
m_has_resume = false;
return AppletMessage::Resume;
}
if (m_has_acknowledged_exit != m_has_requested_exit) {
m_has_acknowledged_exit = m_has_requested_exit;
return AppletMessage::Exit;
}
if (m_focus_state_changed_notification_enabled) {
if (!m_is_application) {
if (m_requested_focus_state != m_acknowledged_focus_state) {
m_acknowledged_focus_state = m_requested_focus_state;
switch (m_requested_focus_state) {
case FocusState::InFocus:
return AppletMessage::ChangeIntoForeground;
case FocusState::NotInFocus:
return AppletMessage::ChangeIntoBackground;
default:
ASSERT(false);
}
}
} else if (m_has_focus_state_changed) {
m_has_focus_state_changed = false;
return AppletMessage::FocusStateChanged;
}
}
if (m_has_requested_request_to_prepare_sleep != m_has_acknowledged_request_to_prepare_sleep) {
m_has_acknowledged_request_to_prepare_sleep = true;
return AppletMessage::RequestToPrepareSleep;
}
if (m_requested_request_to_display_state != m_acknowledged_request_to_display_state) {
m_acknowledged_request_to_display_state = m_requested_request_to_display_state;
return AppletMessage::RequestToDisplay;
}
if (m_has_operation_mode_changed) {
m_has_operation_mode_changed = false;
return AppletMessage::OperationModeChanged;
}
if (m_has_performance_mode_changed) {
m_has_performance_mode_changed = false;
return AppletMessage::PerformanceModeChanged;
}
if (m_has_sd_card_removed) {
m_has_sd_card_removed = false;
return AppletMessage::SdCardRemoved;
}
if (m_has_sleep_required_by_high_temperature) {
m_has_sleep_required_by_high_temperature = false;
return AppletMessage::SleepRequiredByHighTemperature;
}
if (m_has_sleep_required_by_low_battery) {
m_has_sleep_required_by_low_battery = false;
return AppletMessage::SleepRequiredByLowBattery;
}
if (m_has_auto_power_down) {
m_has_auto_power_down = false;
return AppletMessage::AutoPowerDown;
}
if (m_has_album_screen_shot_taken) {
m_has_album_screen_shot_taken = false;
return AppletMessage::AlbumScreenShotTaken;
}
if (m_has_album_recording_saved) {
m_has_album_recording_saved = false;
return AppletMessage::AlbumRecordingSaved;
}
if (!m_unordered_messages.empty()) {
const auto message = m_unordered_messages.front();
m_unordered_messages.pop_front();
return message;
}
return AppletMessage::None;
}
bool LifecycleManager::ShouldSignalSystemEvent() {
if (m_focus_state_changed_notification_enabled) {
if (!m_is_application) {
if (m_requested_focus_state != m_acknowledged_focus_state) {
return true;
}
} else if (m_has_focus_state_changed) {
return true;
}
}
return !m_unordered_messages.empty() || m_has_resume ||
(m_has_requested_exit != m_has_acknowledged_exit) ||
(m_has_requested_request_to_prepare_sleep !=
m_has_acknowledged_request_to_prepare_sleep) ||
m_has_operation_mode_changed || m_has_performance_mode_changed ||
m_has_sd_card_removed || m_has_sleep_required_by_high_temperature ||
m_has_sleep_required_by_low_battery || m_has_auto_power_down ||
(m_requested_request_to_display_state != m_acknowledged_request_to_display_state) ||
m_has_album_screen_shot_taken || m_has_album_recording_saved;
}
void LifecycleManager::OnOperationAndPerformanceModeChanged() {
if (m_operation_mode_changed_notification_enabled) {
m_has_operation_mode_changed = true;
}
if (m_performance_mode_changed_notification_enabled) {
m_has_performance_mode_changed = true;
}
m_operation_mode_changed_system_event.Signal();
this->SignalSystemEventIfNeeded();
}
void LifecycleManager::SignalSystemEventIfNeeded() {
// Check our cached value for the system event.
const bool applet_message_available = m_applet_message_available;
// If it's not current, we need to do an update, either clearing or signaling.
if (applet_message_available != this->ShouldSignalSystemEvent()) {
if (!applet_message_available) {
m_system_event.Signal();
m_applet_message_available = true;
} else {
m_system_event.Clear();
m_applet_message_available = false;
}
}
}
bool LifecycleManager::PopMessage(AppletMessage* out_message) {
const auto message = this->PopMessageInOrderOfPriority();
this->SignalSystemEventIfNeeded();
*out_message = message;
return message != AppletMessage::None;
}
void LifecycleManager::SetFocusHandlingMode(bool suspend) {
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
case FocusHandlingMode::SuspendHomeSleep:
if (!suspend) {
// Disallow suspension.
m_focus_handling_mode = FocusHandlingMode::NoSuspend;
}
break;
case FocusHandlingMode::NoSuspend:
if (suspend) {
// Allow suspension temporally.
m_focus_handling_mode = FocusHandlingMode::SuspendHomeSleep;
}
break;
}
}
void LifecycleManager::SetOutOfFocusSuspendingEnabled(bool enabled) {
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
if (!enabled) {
// Allow suspension temporally.
m_focus_handling_mode = FocusHandlingMode::SuspendHomeSleep;
}
break;
case FocusHandlingMode::SuspendHomeSleep:
case FocusHandlingMode::NoSuspend:
if (enabled) {
// Allow suspension.
m_focus_handling_mode = FocusHandlingMode::AlwaysSuspend;
}
break;
}
}
void LifecycleManager::RemoveForceResumeIfPossible() {
// If resume is not forced, we have nothing to do.
if (m_suspend_mode != SuspendMode::ForceResume) {
return;
}
// Check activity state.
// If we are already resumed, we can remove the forced state.
switch (m_activity_state) {
case ActivityState::ForegroundVisible:
case ActivityState::ForegroundObscured:
m_suspend_mode = SuspendMode::NoOverride;
return;
default:
break;
}
// Check focus handling mode.
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
case FocusHandlingMode::SuspendHomeSleep:
// If the applet allows suspension, we can remove the forced state.
m_suspend_mode = SuspendMode::NoOverride;
break;
case FocusHandlingMode::NoSuspend:
// If the applet is not an application, we can remove the forced state.
// Only applications can be forced to resume.
if (!m_is_application) {
m_suspend_mode = SuspendMode::NoOverride;
}
}
}
bool LifecycleManager::IsRunnable() const {
// If suspend is forced, return that.
if (m_forced_suspend) {
return false;
}
// Check suspend mode override.
switch (m_suspend_mode) {
case SuspendMode::NoOverride:
// Continue processing.
break;
case SuspendMode::ForceResume:
// The applet is runnable during forced resumption when its exit is requested.
return m_has_requested_exit;
case SuspendMode::ForceSuspend:
// The applet is never runnable during forced suspension.
return false;
}
// Always run if exit is requested.
if (m_has_requested_exit) {
return true;
}
if (m_activity_state == ActivityState::ForegroundVisible) {
// The applet is runnable now.
return true;
}
if (m_activity_state == ActivityState::ForegroundObscured) {
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
// The applet is not runnable while running the applet.
return false;
case FocusHandlingMode::SuspendHomeSleep:
// The applet is runnable while running the applet.
return true;
case FocusHandlingMode::NoSuspend:
// The applet is always runnable.
return true;
}
}
// The activity is a suspended one.
// The applet should be suspended unless it has disabled suspension.
return m_focus_handling_mode == FocusHandlingMode::NoSuspend;
}
FocusState LifecycleManager::GetFocusStateWhileForegroundObscured() const {
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
// The applet never learns it has lost focus.
return FocusState::InFocus;
case FocusHandlingMode::SuspendHomeSleep:
// The applet learns it has lost focus when launching a child applet.
return FocusState::NotInFocus;
case FocusHandlingMode::NoSuspend:
// The applet always learns it has lost focus.
return FocusState::NotInFocus;
default:
UNREACHABLE();
}
}
FocusState LifecycleManager::GetFocusStateWhileBackground(bool is_obscured) const {
switch (m_focus_handling_mode) {
case FocusHandlingMode::AlwaysSuspend:
// The applet never learns it has lost focus.
return FocusState::InFocus;
case FocusHandlingMode::SuspendHomeSleep:
// The applet learns it has lost focus when launching a child applet.
return is_obscured ? FocusState::NotInFocus : FocusState::InFocus;
case FocusHandlingMode::NoSuspend:
// The applet always learns it has lost focus.
return m_is_application ? FocusState::Background : FocusState::NotInFocus;
default:
UNREACHABLE();
}
}
bool LifecycleManager::UpdateRequestedFocusState() {
FocusState new_state{};
if (m_suspend_mode == SuspendMode::NoOverride) {
// With no forced suspend or resume, we take the focus state designated
// by the combination of the activity flag and the focus handling mode.
switch (m_activity_state) {
case ActivityState::ForegroundVisible:
new_state = FocusState::InFocus;
break;
case ActivityState::ForegroundObscured:
new_state = this->GetFocusStateWhileForegroundObscured();
break;
case ActivityState::BackgroundVisible:
new_state = this->GetFocusStateWhileBackground(false);
break;
case ActivityState::BackgroundObscured:
new_state = this->GetFocusStateWhileBackground(true);
break;
default:
UNREACHABLE();
}
} else {
// With forced suspend or resume, the applet is guaranteed to be background.
new_state = this->GetFocusStateWhileBackground(false);
}
if (new_state != m_requested_focus_state) {
// Mark the focus state as ready for update.
m_requested_focus_state = new_state;
// We changed the focus state.
return true;
}
// We didn't change the focus state.
return false;
}
} // namespace Service::AM

View File

@ -1,183 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <list>
#include "core/hle/service/am/am_types.h"
#include "core/hle/service/os/event.h"
namespace Core {
class System;
}
namespace Service::AM {
enum class ActivityState : u32 {
ForegroundVisible = 0,
ForegroundObscured = 1,
BackgroundVisible = 2,
BackgroundObscured = 3,
};
enum class FocusHandlingMode : u32 {
AlwaysSuspend = 0,
SuspendHomeSleep = 1,
NoSuspend = 2,
};
enum class SuspendMode : u32 {
NoOverride = 0,
ForceResume = 1,
ForceSuspend = 2,
};
class LifecycleManager {
public:
explicit LifecycleManager(Core::System& system, KernelHelpers::ServiceContext& context,
bool is_application);
~LifecycleManager();
public:
Event& GetSystemEvent();
Event& GetOperationModeChangedSystemEvent();
public:
bool IsApplication() {
return m_is_application;
}
bool GetForcedSuspend() {
return m_forced_suspend;
}
bool GetExitRequested() {
return m_has_requested_exit;
}
ActivityState GetActivityState() {
return m_activity_state;
}
FocusState GetAndClearFocusState() {
m_acknowledged_focus_state = m_requested_focus_state;
return m_acknowledged_focus_state;
}
void SetFocusState(FocusState state) {
if (m_requested_focus_state != state) {
m_has_focus_state_changed = true;
}
m_requested_focus_state = state;
this->SignalSystemEventIfNeeded();
}
void RequestExit() {
m_has_requested_exit = true;
this->SignalSystemEventIfNeeded();
}
void RequestResumeNotification() {
// NOTE: this appears to be a bug in am.
// If an applet makes a concurrent request to receive resume notifications
// while it is being suspended, the first resume notification will be lost.
// This is not the case with other notification types.
if (m_resume_notification_enabled) {
m_has_resume = true;
}
}
void OnOperationAndPerformanceModeChanged();
public:
void SetFocusStateChangedNotificationEnabled(bool enabled) {
m_focus_state_changed_notification_enabled = enabled;
this->SignalSystemEventIfNeeded();
}
void SetOperationModeChangedNotificationEnabled(bool enabled) {
m_operation_mode_changed_notification_enabled = enabled;
this->SignalSystemEventIfNeeded();
}
void SetPerformanceModeChangedNotificationEnabled(bool enabled) {
m_performance_mode_changed_notification_enabled = enabled;
this->SignalSystemEventIfNeeded();
}
void SetResumeNotificationEnabled(bool enabled) {
m_resume_notification_enabled = enabled;
}
void SetActivityState(ActivityState state) {
m_activity_state = state;
}
void SetSuspendMode(SuspendMode mode) {
m_suspend_mode = mode;
}
void SetForcedSuspend(bool enabled) {
m_forced_suspend = enabled;
}
public:
void SetFocusHandlingMode(bool suspend);
void SetOutOfFocusSuspendingEnabled(bool enabled);
void RemoveForceResumeIfPossible();
bool IsRunnable() const;
bool UpdateRequestedFocusState();
void SignalSystemEventIfNeeded();
public:
void PushUnorderedMessage(AppletMessage message);
bool PopMessage(AppletMessage* out_message);
private:
FocusState GetFocusStateWhileForegroundObscured() const;
FocusState GetFocusStateWhileBackground(bool is_obscured) const;
private:
AppletMessage PopMessageInOrderOfPriority();
bool ShouldSignalSystemEvent();
private:
Event m_system_event;
Event m_operation_mode_changed_system_event;
std::list<AppletMessage> m_unordered_messages{};
bool m_is_application{};
bool m_focus_state_changed_notification_enabled{true};
bool m_operation_mode_changed_notification_enabled{true};
bool m_performance_mode_changed_notification_enabled{true};
bool m_resume_notification_enabled{};
bool m_requested_request_to_display_state{};
bool m_acknowledged_request_to_display_state{};
bool m_has_resume{};
bool m_has_focus_state_changed{true};
bool m_has_album_recording_saved{};
bool m_has_album_screen_shot_taken{};
bool m_has_auto_power_down{};
bool m_has_sleep_required_by_low_battery{};
bool m_has_sleep_required_by_high_temperature{};
bool m_has_sd_card_removed{};
bool m_has_performance_mode_changed{};
bool m_has_operation_mode_changed{};
bool m_has_requested_request_to_prepare_sleep{};
bool m_has_acknowledged_request_to_prepare_sleep{};
bool m_has_requested_exit{};
bool m_has_acknowledged_exit{};
bool m_applet_message_available{};
bool m_forced_suspend{};
FocusHandlingMode m_focus_handling_mode{FocusHandlingMode::SuspendHomeSleep};
ActivityState m_activity_state{ActivityState::ForegroundVisible};
SuspendMode m_suspend_mode{SuspendMode::NoOverride};
FocusState m_requested_focus_state{};
FocusState m_acknowledged_focus_state{};
};
} // namespace Service::AM

View File

@ -3,25 +3,66 @@
#include "common/scope_exit.h" #include "common/scope_exit.h"
#include "core/file_sys/content_archive.h"
#include "core/file_sys/nca_metadata.h"
#include "core/file_sys/registered_cache.h"
#include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/svc_types.h" #include "core/hle/service/am/process.h"
#include "core/hle/service/os/process.h" #include "core/hle/service/filesystem/filesystem.h"
#include "core/loader/loader.h" #include "core/loader/loader.h"
namespace Service { namespace Service::AM {
Process::Process(Core::System& system) Process::Process(Core::System& system)
: m_system(system), m_process(), m_main_thread_priority(), m_main_thread_stack_size(), : m_system(system), m_process(), m_main_thread_priority(), m_main_thread_stack_size(),
m_process_started() {} m_program_id(), m_process_started() {}
Process::~Process() { Process::~Process() {
this->Finalize(); this->Finalize();
} }
bool Process::Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result) { bool Process::Initialize(u64 program_id, u8 minimum_key_generation, u8 maximum_key_generation) {
// First, ensure we are not holding another process. // First, ensure we are not holding another process.
this->Finalize(); this->Finalize();
// Get the filesystem controller.
auto& fsc = m_system.GetFileSystemController();
// Attempt to load program NCA.
const FileSys::RegisteredCache* bis_system{};
FileSys::VirtualFile nca_raw{};
// Get the program NCA from built-in storage.
bis_system = fsc.GetSystemNANDContents();
if (bis_system) {
nca_raw = bis_system->GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
}
// Ensure we retrieved a program NCA.
if (!nca_raw) {
return false;
}
// Ensure we have a suitable version.
if (minimum_key_generation > 0) {
FileSys::NCA nca(nca_raw);
if (nca.GetStatus() == Loader::ResultStatus::Success &&
(nca.GetKeyGeneration() < minimum_key_generation ||
nca.GetKeyGeneration() > maximum_key_generation)) {
LOG_WARNING(Service_LDR, "Skipping program {:016X} with generation {}", program_id,
nca.GetKeyGeneration());
return false;
}
}
// Get the appropriate loader to parse this NCA.
auto app_loader = Loader::GetLoader(m_system, nca_raw, program_id, 0);
// Ensure we have a loader which can parse the NCA.
if (!app_loader) {
return false;
}
// Create the process. // Create the process.
auto* const process = Kernel::KProcess::Create(m_system.Kernel()); auto* const process = Kernel::KProcess::Create(m_system.Kernel());
Kernel::KProcess::Register(m_system.Kernel(), process); Kernel::KProcess::Register(m_system.Kernel(), process);
@ -32,8 +73,7 @@ bool Process::Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_lo
}; };
// Insert process modules into memory. // Insert process modules into memory.
const auto [load_result, load_parameters] = loader.Load(*process, m_system); const auto [load_result, load_parameters] = app_loader->Load(*process, m_system);
out_load_result = load_result;
// Ensure loading was successful. // Ensure loading was successful.
if (load_result != Loader::ResultStatus::Success) { if (load_result != Loader::ResultStatus::Success) {
@ -74,6 +114,7 @@ void Process::Finalize() {
m_process = nullptr; m_process = nullptr;
m_main_thread_priority = 0; m_main_thread_priority = 0;
m_main_thread_stack_size = 0; m_main_thread_stack_size = 0;
m_program_id = 0;
m_process_started = false; m_process_started = false;
} }
@ -101,31 +142,6 @@ void Process::Terminate() {
} }
} }
void Process::ResetSignal() {
if (m_process) {
m_process->Reset();
}
}
bool Process::IsRunning() const {
if (m_process) {
const auto state = m_process->GetState();
return state == Kernel::KProcess::State::Running ||
state == Kernel::KProcess::State::RunningAttached ||
state == Kernel::KProcess::State::DebugBreak;
}
return false;
}
bool Process::IsTerminated() const {
if (m_process) {
return m_process->IsTerminated();
}
return false;
}
u64 Process::GetProcessId() const { u64 Process::GetProcessId() const {
if (m_process) { if (m_process) {
return m_process->GetProcessId(); return m_process->GetProcessId();
@ -134,19 +150,4 @@ u64 Process::GetProcessId() const {
return 0; return 0;
} }
u64 Process::GetProgramId() const { } // namespace Service::AM
if (m_process) {
return m_process->GetProgramId();
}
return 0;
}
void Process::Suspend(bool suspended) {
if (m_process) {
m_process->SetActivity(suspended ? Kernel::Svc::ProcessActivity::Paused
: Kernel::Svc::ProcessActivity::Runnable);
}
}
} // namespace Service

View File

@ -3,47 +3,38 @@
#pragma once #pragma once
#include "common/common_funcs.h"
#include "common/common_types.h" #include "common/common_types.h"
namespace Core {
class System;
}
namespace Loader {
class AppLoader;
enum class ResultStatus : u16;
} // namespace Loader
namespace Kernel { namespace Kernel {
class KProcess; class KProcess;
} }
namespace Service { namespace Core {
class System;
}
namespace Service::AM {
class Process { class Process {
public: public:
explicit Process(Core::System& system); explicit Process(Core::System& system);
~Process(); ~Process();
bool Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result); bool Initialize(u64 program_id, u8 minimum_key_generation, u8 maximum_key_generation);
void Finalize(); void Finalize();
bool Run(); bool Run();
void Terminate(); void Terminate();
void Suspend(bool suspended);
void ResetSignal();
bool IsInitialized() const { bool IsInitialized() const {
return m_process != nullptr; return m_process != nullptr;
} }
bool IsRunning() const;
bool IsTerminated() const;
u64 GetProcessId() const; u64 GetProcessId() const;
u64 GetProgramId() const; u64 GetProgramId() const {
return m_program_id;
Kernel::KProcess* GetHandle() const { }
Kernel::KProcess* GetProcess() const {
return m_process; return m_process;
} }
@ -52,7 +43,8 @@ private:
Kernel::KProcess* m_process{}; Kernel::KProcess* m_process{};
s32 m_main_thread_priority{}; s32 m_main_thread_priority{};
u64 m_main_thread_stack_size{}; u64 m_main_thread_stack_size{};
u64 m_program_id{};
bool m_process_started{}; bool m_process_started{};
}; };
} // namespace Service } // namespace Service::AM

View File

@ -1,130 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/core.h"
#include "core/file_sys/content_archive.h"
#include "core/file_sys/nca_metadata.h"
#include "core/file_sys/patch_manager.h"
#include "core/file_sys/registered_cache.h"
#include "core/file_sys/romfs_factory.h"
#include "core/hle/service/am/process_creation.h"
#include "core/hle/service/glue/glue_manager.h"
#include "core/hle/service/os/process.h"
#include "core/loader/loader.h"
namespace Service::AM {
namespace {
FileSys::StorageId GetStorageIdForFrontendSlot(
std::optional<FileSys::ContentProviderUnionSlot> slot) {
if (!slot.has_value()) {
return FileSys::StorageId::None;
}
switch (*slot) {
case FileSys::ContentProviderUnionSlot::UserNAND:
return FileSys::StorageId::NandUser;
case FileSys::ContentProviderUnionSlot::SysNAND:
return FileSys::StorageId::NandSystem;
case FileSys::ContentProviderUnionSlot::SDMC:
return FileSys::StorageId::SdCard;
case FileSys::ContentProviderUnionSlot::FrontendManual:
return FileSys::StorageId::Host;
default:
return FileSys::StorageId::None;
}
}
std::unique_ptr<Process> CreateProcessImpl(std::unique_ptr<Loader::AppLoader>& out_loader,
Loader::ResultStatus& out_load_result,
Core::System& system, FileSys::VirtualFile file,
u64 program_id, u64 program_index) {
// Get the appropriate loader to parse this NCA.
out_loader = Loader::GetLoader(system, file, program_id, program_index);
// Ensure we have a loader which can parse the NCA.
if (!out_loader) {
return nullptr;
}
// Try to load the process.
auto process = std::make_unique<Process>(system);
if (process->Initialize(*out_loader, out_load_result)) {
return process;
}
return nullptr;
}
} // Anonymous namespace
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
u8 minimum_key_generation, u8 maximum_key_generation) {
// Attempt to load program NCA.
FileSys::VirtualFile nca_raw{};
// Get the program NCA from storage.
auto& storage = system.GetContentProviderUnion();
nca_raw = storage.GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
// Ensure we retrieved a program NCA.
if (!nca_raw) {
return nullptr;
}
// Ensure we have a suitable version.
if (minimum_key_generation > 0) {
FileSys::NCA nca(nca_raw);
if (nca.GetStatus() == Loader::ResultStatus::Success &&
(nca.GetKeyGeneration() < minimum_key_generation ||
nca.GetKeyGeneration() > maximum_key_generation)) {
LOG_WARNING(Service_LDR, "Skipping program {:016X} with generation {}", program_id,
nca.GetKeyGeneration());
return nullptr;
}
}
std::unique_ptr<Loader::AppLoader> loader;
Loader::ResultStatus status;
return CreateProcessImpl(loader, status, system, nca_raw, program_id, 0);
}
std::unique_ptr<Process> CreateApplicationProcess(std::vector<u8>& out_control,
std::unique_ptr<Loader::AppLoader>& out_loader,
Loader::ResultStatus& out_load_result,
Core::System& system, FileSys::VirtualFile file,
u64 program_id, u64 program_index) {
auto process =
CreateProcessImpl(out_loader, out_load_result, system, file, program_id, program_index);
if (!process) {
return nullptr;
}
FileSys::NACP nacp;
if (out_loader->ReadControlData(nacp) == Loader::ResultStatus::Success) {
out_control = nacp.GetRawBytes();
} else {
out_control.resize(sizeof(FileSys::RawNACP));
}
auto& storage = system.GetContentProviderUnion();
Service::Glue::ApplicationLaunchProperty launch{};
launch.title_id = process->GetProgramId();
FileSys::PatchManager pm{launch.title_id, system.GetFileSystemController(), storage};
launch.version = pm.GetGameVersion().value_or(0);
// TODO(DarkLordZach): When FSController/Game Card Support is added, if
// current_process_game_card use correct StorageId
launch.base_game_storage_id = GetStorageIdForFrontendSlot(
storage.GetSlotForEntry(launch.title_id, FileSys::ContentRecordType::Program));
launch.update_storage_id = GetStorageIdForFrontendSlot(storage.GetSlotForEntry(
FileSys::GetUpdateTitleID(launch.title_id), FileSys::ContentRecordType::Program));
system.GetARPManager().Register(launch.title_id, launch, out_control);
return process;
}
} // namespace Service::AM

View File

@ -1,35 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <memory>
#include <vector>
#include "common/common_types.h"
#include "core/file_sys/vfs/vfs_types.h"
namespace Core {
class System;
}
namespace Loader {
class AppLoader;
enum class ResultStatus : u16;
} // namespace Loader
namespace Service {
class Process;
}
namespace Service::AM {
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
u8 minimum_key_generation, u8 maximum_key_generation);
std::unique_ptr<Process> CreateApplicationProcess(std::vector<u8>& out_control,
std::unique_ptr<Loader::AppLoader>& out_loader,
Loader::ResultStatus& out_load_result,
Core::System& system, FileSys::VirtualFile file,
u64 program_id, u64 program_index);
} // namespace Service::AM

View File

@ -1,15 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/hle/kernel/k_process.h"
#include "core/hle/service/am/process_holder.h"
#include "core/hle/service/os/process.h"
namespace Service::AM {
ProcessHolder::ProcessHolder(Applet& applet, Process& process)
: MultiWaitHolder(process.GetHandle()), m_applet(applet), m_process(process) {}
ProcessHolder::~ProcessHolder() = default;
} // namespace Service::AM

View File

@ -1,34 +0,0 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "core/hle/service/os/multi_wait_holder.h"
namespace Service {
class Process;
}
namespace Service::AM {
struct Applet;
class ProcessHolder : public MultiWaitHolder, public Common::IntrusiveListBaseNode<ProcessHolder> {
public:
explicit ProcessHolder(Applet& applet, Process& process);
~ProcessHolder();
Applet& GetApplet() const {
return m_applet;
}
Process& GetProcess() const {
return m_process;
}
private:
Applet& m_applet;
Process& m_process;
};
} // namespace Service::AM

View File

@ -6,14 +6,12 @@
#include "core/hle/service/am/service/all_system_applet_proxies_service.h" #include "core/hle/service/am/service/all_system_applet_proxies_service.h"
#include "core/hle/service/am/service/library_applet_proxy.h" #include "core/hle/service/am/service/library_applet_proxy.h"
#include "core/hle/service/am/service/system_applet_proxy.h" #include "core/hle/service/am/service/system_applet_proxy.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
namespace Service::AM { namespace Service::AM {
IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& system_, IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& system_)
WindowSystem& window_system) : ServiceFramework{system_, "appletAE"} {
: ServiceFramework{system_, "appletAE"}, m_window_system{window_system} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"}, {100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"},
@ -38,8 +36,8 @@ Result IAllSystemAppletProxiesService::OpenSystemAppletProxy(
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
if (const auto applet = this->GetAppletFromProcessId(pid); applet) { if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
*out_system_applet_proxy = std::make_shared<ISystemAppletProxy>( *out_system_applet_proxy =
system, applet, process_handle.Get(), m_window_system); std::make_shared<ISystemAppletProxy>(system, applet, process_handle.Get());
R_SUCCEED(); R_SUCCEED();
} else { } else {
UNIMPLEMENTED(); UNIMPLEMENTED();
@ -54,8 +52,8 @@ Result IAllSystemAppletProxiesService::OpenLibraryAppletProxy(
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
if (const auto applet = this->GetAppletFromProcessId(pid); applet) { if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
*out_library_applet_proxy = std::make_shared<ILibraryAppletProxy>( *out_library_applet_proxy =
system, applet, process_handle.Get(), m_window_system); std::make_shared<ILibraryAppletProxy>(system, applet, process_handle.Get());
R_SUCCEED(); R_SUCCEED();
} else { } else {
UNIMPLEMENTED(); UNIMPLEMENTED();
@ -75,7 +73,7 @@ Result IAllSystemAppletProxiesService::OpenLibraryAppletProxyOld(
std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId( std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId(
ProcessId process_id) { ProcessId process_id) {
return m_window_system.GetByAppletResourceUserId(process_id.pid); return system.GetAppletManager().GetByAppletResourceUserId(process_id.pid);
} }
} // namespace Service::AM } // namespace Service::AM

View File

@ -14,12 +14,11 @@ struct Applet;
struct AppletAttribute; struct AppletAttribute;
class ILibraryAppletProxy; class ILibraryAppletProxy;
class ISystemAppletProxy; class ISystemAppletProxy;
class WindowSystem;
class IAllSystemAppletProxiesService final class IAllSystemAppletProxiesService final
: public ServiceFramework<IAllSystemAppletProxiesService> { : public ServiceFramework<IAllSystemAppletProxiesService> {
public: public:
explicit IAllSystemAppletProxiesService(Core::System& system_, WindowSystem& window_system); explicit IAllSystemAppletProxiesService(Core::System& system_);
~IAllSystemAppletProxiesService() override; ~IAllSystemAppletProxiesService() override;
private: private:
@ -36,8 +35,6 @@ private:
private: private:
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid); std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);
WindowSystem& m_window_system;
}; };
} // namespace AM } // namespace AM

View File

@ -19,7 +19,7 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
{21, nullptr, "TryPopFromAppletBoundChannel"}, {21, nullptr, "TryPopFromAppletBoundChannel"},
{40, nullptr, "GetDisplayLogicalResolution"}, {40, nullptr, "GetDisplayLogicalResolution"},
{42, nullptr, "SetDisplayMagnification"}, {42, nullptr, "SetDisplayMagnification"},
{50, D<&IAppletCommonFunctions::SetHomeButtonDoubleClickEnabled>, "SetHomeButtonDoubleClickEnabled"}, {50, nullptr, "SetHomeButtonDoubleClickEnabled"},
{51, D<&IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled>, "GetHomeButtonDoubleClickEnabled"}, {51, D<&IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled>, "GetHomeButtonDoubleClickEnabled"},
{52, nullptr, "IsHomeButtonShortPressedBlocked"}, {52, nullptr, "IsHomeButtonShortPressedBlocked"},
{60, nullptr, "IsVrModeCurtainRequired"}, {60, nullptr, "IsVrModeCurtainRequired"},
@ -40,13 +40,6 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
IAppletCommonFunctions::~IAppletCommonFunctions() = default; IAppletCommonFunctions::~IAppletCommonFunctions() = default;
Result IAppletCommonFunctions::SetHomeButtonDoubleClickEnabled(
bool home_button_double_click_enabled) {
LOG_WARNING(Service_AM, "(STUBBED) called, home_button_double_click_enabled={}",
home_button_double_click_enabled);
R_SUCCEED();
}
Result IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled( Result IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled(
Out<bool> out_home_button_double_click_enabled) { Out<bool> out_home_button_double_click_enabled) {
LOG_WARNING(Service_AM, "(STUBBED) called"); LOG_WARNING(Service_AM, "(STUBBED) called");

View File

@ -16,7 +16,6 @@ public:
~IAppletCommonFunctions() override; ~IAppletCommonFunctions() override;
private: private:
Result SetHomeButtonDoubleClickEnabled(bool home_button_double_click_enabled);
Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled); Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled);
Result SetCpuBoostRequestPriority(s32 priority); Result SetCpuBoostRequestPriority(s32 priority);
Result GetCurrentApplicationId(Out<u64> out_application_id); Result GetCurrentApplicationId(Out<u64> out_application_id);

View File

@ -9,16 +9,12 @@
#include "core/hle/service/am/service/application_accessor.h" #include "core/hle/service/am/service/application_accessor.h"
#include "core/hle/service/am/service/library_applet_accessor.h" #include "core/hle/service/am/service/library_applet_accessor.h"
#include "core/hle/service/am/service/storage.h" #include "core/hle/service/am/service/storage.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/glue/glue_manager.h"
namespace Service::AM { namespace Service::AM {
IApplicationAccessor::IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet, IApplicationAccessor::IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet)
WindowSystem& window_system) : ServiceFramework{system_, "IApplicationAccessor"}, m_applet(std::move(applet)) {
: ServiceFramework{system_, "IApplicationAccessor"}, m_window_system(window_system),
m_applet(std::move(applet)) {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&IApplicationAccessor::GetAppletStateChangedEvent>, "GetAppletStateChangedEvent"}, {0, D<&IApplicationAccessor::GetAppletStateChangedEvent>, "GetAppletStateChangedEvent"},
@ -63,15 +59,7 @@ Result IApplicationAccessor::Start() {
Result IApplicationAccessor::RequestExit() { Result IApplicationAccessor::RequestExit() {
LOG_INFO(Service_AM, "called"); LOG_INFO(Service_AM, "called");
m_applet->message_queue.RequestExit();
std::scoped_lock lk{m_applet->lock};
if (m_applet->exit_locked) {
m_applet->lifecycle_manager.RequestExit();
m_applet->UpdateSuspensionStateLocked(true);
} else {
m_applet->process->Terminate();
}
R_SUCCEED(); R_SUCCEED();
} }
@ -83,14 +71,13 @@ Result IApplicationAccessor::Terminate() {
Result IApplicationAccessor::GetResult() { Result IApplicationAccessor::GetResult() {
LOG_INFO(Service_AM, "called"); LOG_INFO(Service_AM, "called");
std::scoped_lock lk{m_applet->lock}; R_SUCCEED();
R_RETURN(m_applet->terminate_result);
} }
Result IApplicationAccessor::GetAppletStateChangedEvent( Result IApplicationAccessor::GetAppletStateChangedEvent(
OutCopyHandle<Kernel::KReadableEvent> out_event) { OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_INFO(Service_AM, "called"); LOG_INFO(Service_AM, "called");
*out_event = m_applet->state_changed_event.GetHandle(); *out_event = m_applet->caller_applet_broker->GetStateChangedEvent().GetHandle();
R_SUCCEED(); R_SUCCEED();
} }
@ -109,15 +96,8 @@ Result IApplicationAccessor::PushLaunchParameter(LaunchParameterKind kind,
Result IApplicationAccessor::GetApplicationControlProperty( Result IApplicationAccessor::GetApplicationControlProperty(
OutBuffer<BufferAttr_HipcMapAlias> out_control_property) { OutBuffer<BufferAttr_HipcMapAlias> out_control_property) {
LOG_INFO(Service_AM, "called"); LOG_WARNING(Service_AM, "(STUBBED) called");
R_THROW(ResultUnknown);
std::vector<u8> nacp;
R_TRY(system.GetARPManager().GetControlProperty(&nacp, m_applet->program_id));
std::memcpy(out_control_property.data(), nacp.data(),
std::min(out_control_property.size(), nacp.size()));
R_SUCCEED();
} }
Result IApplicationAccessor::SetUsers(bool enable, Result IApplicationAccessor::SetUsers(bool enable,
@ -134,9 +114,8 @@ Result IApplicationAccessor::GetCurrentLibraryApplet(
} }
Result IApplicationAccessor::RequestForApplicationToGetForeground() { Result IApplicationAccessor::RequestForApplicationToGetForeground() {
LOG_INFO(Service_AM, "called"); LOG_WARNING(Service_AM, "(STUBBED) called");
m_window_system.RequestApplicationToGetForeground(); R_THROW(ResultUnknown);
R_SUCCEED();
} }
Result IApplicationAccessor::CheckRightsEnvironmentAvailable(Out<bool> out_is_available) { Result IApplicationAccessor::CheckRightsEnvironmentAvailable(Out<bool> out_is_available) {

View File

@ -13,12 +13,10 @@ namespace Service::AM {
struct Applet; struct Applet;
class ILibraryAppletAccessor; class ILibraryAppletAccessor;
class IStorage; class IStorage;
class WindowSystem;
class IApplicationAccessor final : public ServiceFramework<IApplicationAccessor> { class IApplicationAccessor final : public ServiceFramework<IApplicationAccessor> {
public: public:
explicit IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet, explicit IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet);
WindowSystem& window_system);
~IApplicationAccessor() override; ~IApplicationAccessor() override;
private: private:
@ -36,7 +34,6 @@ private:
Result GetNsRightsEnvironmentHandle(Out<u64> out_handle); Result GetNsRightsEnvironmentHandle(Out<u64> out_handle);
Result ReportApplicationExitTimeout(); Result ReportApplicationExitTimeout();
WindowSystem& m_window_system;
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
}; };

View File

@ -1,57 +1,17 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "core/file_sys/nca_metadata.h"
#include "core/file_sys/registered_cache.h"
#include "core/hle/service/am/am_types.h" #include "core/hle/service/am/am_types.h"
#include "core/hle/service/am/applet.h" #include "core/hle/service/am/applet.h"
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
#include "core/hle/service/am/process_creation.h"
#include "core/hle/service/am/service/application_accessor.h" #include "core/hle/service/am/service/application_accessor.h"
#include "core/hle/service/am/service/application_creator.h" #include "core/hle/service/am/service/application_creator.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
#include "core/loader/loader.h"
namespace Service::AM { namespace Service::AM {
namespace { IApplicationCreator::IApplicationCreator(Core::System& system_)
: ServiceFramework{system_, "IApplicationCreator"} {
Result CreateGuestApplication(SharedPointer<IApplicationAccessor>* out_application_accessor,
Core::System& system, WindowSystem& window_system, u64 program_id) {
FileSys::VirtualFile nca_raw{};
// Get the program NCA from storage.
auto& storage = system.GetContentProviderUnion();
nca_raw = storage.GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
// Ensure we retrieved a program NCA.
R_UNLESS(nca_raw != nullptr, ResultUnknown);
std::vector<u8> control;
std::unique_ptr<Loader::AppLoader> loader;
Loader::ResultStatus result;
auto process =
CreateApplicationProcess(control, loader, result, system, nca_raw, program_id, 0);
R_UNLESS(process != nullptr, ResultUnknown);
const auto applet = std::make_shared<Applet>(system, std::move(process), true);
applet->program_id = program_id;
applet->applet_id = AppletId::Application;
applet->type = AppletType::Application;
applet->library_applet_mode = LibraryAppletMode::AllForeground;
window_system.TrackApplet(applet, true);
*out_application_accessor =
std::make_shared<IApplicationAccessor>(system, applet, window_system);
R_SUCCEED();
}
} // namespace
IApplicationCreator::IApplicationCreator(Core::System& system_, WindowSystem& window_system)
: ServiceFramework{system_, "IApplicationCreator"}, m_window_system{window_system} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&IApplicationCreator::CreateApplication>, "CreateApplication"}, {0, D<&IApplicationCreator::CreateApplication>, "CreateApplication"},
@ -68,9 +28,8 @@ IApplicationCreator::~IApplicationCreator() = default;
Result IApplicationCreator::CreateApplication( Result IApplicationCreator::CreateApplication(
Out<SharedPointer<IApplicationAccessor>> out_application_accessor, u64 application_id) { Out<SharedPointer<IApplicationAccessor>> out_application_accessor, u64 application_id) {
LOG_INFO(Service_NS, "called, application_id={:016X}", application_id); LOG_ERROR(Service_NS, "called, application_id={:x}", application_id);
R_RETURN( R_THROW(ResultUnknown);
CreateGuestApplication(out_application_accessor, system, m_window_system, application_id));
} }
} // namespace Service::AM } // namespace Service::AM

View File

@ -10,17 +10,14 @@ namespace Service::AM {
class IApplicationAccessor; class IApplicationAccessor;
struct Applet; struct Applet;
class WindowSystem;
class IApplicationCreator final : public ServiceFramework<IApplicationCreator> { class IApplicationCreator final : public ServiceFramework<IApplicationCreator> {
public: public:
explicit IApplicationCreator(Core::System& system_, WindowSystem& window_system); explicit IApplicationCreator(Core::System& system_);
~IApplicationCreator() override; ~IApplicationCreator() override;
private: private:
Result CreateApplication(Out<SharedPointer<IApplicationAccessor>>, u64 application_id); Result CreateApplication(Out<SharedPointer<IApplicationAccessor>>, u64 application_id);
WindowSystem& m_window_system;
}; };
} // namespace Service::AM } // namespace Service::AM

View File

@ -181,8 +181,7 @@ Result IApplicationFunctions::GetDesiredLanguage(Out<u64> out_language_code) {
} }
Result IApplicationFunctions::SetTerminateResult(Result terminate_result) { Result IApplicationFunctions::SetTerminateResult(Result terminate_result) {
LOG_INFO(Service_AM, "(STUBBED) called, result={:#x} ({:04}-{:04})", LOG_INFO(Service_AM, "(STUBBED) called, result={:#x} ({}-{})", terminate_result.GetInnerValue(),
terminate_result.GetInnerValue(),
static_cast<u32>(terminate_result.GetModule()) + 2000, static_cast<u32>(terminate_result.GetModule()) + 2000,
terminate_result.GetDescription()); terminate_result.GetDescription());

View File

@ -17,9 +17,9 @@
namespace Service::AM { namespace Service::AM {
IApplicationProxy::IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet, IApplicationProxy::IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
Kernel::KProcess* process, WindowSystem& window_system) Kernel::KProcess* process)
: ServiceFramework{system_, "IApplicationProxy"}, : ServiceFramework{system_, "IApplicationProxy"}, m_process{process}, m_applet{
m_window_system{window_system}, m_process{process}, m_applet{std::move(applet)} { std::move(applet)} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&IApplicationProxy::GetCommonStateGetter>, "GetCommonStateGetter"}, {0, D<&IApplicationProxy::GetCommonStateGetter>, "GetCommonStateGetter"},
@ -70,7 +70,7 @@ Result IApplicationProxy::GetDebugFunctions(
Result IApplicationProxy::GetWindowController( Result IApplicationProxy::GetWindowController(
Out<SharedPointer<IWindowController>> out_window_controller) { Out<SharedPointer<IWindowController>> out_window_controller) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_window_controller = std::make_shared<IWindowController>(system, m_applet, m_window_system); *out_window_controller = std::make_shared<IWindowController>(system, m_applet);
R_SUCCEED(); R_SUCCEED();
} }
@ -91,8 +91,7 @@ Result IApplicationProxy::GetCommonStateGetter(
Result IApplicationProxy::GetLibraryAppletCreator( Result IApplicationProxy::GetLibraryAppletCreator(
Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) { Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_library_applet_creator = *out_library_applet_creator = std::make_shared<ILibraryAppletCreator>(system, m_applet);
std::make_shared<ILibraryAppletCreator>(system, m_applet, m_window_system);
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -18,12 +18,11 @@ class ILibraryAppletCreator;
class IProcessWindingController; class IProcessWindingController;
class ISelfController; class ISelfController;
class IWindowController; class IWindowController;
class WindowSystem;
class IApplicationProxy final : public ServiceFramework<IApplicationProxy> { class IApplicationProxy final : public ServiceFramework<IApplicationProxy> {
public: public:
explicit IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet, explicit IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
Kernel::KProcess* process, WindowSystem& window_system); Kernel::KProcess* process);
~IApplicationProxy(); ~IApplicationProxy();
private: private:
@ -41,7 +40,6 @@ private:
Out<SharedPointer<IApplicationFunctions>> out_application_functions); Out<SharedPointer<IApplicationFunctions>> out_application_functions);
private: private:
WindowSystem& m_window_system;
Kernel::KProcess* const m_process; Kernel::KProcess* const m_process;
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
}; };

View File

@ -6,14 +6,12 @@
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
#include "core/hle/service/am/service/application_proxy.h" #include "core/hle/service/am/service/application_proxy.h"
#include "core/hle/service/am/service/application_proxy_service.h" #include "core/hle/service/am/service/application_proxy_service.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
namespace Service::AM { namespace Service::AM {
IApplicationProxyService::IApplicationProxyService(Core::System& system_, IApplicationProxyService::IApplicationProxyService(Core::System& system_)
WindowSystem& window_system) : ServiceFramework{system_, "appletOE"} {
: ServiceFramework{system_, "appletOE"}, m_window_system{window_system} {
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&IApplicationProxyService::OpenApplicationProxy>, "OpenApplicationProxy"}, {0, D<&IApplicationProxyService::OpenApplicationProxy>, "OpenApplicationProxy"},
}; };
@ -28,8 +26,8 @@ Result IApplicationProxyService::OpenApplicationProxy(
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
if (const auto applet = this->GetAppletFromProcessId(pid)) { if (const auto applet = this->GetAppletFromProcessId(pid)) {
*out_application_proxy = std::make_shared<IApplicationProxy>( *out_application_proxy =
system, applet, process_handle.Get(), m_window_system); std::make_shared<IApplicationProxy>(system, applet, process_handle.Get());
R_SUCCEED(); R_SUCCEED();
} else { } else {
UNIMPLEMENTED(); UNIMPLEMENTED();
@ -38,7 +36,7 @@ Result IApplicationProxyService::OpenApplicationProxy(
} }
std::shared_ptr<Applet> IApplicationProxyService::GetAppletFromProcessId(ProcessId process_id) { std::shared_ptr<Applet> IApplicationProxyService::GetAppletFromProcessId(ProcessId process_id) {
return m_window_system.GetByAppletResourceUserId(process_id.pid); return system.GetAppletManager().GetByAppletResourceUserId(process_id.pid);
} }
} // namespace Service::AM } // namespace Service::AM

View File

@ -12,11 +12,10 @@ namespace AM {
struct Applet; struct Applet;
class IApplicationProxy; class IApplicationProxy;
class WindowSystem;
class IApplicationProxyService final : public ServiceFramework<IApplicationProxyService> { class IApplicationProxyService final : public ServiceFramework<IApplicationProxyService> {
public: public:
explicit IApplicationProxyService(Core::System& system_, WindowSystem& window_system); explicit IApplicationProxyService(Core::System& system_);
~IApplicationProxyService() override; ~IApplicationProxyService() override;
private: private:
@ -25,8 +24,6 @@ private:
private: private:
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid); std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);
WindowSystem& m_window_system;
}; };
} // namespace AM } // namespace AM

View File

@ -80,14 +80,15 @@ ICommonStateGetter::~ICommonStateGetter() = default;
Result ICommonStateGetter::GetEventHandle(OutCopyHandle<Kernel::KReadableEvent> out_event) { Result ICommonStateGetter::GetEventHandle(OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_event = m_applet->lifecycle_manager.GetSystemEvent().GetHandle(); *out_event = &m_applet->message_queue.GetMessageReceiveEvent();
R_SUCCEED(); R_SUCCEED();
} }
Result ICommonStateGetter::ReceiveMessage(Out<AppletMessage> out_applet_message) { Result ICommonStateGetter::ReceiveMessage(Out<AppletMessage> out_applet_message) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
if (!m_applet->lifecycle_manager.PopMessage(out_applet_message)) { *out_applet_message = m_applet->message_queue.PopMessage();
if (*out_applet_message == AppletMessage::None) {
LOG_ERROR(Service_AM, "Tried to pop message but none was available!"); LOG_ERROR(Service_AM, "Tried to pop message but none was available!");
R_THROW(AM::ResultNoMessages); R_THROW(AM::ResultNoMessages);
} }
@ -99,7 +100,7 @@ Result ICommonStateGetter::GetCurrentFocusState(Out<FocusState> out_focus_state)
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
*out_focus_state = m_applet->lifecycle_manager.GetAndClearFocusState(); *out_focus_state = m_applet->focus_state;
R_SUCCEED(); R_SUCCEED();
} }
@ -136,7 +137,7 @@ Result ICommonStateGetter::GetWriterLockAccessorEx(
Result ICommonStateGetter::GetDefaultDisplayResolutionChangeEvent( Result ICommonStateGetter::GetDefaultDisplayResolutionChangeEvent(
OutCopyHandle<Kernel::KReadableEvent> out_event) { OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_event = m_applet->lifecycle_manager.GetOperationModeChangedSystemEvent().GetHandle(); *out_event = &m_applet->message_queue.GetOperationModeChangedEvent();
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -4,16 +4,13 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
#include "core/hle/service/am/service/home_menu_functions.h" #include "core/hle/service/am/service/home_menu_functions.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
namespace Service::AM { namespace Service::AM {
IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_, std::shared_ptr<Applet> applet, IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_, std::shared_ptr<Applet> applet)
WindowSystem& window_system) : ServiceFramework{system_, "IHomeMenuFunctions"}, m_applet{std::move(applet)},
: ServiceFramework{system_, "IHomeMenuFunctions"}, m_window_system{window_system}, m_context{system, "IHomeMenuFunctions"}, m_pop_from_general_channel_event{m_context} {
m_applet{std::move(applet)}, m_context{system, "IHomeMenuFunctions"},
m_pop_from_general_channel_event{m_context} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{10, D<&IHomeMenuFunctions::RequestToGetForeground>, "RequestToGetForeground"}, {10, D<&IHomeMenuFunctions::RequestToGetForeground>, "RequestToGetForeground"},
@ -40,20 +37,17 @@ IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_, std::shared_ptr<Ap
IHomeMenuFunctions::~IHomeMenuFunctions() = default; IHomeMenuFunctions::~IHomeMenuFunctions() = default;
Result IHomeMenuFunctions::RequestToGetForeground() { Result IHomeMenuFunctions::RequestToGetForeground() {
LOG_INFO(Service_AM, "called"); LOG_WARNING(Service_AM, "(STUBBED) called");
m_window_system.RequestHomeMenuToGetForeground();
R_SUCCEED(); R_SUCCEED();
} }
Result IHomeMenuFunctions::LockForeground() { Result IHomeMenuFunctions::LockForeground() {
LOG_INFO(Service_AM, "called"); LOG_WARNING(Service_AM, "(STUBBED) called");
m_window_system.RequestLockHomeMenuIntoForeground();
R_SUCCEED(); R_SUCCEED();
} }
Result IHomeMenuFunctions::UnlockForeground() { Result IHomeMenuFunctions::UnlockForeground() {
LOG_INFO(Service_AM, "called"); LOG_WARNING(Service_AM, "(STUBBED) called");
m_window_system.RequestUnlockHomeMenuIntoForeground();
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -11,12 +11,10 @@
namespace Service::AM { namespace Service::AM {
struct Applet; struct Applet;
class WindowSystem;
class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> { class IHomeMenuFunctions final : public ServiceFramework<IHomeMenuFunctions> {
public: public:
explicit IHomeMenuFunctions(Core::System& system_, std::shared_ptr<Applet> applet, explicit IHomeMenuFunctions(Core::System& system_, std::shared_ptr<Applet> applet);
WindowSystem& window_system);
~IHomeMenuFunctions() override; ~IHomeMenuFunctions() override;
private: private:
@ -28,7 +26,6 @@ private:
Result IsForceTerminateApplicationDisabledForDebug( Result IsForceTerminateApplicationDisabledForDebug(
Out<bool> out_is_force_terminate_application_disabled_for_debug); Out<bool> out_is_force_terminate_application_disabled_for_debug);
WindowSystem& m_window_system;
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
KernelHelpers::ServiceContext m_context; KernelHelpers::ServiceContext m_context;
Event m_pop_from_general_channel_event; Event m_pop_from_general_channel_event;

View File

@ -47,21 +47,20 @@ ILibraryAppletAccessor::~ILibraryAppletAccessor() = default;
Result ILibraryAppletAccessor::GetAppletStateChangedEvent( Result ILibraryAppletAccessor::GetAppletStateChangedEvent(
OutCopyHandle<Kernel::KReadableEvent> out_event) { OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_event = m_applet->state_changed_event.GetHandle(); *out_event = m_broker->GetStateChangedEvent().GetHandle();
R_SUCCEED(); R_SUCCEED();
} }
Result ILibraryAppletAccessor::IsCompleted(Out<bool> out_is_completed) { Result ILibraryAppletAccessor::IsCompleted(Out<bool> out_is_completed) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
std::scoped_lock lk{m_applet->lock}; *out_is_completed = m_broker->IsCompleted();
*out_is_completed = m_applet->is_completed;
R_SUCCEED(); R_SUCCEED();
} }
Result ILibraryAppletAccessor::GetResult() { Result ILibraryAppletAccessor::GetResult(Out<Result> out_result) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
std::scoped_lock lk{m_applet->lock}; *out_result = m_applet->terminate_result;
R_RETURN(m_applet->terminate_result); R_SUCCEED();
} }
Result ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero() { Result ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero() {
@ -78,10 +77,7 @@ Result ILibraryAppletAccessor::Start() {
Result ILibraryAppletAccessor::RequestExit() { Result ILibraryAppletAccessor::RequestExit() {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
{ m_applet->message_queue.RequestExit();
std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.RequestExit();
}
FrontendRequestExit(); FrontendRequestExit();
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -21,7 +21,7 @@ public:
private: private:
Result GetAppletStateChangedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); Result GetAppletStateChangedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
Result IsCompleted(Out<bool> out_is_completed); Result IsCompleted(Out<bool> out_is_completed);
Result GetResult(); Result GetResult(Out<Result> out_result);
Result PresetLibraryAppletGpuTimeSliceZero(); Result PresetLibraryAppletGpuTimeSliceZero();
Result Start(); Result Start();
Result RequestExit(); Result RequestExit();

View File

@ -7,11 +7,9 @@
#include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/applet_manager.h"
#include "core/hle/service/am/frontend/applets.h" #include "core/hle/service/am/frontend/applets.h"
#include "core/hle/service/am/library_applet_storage.h" #include "core/hle/service/am/library_applet_storage.h"
#include "core/hle/service/am/process_creation.h"
#include "core/hle/service/am/service/library_applet_accessor.h" #include "core/hle/service/am/service/library_applet_accessor.h"
#include "core/hle/service/am/service/library_applet_creator.h" #include "core/hle/service/am/service/library_applet_creator.h"
#include "core/hle/service/am/service/storage.h" #include "core/hle/service/am/service/storage.h"
#include "core/hle/service/am/window_system.h"
#include "core/hle/service/cmif_serialization.h" #include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/sm/sm.h" #include "core/hle/service/sm/sm.h"
@ -95,7 +93,6 @@ AppletProgramId AppletIdToProgramId(AppletId applet_id) {
} }
std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system, std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
WindowSystem& window_system,
std::shared_ptr<Applet> caller_applet, std::shared_ptr<Applet> caller_applet,
AppletId applet_id, AppletId applet_id,
LibraryAppletMode mode) { LibraryAppletMode mode) {
@ -113,38 +110,53 @@ std::shared_ptr<ILibraryAppletAccessor> CreateGuestApplet(Core::System& system,
Firmware1700 = 17, Firmware1700 = 17,
}; };
auto process = CreateProcess(system, program_id, Firmware1400, Firmware1700); auto process = std::make_unique<Process>(system);
if (!process) { if (!process->Initialize(program_id, Firmware1400, Firmware1700)) {
// Couldn't initialize the guest process // Couldn't initialize the guest process
return {}; return {};
} }
const auto applet = std::make_shared<Applet>(system, std::move(process), false); const auto applet = std::make_shared<Applet>(system, std::move(process));
applet->program_id = program_id; applet->program_id = program_id;
applet->applet_id = applet_id; applet->applet_id = applet_id;
applet->type = AppletType::LibraryApplet; applet->type = AppletType::LibraryApplet;
applet->library_applet_mode = mode; applet->library_applet_mode = mode;
applet->window_visible = mode != LibraryAppletMode::AllForegroundInitiallyHidden;
// Set focus state
switch (mode) {
case LibraryAppletMode::AllForeground:
case LibraryAppletMode::NoUi:
case LibraryAppletMode::PartialForeground:
case LibraryAppletMode::PartialForegroundIndirectDisplay:
applet->hid_registration.EnableAppletToGetInput(true);
applet->focus_state = FocusState::InFocus;
applet->message_queue.PushMessage(AppletMessage::ChangeIntoForeground);
break;
case LibraryAppletMode::AllForegroundInitiallyHidden:
applet->hid_registration.EnableAppletToGetInput(false);
applet->focus_state = FocusState::NotInFocus;
applet->display_layer_manager.SetWindowVisibility(false);
applet->message_queue.PushMessage(AppletMessage::ChangeIntoBackground);
break;
}
auto broker = std::make_shared<AppletDataBroker>(system); auto broker = std::make_shared<AppletDataBroker>(system);
applet->caller_applet = caller_applet; applet->caller_applet = caller_applet;
applet->caller_applet_broker = broker; applet->caller_applet_broker = broker;
caller_applet->child_applets.push_back(applet);
window_system.TrackApplet(applet, false); system.GetAppletManager().InsertApplet(applet);
return std::make_shared<ILibraryAppletAccessor>(system, broker, applet); return std::make_shared<ILibraryAppletAccessor>(system, broker, applet);
} }
std::shared_ptr<ILibraryAppletAccessor> CreateFrontendApplet(Core::System& system, std::shared_ptr<ILibraryAppletAccessor> CreateFrontendApplet(Core::System& system,
WindowSystem& window_system,
std::shared_ptr<Applet> caller_applet, std::shared_ptr<Applet> caller_applet,
AppletId applet_id, AppletId applet_id,
LibraryAppletMode mode) { LibraryAppletMode mode) {
const auto program_id = static_cast<u64>(AppletIdToProgramId(applet_id)); const auto program_id = static_cast<u64>(AppletIdToProgramId(applet_id));
auto process = std::make_unique<Process>(system); auto process = std::make_unique<Process>(system);
auto applet = std::make_shared<Applet>(system, std::move(process), false); auto applet = std::make_shared<Applet>(system, std::move(process));
applet->program_id = program_id; applet->program_id = program_id;
applet->applet_id = applet_id; applet->applet_id = applet_id;
applet->type = AppletType::LibraryApplet; applet->type = AppletType::LibraryApplet;
@ -154,19 +166,14 @@ std::shared_ptr<ILibraryAppletAccessor> CreateFrontendApplet(Core::System& syste
applet->caller_applet = caller_applet; applet->caller_applet = caller_applet;
applet->caller_applet_broker = storage; applet->caller_applet_broker = storage;
applet->frontend = system.GetFrontendAppletHolder().GetApplet(applet, applet_id, mode); applet->frontend = system.GetFrontendAppletHolder().GetApplet(applet, applet_id, mode);
caller_applet->child_applets.push_back(applet);
window_system.TrackApplet(applet, false);
return std::make_shared<ILibraryAppletAccessor>(system, storage, applet); return std::make_shared<ILibraryAppletAccessor>(system, storage, applet);
} }
} // namespace } // namespace
ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_, std::shared_ptr<Applet> applet, ILibraryAppletCreator::ILibraryAppletCreator(Core::System& system_, std::shared_ptr<Applet> applet)
WindowSystem& window_system) : ServiceFramework{system_, "ILibraryAppletCreator"}, m_applet{std::move(applet)} {
: ServiceFramework{system_, "ILibraryAppletCreator"},
m_window_system{window_system}, m_applet{std::move(applet)} {
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&ILibraryAppletCreator::CreateLibraryApplet>, "CreateLibraryApplet"}, {0, D<&ILibraryAppletCreator::CreateLibraryApplet>, "CreateLibraryApplet"},
{1, nullptr, "TerminateAllLibraryApplets"}, {1, nullptr, "TerminateAllLibraryApplets"},
@ -188,12 +195,10 @@ Result ILibraryAppletCreator::CreateLibraryApplet(
std::shared_ptr<ILibraryAppletAccessor> library_applet; std::shared_ptr<ILibraryAppletAccessor> library_applet;
if (ShouldCreateGuestApplet(applet_id)) { if (ShouldCreateGuestApplet(applet_id)) {
library_applet = library_applet = CreateGuestApplet(system, m_applet, applet_id, library_applet_mode);
CreateGuestApplet(system, m_window_system, m_applet, applet_id, library_applet_mode);
} }
if (!library_applet) { if (!library_applet) {
library_applet = library_applet = CreateFrontendApplet(system, m_applet, applet_id, library_applet_mode);
CreateFrontendApplet(system, m_window_system, m_applet, applet_id, library_applet_mode);
} }
if (!library_applet) { if (!library_applet) {
LOG_ERROR(Service_AM, "Applet doesn't exist! applet_id={}", applet_id); LOG_ERROR(Service_AM, "Applet doesn't exist! applet_id={}", applet_id);

View File

@ -12,12 +12,10 @@ namespace Service::AM {
struct Applet; struct Applet;
class ILibraryAppletAccessor; class ILibraryAppletAccessor;
class IStorage; class IStorage;
class WindowSystem;
class ILibraryAppletCreator final : public ServiceFramework<ILibraryAppletCreator> { class ILibraryAppletCreator final : public ServiceFramework<ILibraryAppletCreator> {
public: public:
explicit ILibraryAppletCreator(Core::System& system_, std::shared_ptr<Applet> applet, explicit ILibraryAppletCreator(Core::System& system_, std::shared_ptr<Applet> applet);
WindowSystem& window_system);
~ILibraryAppletCreator() override; ~ILibraryAppletCreator() override;
private: private:
@ -31,7 +29,6 @@ private:
Result CreateHandleStorage(Out<SharedPointer<IStorage>> out_storage, s64 size, Result CreateHandleStorage(Out<SharedPointer<IStorage>> out_storage, s64 size,
InCopyHandle<Kernel::KTransferMemory> transfer_memory_handle); InCopyHandle<Kernel::KTransferMemory> transfer_memory_handle);
WindowSystem& m_window_system;
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
}; };

View File

@ -19,9 +19,9 @@
namespace Service::AM { namespace Service::AM {
ILibraryAppletProxy::ILibraryAppletProxy(Core::System& system_, std::shared_ptr<Applet> applet, ILibraryAppletProxy::ILibraryAppletProxy(Core::System& system_, std::shared_ptr<Applet> applet,
Kernel::KProcess* process, WindowSystem& window_system) Kernel::KProcess* process)
: ServiceFramework{system_, "ILibraryAppletProxy"}, : ServiceFramework{system_, "ILibraryAppletProxy"}, m_process{process}, m_applet{
m_window_system{window_system}, m_process{process}, m_applet{std::move(applet)} { std::move(applet)} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0, D<&ILibraryAppletProxy::GetCommonStateGetter>, "GetCommonStateGetter"}, {0, D<&ILibraryAppletProxy::GetCommonStateGetter>, "GetCommonStateGetter"},
@ -75,7 +75,7 @@ Result ILibraryAppletProxy::GetDebugFunctions(
Result ILibraryAppletProxy::GetWindowController( Result ILibraryAppletProxy::GetWindowController(
Out<SharedPointer<IWindowController>> out_window_controller) { Out<SharedPointer<IWindowController>> out_window_controller) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_window_controller = std::make_shared<IWindowController>(system, m_applet, m_window_system); *out_window_controller = std::make_shared<IWindowController>(system, m_applet);
R_SUCCEED(); R_SUCCEED();
} }
@ -96,8 +96,7 @@ Result ILibraryAppletProxy::GetCommonStateGetter(
Result ILibraryAppletProxy::GetLibraryAppletCreator( Result ILibraryAppletProxy::GetLibraryAppletCreator(
Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) { Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_library_applet_creator = *out_library_applet_creator = std::make_shared<ILibraryAppletCreator>(system, m_applet);
std::make_shared<ILibraryAppletCreator>(system, m_applet, m_window_system);
R_SUCCEED(); R_SUCCEED();
} }
@ -119,8 +118,7 @@ Result ILibraryAppletProxy::GetAppletCommonFunctions(
Result ILibraryAppletProxy::GetHomeMenuFunctions( Result ILibraryAppletProxy::GetHomeMenuFunctions(
Out<SharedPointer<IHomeMenuFunctions>> out_home_menu_functions) { Out<SharedPointer<IHomeMenuFunctions>> out_home_menu_functions) {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
*out_home_menu_functions = *out_home_menu_functions = std::make_shared<IHomeMenuFunctions>(system, m_applet);
std::make_shared<IHomeMenuFunctions>(system, m_applet, m_window_system);
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -21,12 +21,11 @@ class ILibraryAppletSelfAccessor;
class IProcessWindingController; class IProcessWindingController;
class ISelfController; class ISelfController;
class IWindowController; class IWindowController;
class WindowSystem;
class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> { class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> {
public: public:
explicit ILibraryAppletProxy(Core::System& system_, std::shared_ptr<Applet> applet, explicit ILibraryAppletProxy(Core::System& system_, std::shared_ptr<Applet> applet,
Kernel::KProcess* process, WindowSystem& window_system); Kernel::KProcess* process);
~ILibraryAppletProxy(); ~ILibraryAppletProxy();
private: private:
@ -48,7 +47,6 @@ private:
Result GetGlobalStateController( Result GetGlobalStateController(
Out<SharedPointer<IGlobalStateController>> out_global_state_controller); Out<SharedPointer<IGlobalStateController>> out_global_state_controller);
WindowSystem& m_window_system;
Kernel::KProcess* const m_process; Kernel::KProcess* const m_process;
const std::shared_ptr<Applet> m_applet; const std::shared_ptr<Applet> m_applet;
}; };

View File

@ -176,7 +176,8 @@ Result ILibraryAppletSelfAccessor::GetMainAppletStorageId(Out<FileSys::StorageId
Result ILibraryAppletSelfAccessor::ExitProcessAndReturn() { Result ILibraryAppletSelfAccessor::ExitProcessAndReturn() {
LOG_INFO(Service_AM, "called"); LOG_INFO(Service_AM, "called");
m_applet->process->Terminate(); system.GetAppletManager().TerminateAndRemoveApplet(m_applet->aruid);
m_broker->SignalCompletion();
R_SUCCEED(); R_SUCCEED();
} }

View File

@ -86,7 +86,8 @@ ISelfController::~ISelfController() {
Result ISelfController::Exit() { Result ISelfController::Exit() {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
m_applet->process->Terminate(); // TODO
system.Exit();
R_SUCCEED(); R_SUCCEED();
} }
@ -94,16 +95,7 @@ Result ISelfController::Exit() {
Result ISelfController::LockExit() { Result ISelfController::LockExit() {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
std::scoped_lock lk{m_applet->lock}; system.SetExitLocked(true);
if (m_applet->lifecycle_manager.GetExitRequested()) {
// With exit already requested, ignore and terminate immediately.
m_applet->process->Terminate();
} else {
// Otherwise, set exit lock state.
m_applet->exit_locked = true;
system.SetExitLocked(true);
}
R_SUCCEED(); R_SUCCEED();
} }
@ -111,13 +103,10 @@ Result ISelfController::LockExit() {
Result ISelfController::UnlockExit() { Result ISelfController::UnlockExit() {
LOG_DEBUG(Service_AM, "called"); LOG_DEBUG(Service_AM, "called");
std::scoped_lock lk{m_applet->lock};
m_applet->exit_locked = false;
system.SetExitLocked(false); system.SetExitLocked(false);
if (m_applet->lifecycle_manager.GetExitRequested()) { if (system.GetExitRequested()) {
m_applet->process->Terminate(); system.Exit();
} }
R_SUCCEED(); R_SUCCEED();
@ -166,7 +155,7 @@ Result ISelfController::SetOperationModeChangedNotification(bool enabled) {
LOG_INFO(Service_AM, "called, enabled={}", enabled); LOG_INFO(Service_AM, "called, enabled={}", enabled);
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.SetOperationModeChangedNotificationEnabled(enabled); m_applet->operation_mode_changed_notification_enabled = enabled;
R_SUCCEED(); R_SUCCEED();
} }
@ -175,18 +164,17 @@ Result ISelfController::SetPerformanceModeChangedNotification(bool enabled) {
LOG_INFO(Service_AM, "called, enabled={}", enabled); LOG_INFO(Service_AM, "called, enabled={}", enabled);
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.SetPerformanceModeChangedNotificationEnabled(enabled); m_applet->performance_mode_changed_notification_enabled = enabled;
R_SUCCEED(); R_SUCCEED();
} }
Result ISelfController::SetFocusHandlingMode(bool notify, bool background, bool suspend) { Result ISelfController::SetFocusHandlingMode(bool notify, bool background, bool suspend) {
LOG_INFO(Service_AM, "called, notify={} background={} suspend={}", notify, background, suspend); LOG_WARNING(Service_AM, "(STUBBED) called, notify={} background={} suspend={}", notify,
background, suspend);
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.SetFocusStateChangedNotificationEnabled(notify); m_applet->focus_handling_mode = {notify, background, suspend};
m_applet->lifecycle_manager.SetFocusHandlingMode(suspend);
m_applet->UpdateSuspensionStateLocked(true);
R_SUCCEED(); R_SUCCEED();
} }
@ -195,7 +183,7 @@ Result ISelfController::SetRestartMessageEnabled(bool enabled) {
LOG_INFO(Service_AM, "called, enabled={}", enabled); LOG_INFO(Service_AM, "called, enabled={}", enabled);
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.SetResumeNotificationEnabled(enabled); m_applet->restart_message_enabled = enabled;
R_SUCCEED(); R_SUCCEED();
} }
@ -214,8 +202,7 @@ Result ISelfController::SetOutOfFocusSuspendingEnabled(bool enabled) {
LOG_INFO(Service_AM, "called, enabled={}", enabled); LOG_INFO(Service_AM, "called, enabled={}", enabled);
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
m_applet->lifecycle_manager.SetOutOfFocusSuspendingEnabled(enabled); m_applet->out_of_focus_suspension_enabled = enabled;
m_applet->UpdateSuspensionStateLocked(false);
R_SUCCEED(); R_SUCCEED();
} }

Some files were not shown because too many files have changed in this diff Show More