diff options
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 51 | ||||
| -rw-r--r-- | src/yuzu/configuration/shared_translation.cpp | 517 |
2 files changed, 310 insertions, 258 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 33e1fb663..181b2817c 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt | |||
| @@ -252,6 +252,7 @@ file(GLOB_RECURSE THEMES ${PROJECT_SOURCE_DIR}/dist/qt_themes/*) | |||
| 252 | if (ENABLE_QT_TRANSLATION) | 252 | if (ENABLE_QT_TRANSLATION) |
| 253 | set(YUZU_QT_LANGUAGES "${PROJECT_SOURCE_DIR}/dist/languages" CACHE PATH "Path to the translation bundle for the Qt frontend") | 253 | set(YUZU_QT_LANGUAGES "${PROJECT_SOURCE_DIR}/dist/languages" CACHE PATH "Path to the translation bundle for the Qt frontend") |
| 254 | option(GENERATE_QT_TRANSLATION "Generate en.ts as the translation source file" OFF) | 254 | option(GENERATE_QT_TRANSLATION "Generate en.ts as the translation source file" OFF) |
| 255 | option(WORKAROUND_BROKEN_LUPDATE "Run lupdate directly through CMake if Qt's convenience wrappers don't work" OFF) | ||
| 255 | 256 | ||
| 256 | # Update source TS file if enabled | 257 | # Update source TS file if enabled |
| 257 | if (GENERATE_QT_TRANSLATION) | 258 | if (GENERATE_QT_TRANSLATION) |
| @@ -259,19 +260,51 @@ if (ENABLE_QT_TRANSLATION) | |||
| 259 | # these calls to qt_create_translation also creates a rule to generate en.qm which conflicts with providing english plurals | 260 | # these calls to qt_create_translation also creates a rule to generate en.qm which conflicts with providing english plurals |
| 260 | # so we have to set a OUTPUT_LOCATION so that we don't have multiple rules to generate en.qm | 261 | # so we have to set a OUTPUT_LOCATION so that we don't have multiple rules to generate en.qm |
| 261 | set_source_files_properties(${YUZU_QT_LANGUAGES}/en.ts PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations") | 262 | set_source_files_properties(${YUZU_QT_LANGUAGES}/en.ts PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations") |
| 262 | qt_create_translation(QM_FILES | 263 | if (WORKAROUND_BROKEN_LUPDATE) |
| 263 | ${SRCS} | 264 | add_custom_command(OUTPUT ${YUZU_QT_LANGUAGES}/en.ts |
| 264 | ${UIS} | 265 | COMMAND lupdate |
| 265 | ${YUZU_QT_LANGUAGES}/en.ts | 266 | -source-language en_US |
| 266 | OPTIONS | 267 | -target-language en_US |
| 267 | -source-language en_US | 268 | ${SRCS} |
| 268 | -target-language en_US | 269 | ${UIS} |
| 269 | ) | 270 | -ts ${YUZU_QT_LANGUAGES}/en.ts |
| 271 | DEPENDS | ||
| 272 | ${SRCS} | ||
| 273 | ${UIS} | ||
| 274 | WORKING_DIRECTORY | ||
| 275 | ${CMAKE_CURRENT_SOURCE_DIR} | ||
| 276 | ) | ||
| 277 | else() | ||
| 278 | qt_create_translation(QM_FILES | ||
| 279 | ${SRCS} | ||
| 280 | ${UIS} | ||
| 281 | ${YUZU_QT_LANGUAGES}/en.ts | ||
| 282 | OPTIONS | ||
| 283 | -source-language en_US | ||
| 284 | -target-language en_US | ||
| 285 | ) | ||
| 286 | endif() | ||
| 270 | 287 | ||
| 271 | # Generate plurals into dist/english_plurals/generated_en.ts so it can be used to revise dist/english_plurals/en.ts | 288 | # Generate plurals into dist/english_plurals/generated_en.ts so it can be used to revise dist/english_plurals/en.ts |
| 272 | set(GENERATED_PLURALS_FILE ${PROJECT_SOURCE_DIR}/dist/english_plurals/generated_en.ts) | 289 | set(GENERATED_PLURALS_FILE ${PROJECT_SOURCE_DIR}/dist/english_plurals/generated_en.ts) |
| 273 | set_source_files_properties(${GENERATED_PLURALS_FILE} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/plurals") | 290 | set_source_files_properties(${GENERATED_PLURALS_FILE} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/plurals") |
| 274 | qt_create_translation(QM_FILES ${SRCS} ${UIS} ${GENERATED_PLURALS_FILE} OPTIONS -pluralonly -source-language en_US -target-language en_US) | 291 | if (WORKAROUND_BROKEN_LUPDATE) |
| 292 | add_custom_command(OUTPUT ${GENERATED_PLURALS_FILE} | ||
| 293 | COMMAND lupdate | ||
| 294 | -source-language en_US | ||
| 295 | -target-language en_US | ||
| 296 | ${SRCS} | ||
| 297 | ${UIS} | ||
| 298 | -ts ${GENERATED_PLURALS_FILE} | ||
| 299 | DEPENDS | ||
| 300 | ${SRCS} | ||
| 301 | ${UIS} | ||
| 302 | WORKING_DIRECTORY | ||
| 303 | ${CMAKE_CURRENT_SOURCE_DIR} | ||
| 304 | ) | ||
| 305 | else() | ||
| 306 | qt_create_translation(QM_FILES ${SRCS} ${UIS} ${GENERATED_PLURALS_FILE} OPTIONS -pluralonly -source-language en_US -target-language en_US) | ||
| 307 | endif() | ||
| 275 | 308 | ||
| 276 | add_custom_target(translation ALL DEPENDS ${YUZU_QT_LANGUAGES}/en.ts ${GENERATED_PLURALS_FILE}) | 309 | add_custom_target(translation ALL DEPENDS ${YUZU_QT_LANGUAGES}/en.ts ${GENERATED_PLURALS_FILE}) |
| 277 | endif() | 310 | endif() |
diff --git a/src/yuzu/configuration/shared_translation.cpp b/src/yuzu/configuration/shared_translation.cpp index 1434b1a56..a7b5def32 100644 --- a/src/yuzu/configuration/shared_translation.cpp +++ b/src/yuzu/configuration/shared_translation.cpp | |||
| @@ -1,17 +1,18 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | 3 | ||
| 4 | #include "common/time_zone.h" | ||
| 5 | #include "yuzu/configuration/shared_translation.h" | 4 | #include "yuzu/configuration/shared_translation.h" |
| 6 | 5 | ||
| 7 | #include <map> | 6 | #include <map> |
| 8 | #include <memory> | 7 | #include <memory> |
| 9 | #include <tuple> | 8 | #include <tuple> |
| 10 | #include <utility> | 9 | #include <utility> |
| 10 | #include <QCoreApplication> | ||
| 11 | #include <QWidget> | 11 | #include <QWidget> |
| 12 | #include "common/settings.h" | 12 | #include "common/settings.h" |
| 13 | #include "common/settings_enums.h" | 13 | #include "common/settings_enums.h" |
| 14 | #include "common/settings_setting.h" | 14 | #include "common/settings_setting.h" |
| 15 | #include "common/time_zone.h" | ||
| 15 | #include "yuzu/uisettings.h" | 16 | #include "yuzu/uisettings.h" |
| 16 | 17 | ||
| 17 | namespace ConfigurationShared { | 18 | namespace ConfigurationShared { |
| @@ -21,123 +22,135 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
| 21 | const auto& tr = [parent](const char* text) -> QString { return parent->tr(text); }; | 22 | const auto& tr = [parent](const char* text) -> QString { return parent->tr(text); }; |
| 22 | 23 | ||
| 23 | #define INSERT(SETTINGS, ID, NAME, TOOLTIP) \ | 24 | #define INSERT(SETTINGS, ID, NAME, TOOLTIP) \ |
| 24 | translations->insert(std::pair{SETTINGS::values.ID.Id(), std::pair{tr((NAME)), tr((TOOLTIP))}}) | 25 | translations->insert(std::pair{SETTINGS::values.ID.Id(), std::pair{(NAME), (TOOLTIP)}}) |
| 25 | 26 | ||
| 26 | // A setting can be ignored by giving it a blank name | 27 | // A setting can be ignored by giving it a blank name |
| 27 | 28 | ||
| 28 | // Audio | 29 | // Audio |
| 29 | INSERT(Settings, sink_id, "Output Engine:", ""); | 30 | INSERT(Settings, sink_id, tr("Output Engine:"), QStringLiteral()); |
| 30 | INSERT(Settings, audio_output_device_id, "Output Device:", ""); | 31 | INSERT(Settings, audio_output_device_id, tr("Output Device:"), QStringLiteral()); |
| 31 | INSERT(Settings, audio_input_device_id, "Input Device:", ""); | 32 | INSERT(Settings, audio_input_device_id, tr("Input Device:"), QStringLiteral()); |
| 32 | INSERT(Settings, audio_muted, "Mute audio", ""); | 33 | INSERT(Settings, audio_muted, tr("Mute audio"), QStringLiteral()); |
| 33 | INSERT(Settings, volume, "Volume:", ""); | 34 | INSERT(Settings, volume, tr("Volume:"), QStringLiteral()); |
| 34 | INSERT(Settings, dump_audio_commands, "", ""); | 35 | INSERT(Settings, dump_audio_commands, QStringLiteral(), QStringLiteral()); |
| 35 | INSERT(UISettings, mute_when_in_background, "Mute audio when in background", ""); | 36 | INSERT(UISettings, mute_when_in_background, tr("Mute audio when in background"), |
| 37 | QStringLiteral()); | ||
| 36 | 38 | ||
| 37 | // Core | 39 | // Core |
| 38 | INSERT(Settings, use_multi_core, "Multicore CPU Emulation", ""); | 40 | INSERT(Settings, use_multi_core, tr("Multicore CPU Emulation"), QStringLiteral()); |
| 39 | INSERT(Settings, memory_layout_mode, "Memory Layout", ""); | 41 | INSERT(Settings, memory_layout_mode, tr("Memory Layout"), QStringLiteral()); |
| 40 | INSERT(Settings, use_speed_limit, "", ""); | 42 | INSERT(Settings, use_speed_limit, QStringLiteral(), QStringLiteral()); |
| 41 | INSERT(Settings, speed_limit, "Limit Speed Percent", ""); | 43 | INSERT(Settings, speed_limit, tr("Limit Speed Percent"), QStringLiteral()); |
| 42 | 44 | ||
| 43 | // Cpu | 45 | // Cpu |
| 44 | INSERT(Settings, cpu_accuracy, "Accuracy:", ""); | 46 | INSERT(Settings, cpu_accuracy, tr("Accuracy:"), QStringLiteral()); |
| 45 | 47 | ||
| 46 | // Cpu Debug | 48 | // Cpu Debug |
| 47 | 49 | ||
| 48 | // Cpu Unsafe | 50 | // Cpu Unsafe |
| 49 | INSERT(Settings, cpuopt_unsafe_unfuse_fma, | ||
| 50 | "Unfuse FMA (improve performance on CPUs without FMA)", | ||
| 51 | "This option improves speed by reducing accuracy of fused-multiply-add instructions on " | ||
| 52 | "CPUs without native FMA support."); | ||
| 53 | INSERT(Settings, cpuopt_unsafe_reduce_fp_error, "Faster FRSQRTE and FRECPE", | ||
| 54 | "This option improves the speed of some approximate floating-point functions by using " | ||
| 55 | "less accurate native approximations."); | ||
| 56 | INSERT(Settings, cpuopt_unsafe_ignore_standard_fpcr, "Faster ASIMD instructions (32 bits only)", | ||
| 57 | "This option improves the speed of 32 bits ASIMD floating-point functions by running " | ||
| 58 | "with incorrect rounding modes."); | ||
| 59 | INSERT(Settings, cpuopt_unsafe_inaccurate_nan, "Inaccurate NaN handling", | ||
| 60 | "This option improves speed by removing NaN checking. Please note this also reduces " | ||
| 61 | "accuracy of certain floating-point instructions."); | ||
| 62 | INSERT( | 51 | INSERT( |
| 63 | Settings, cpuopt_unsafe_fastmem_check, "Disable address space checks", | 52 | Settings, cpuopt_unsafe_unfuse_fma, |
| 64 | "This option improves speed by eliminating a safety check before every memory read/write " | 53 | tr("Unfuse FMA (improve performance on CPUs without FMA)"), |
| 65 | "in guest. Disabling it may allow a game to read/write the emulator's memory."); | 54 | tr("This option improves speed by reducing accuracy of fused-multiply-add instructions on " |
| 66 | INSERT(Settings, cpuopt_unsafe_ignore_global_monitor, "Ignore global monitor", | 55 | "CPUs without native FMA support.")); |
| 67 | "This option improves speed by relying only on the semantics of cmpxchg to ensure " | 56 | INSERT( |
| 57 | Settings, cpuopt_unsafe_reduce_fp_error, tr("Faster FRSQRTE and FRECPE"), | ||
| 58 | tr("This option improves the speed of some approximate floating-point functions by using " | ||
| 59 | "less accurate native approximations.")); | ||
| 60 | INSERT(Settings, cpuopt_unsafe_ignore_standard_fpcr, | ||
| 61 | tr("Faster ASIMD instructions (32 bits only)"), | ||
| 62 | tr("This option improves the speed of 32 bits ASIMD floating-point functions by running " | ||
| 63 | "with incorrect rounding modes.")); | ||
| 64 | INSERT(Settings, cpuopt_unsafe_inaccurate_nan, tr("Inaccurate NaN handling"), | ||
| 65 | tr("This option improves speed by removing NaN checking. Please note this also reduces " | ||
| 66 | "accuracy of certain floating-point instructions.")); | ||
| 67 | INSERT(Settings, cpuopt_unsafe_fastmem_check, tr("Disable address space checks"), | ||
| 68 | tr("This option improves speed by eliminating a safety check before every memory " | ||
| 69 | "read/write " | ||
| 70 | "in guest. Disabling it may allow a game to read/write the emulator's memory.")); | ||
| 71 | INSERT( | ||
| 72 | Settings, cpuopt_unsafe_ignore_global_monitor, tr("Ignore global monitor"), | ||
| 73 | tr("This option improves speed by relying only on the semantics of cmpxchg to ensure " | ||
| 68 | "safety of exclusive access instructions. Please note this may result in deadlocks and " | 74 | "safety of exclusive access instructions. Please note this may result in deadlocks and " |
| 69 | "other race conditions."); | 75 | "other race conditions.")); |
| 70 | 76 | ||
| 71 | // Renderer | 77 | // Renderer |
| 72 | INSERT(Settings, renderer_backend, "API:", ""); | 78 | INSERT(Settings, renderer_backend, tr("API:"), QStringLiteral()); |
| 73 | INSERT(Settings, vulkan_device, "Device:", ""); | 79 | INSERT(Settings, vulkan_device, tr("Device:"), QStringLiteral()); |
| 74 | INSERT(Settings, shader_backend, "Shader Backend:", ""); | 80 | INSERT(Settings, shader_backend, tr("Shader Backend:"), QStringLiteral()); |
| 75 | INSERT(Settings, resolution_setup, "Resolution:", ""); | 81 | INSERT(Settings, resolution_setup, tr("Resolution:"), QStringLiteral()); |
| 76 | INSERT(Settings, scaling_filter, "Window Adapting Filter:", ""); | 82 | INSERT(Settings, scaling_filter, tr("Window Adapting Filter:"), QStringLiteral()); |
| 77 | INSERT(Settings, fsr_sharpening_slider, "FSR Sharpness:", ""); | 83 | INSERT(Settings, fsr_sharpening_slider, tr("FSR Sharpness:"), QStringLiteral()); |
| 78 | INSERT(Settings, anti_aliasing, "Anti-Aliasing Method:", ""); | 84 | INSERT(Settings, anti_aliasing, tr("Anti-Aliasing Method:"), QStringLiteral()); |
| 79 | INSERT(Settings, fullscreen_mode, "Fullscreen Mode:", ""); | 85 | INSERT(Settings, fullscreen_mode, tr("Fullscreen Mode:"), QStringLiteral()); |
| 80 | INSERT(Settings, aspect_ratio, "Aspect Ratio:", ""); | 86 | INSERT(Settings, aspect_ratio, tr("Aspect Ratio:"), QStringLiteral()); |
| 81 | INSERT(Settings, use_disk_shader_cache, "Use disk pipeline cache", ""); | 87 | INSERT(Settings, use_disk_shader_cache, tr("Use disk pipeline cache"), QStringLiteral()); |
| 82 | INSERT(Settings, use_asynchronous_gpu_emulation, "Use asynchronous GPU emulation", ""); | 88 | INSERT(Settings, use_asynchronous_gpu_emulation, tr("Use asynchronous GPU emulation"), |
| 83 | INSERT(Settings, nvdec_emulation, "NVDEC emulation:", ""); | 89 | QStringLiteral()); |
| 84 | INSERT(Settings, accelerate_astc, "ASTC Decoding Method:", ""); | 90 | INSERT(Settings, nvdec_emulation, tr("NVDEC emulation:"), QStringLiteral()); |
| 85 | INSERT(Settings, astc_recompression, "ASTC Recompression Method:", ""); | 91 | INSERT(Settings, accelerate_astc, tr("ASTC Decoding Method:"), QStringLiteral()); |
| 86 | INSERT(Settings, vsync_mode, "VSync Mode:", | 92 | INSERT(Settings, astc_recompression, tr("ASTC Recompression Method:"), QStringLiteral()); |
| 87 | "FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen " | 93 | INSERT( |
| 94 | Settings, vsync_mode, tr("VSync Mode:"), | ||
| 95 | tr("FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen " | ||
| 88 | "refresh rate.\nFIFO Relaxed is similar to FIFO but allows tearing as it recovers from " | 96 | "refresh rate.\nFIFO Relaxed is similar to FIFO but allows tearing as it recovers from " |
| 89 | "a slow down.\nMailbox can have lower latency than FIFO and does not tear but may drop " | 97 | "a slow down.\nMailbox can have lower latency than FIFO and does not tear but may drop " |
| 90 | "frames.\nImmediate (no synchronization) just presents whatever is available and can " | 98 | "frames.\nImmediate (no synchronization) just presents whatever is available and can " |
| 91 | "exhibit tearing."); | 99 | "exhibit tearing.")); |
| 92 | INSERT(Settings, bg_red, "", ""); | 100 | INSERT(Settings, bg_red, QStringLiteral(), QStringLiteral()); |
| 93 | INSERT(Settings, bg_green, "", ""); | 101 | INSERT(Settings, bg_green, QStringLiteral(), QStringLiteral()); |
| 94 | INSERT(Settings, bg_blue, "", ""); | 102 | INSERT(Settings, bg_blue, QStringLiteral(), QStringLiteral()); |
| 95 | 103 | ||
| 96 | // Renderer (Advanced Graphics) | 104 | // Renderer (Advanced Graphics) |
| 97 | INSERT(Settings, async_presentation, "Enable asynchronous presentation (Vulkan only)", ""); | 105 | INSERT(Settings, async_presentation, tr("Enable asynchronous presentation (Vulkan only)"), |
| 98 | INSERT(Settings, renderer_force_max_clock, "Force maximum clocks (Vulkan only)", | 106 | QStringLiteral()); |
| 99 | "Runs work in the background while waiting for graphics commands to keep the GPU from " | 107 | INSERT( |
| 100 | "lowering its clock speed."); | 108 | Settings, renderer_force_max_clock, tr("Force maximum clocks (Vulkan only)"), |
| 101 | INSERT(Settings, max_anisotropy, "Anisotropic Filtering:", ""); | 109 | tr("Runs work in the background while waiting for graphics commands to keep the GPU from " |
| 102 | INSERT(Settings, gpu_accuracy, "Accuracy Level:", ""); | 110 | "lowering its clock speed.")); |
| 103 | INSERT(Settings, use_asynchronous_shaders, "Use asynchronous shader building (Hack)", | 111 | INSERT(Settings, max_anisotropy, tr("Anisotropic Filtering:"), QStringLiteral()); |
| 104 | "Enables asynchronous shader compilation, which may reduce shader stutter. This feature " | 112 | INSERT(Settings, gpu_accuracy, tr("Accuracy Level:"), QStringLiteral()); |
| 105 | "is experimental."); | 113 | INSERT( |
| 106 | INSERT(Settings, use_fast_gpu_time, "Use Fast GPU Time (Hack)", | 114 | Settings, use_asynchronous_shaders, tr("Use asynchronous shader building (Hack)"), |
| 107 | "Enables Fast GPU Time. This option will force most games to run at their highest " | 115 | tr("Enables asynchronous shader compilation, which may reduce shader stutter. This feature " |
| 108 | "native resolution."); | 116 | "is experimental.")); |
| 109 | INSERT(Settings, use_vulkan_driver_pipeline_cache, "Use Vulkan pipeline cache", | 117 | INSERT(Settings, use_fast_gpu_time, tr("Use Fast GPU Time (Hack)"), |
| 110 | "Enables GPU vendor-specific pipeline cache. This option can improve shader loading " | 118 | tr("Enables Fast GPU Time. This option will force most games to run at their highest " |
| 111 | "time significantly in cases where the Vulkan driver does not store pipeline cache " | 119 | "native resolution.")); |
| 112 | "files internally."); | 120 | INSERT(Settings, use_vulkan_driver_pipeline_cache, tr("Use Vulkan pipeline cache"), |
| 113 | INSERT(Settings, enable_compute_pipelines, "Enable Compute Pipelines (Intel Vulkan Only)", | 121 | tr("Enables GPU vendor-specific pipeline cache. This option can improve shader loading " |
| 114 | "Enable compute pipelines, required by some games.\nThis setting only exists for Intel " | 122 | "time significantly in cases where the Vulkan driver does not store pipeline cache " |
| 123 | "files internally.")); | ||
| 124 | INSERT( | ||
| 125 | Settings, enable_compute_pipelines, tr("Enable Compute Pipelines (Intel Vulkan Only)"), | ||
| 126 | tr("Enable compute pipelines, required by some games.\nThis setting only exists for Intel " | ||
| 115 | "proprietary drivers, and may crash if enabled.\nCompute pipelines are always enabled " | 127 | "proprietary drivers, and may crash if enabled.\nCompute pipelines are always enabled " |
| 116 | "on all other drivers."); | 128 | "on all other drivers.")); |
| 117 | INSERT(Settings, use_reactive_flushing, "Enable Reactive Flushing", | 129 | INSERT( |
| 118 | "Uses reactive flushing instead of predictive flushing, allowing more accurate memory " | 130 | Settings, use_reactive_flushing, tr("Enable Reactive Flushing"), |
| 119 | "syncing."); | 131 | tr("Uses reactive flushing instead of predictive flushing, allowing more accurate memory " |
| 120 | INSERT(Settings, use_video_framerate, "Sync to framerate of video playback", | 132 | "syncing.")); |
| 121 | "Run the game at normal speed during video playback, even when the framerate is " | 133 | INSERT(Settings, use_video_framerate, tr("Sync to framerate of video playback"), |
| 122 | "unlocked."); | 134 | tr("Run the game at normal speed during video playback, even when the framerate is " |
| 123 | INSERT(Settings, barrier_feedback_loops, "Barrier feedback loops", | 135 | "unlocked.")); |
| 124 | "Improves rendering of transparency effects in specific games."); | 136 | INSERT(Settings, barrier_feedback_loops, tr("Barrier feedback loops"), |
| 137 | tr("Improves rendering of transparency effects in specific games.")); | ||
| 125 | 138 | ||
| 126 | // Renderer (Debug) | 139 | // Renderer (Debug) |
| 127 | 140 | ||
| 128 | // System | 141 | // System |
| 129 | INSERT(Settings, rng_seed, "RNG Seed", ""); | 142 | INSERT(Settings, rng_seed, tr("RNG Seed"), QStringLiteral()); |
| 130 | INSERT(Settings, rng_seed_enabled, "", ""); | 143 | INSERT(Settings, rng_seed_enabled, QStringLiteral(), QStringLiteral()); |
| 131 | INSERT(Settings, device_name, "Device Name", ""); | 144 | INSERT(Settings, device_name, tr("Device Name"), QStringLiteral()); |
| 132 | INSERT(Settings, custom_rtc, "Custom RTC", ""); | 145 | INSERT(Settings, custom_rtc, tr("Custom RTC"), QStringLiteral()); |
| 133 | INSERT(Settings, custom_rtc_enabled, "", ""); | 146 | INSERT(Settings, custom_rtc_enabled, QStringLiteral(), QStringLiteral()); |
| 134 | INSERT(Settings, language_index, | 147 | INSERT(Settings, language_index, tr("Language:"), |
| 135 | "Language:", "Note: this can be overridden when region setting is auto-select"); | 148 | tr("Note: this can be overridden when region setting is auto-select")); |
| 136 | INSERT(Settings, region_index, "Region:", ""); | 149 | INSERT(Settings, region_index, tr("Region:"), QStringLiteral()); |
| 137 | INSERT(Settings, time_zone_index, "Time Zone:", ""); | 150 | INSERT(Settings, time_zone_index, tr("Time Zone:"), QStringLiteral()); |
| 138 | INSERT(Settings, sound_index, "Sound Output Mode:", ""); | 151 | INSERT(Settings, sound_index, tr("Sound Output Mode:"), QStringLiteral()); |
| 139 | INSERT(Settings, use_docked_mode, "Console Mode:", ""); | 152 | INSERT(Settings, use_docked_mode, tr("Console Mode:"), QStringLiteral()); |
| 140 | INSERT(Settings, current_user, "", ""); | 153 | INSERT(Settings, current_user, QStringLiteral(), QStringLiteral()); |
| 141 | 154 | ||
| 142 | // Controls | 155 | // Controls |
| 143 | 156 | ||
| @@ -154,11 +167,14 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) { | |||
| 154 | // Ui | 167 | // Ui |
| 155 | 168 | ||
| 156 | // Ui General | 169 | // Ui General |
| 157 | INSERT(UISettings, select_user_on_boot, "Prompt for user on game boot", ""); | 170 | INSERT(UISettings, select_user_on_boot, tr("Prompt for user on game boot"), QStringLiteral()); |
| 158 | INSERT(UISettings, pause_when_in_background, "Pause emulation when in background", ""); | 171 | INSERT(UISettings, pause_when_in_background, tr("Pause emulation when in background"), |
| 159 | INSERT(UISettings, confirm_before_stopping, "Confirm before stopping emulation", ""); | 172 | QStringLiteral()); |
| 160 | INSERT(UISettings, hide_mouse, "Hide mouse on inactivity", ""); | 173 | INSERT(UISettings, confirm_before_stopping, tr("Confirm before stopping emulation"), |
| 161 | INSERT(UISettings, controller_applet_disabled, "Disable controller applet", ""); | 174 | QStringLiteral()); |
| 175 | INSERT(UISettings, hide_mouse, tr("Hide mouse on inactivity"), QStringLiteral()); | ||
| 176 | INSERT(UISettings, controller_applet_disabled, tr("Disable controller applet"), | ||
| 177 | QStringLiteral()); | ||
| 162 | 178 | ||
| 163 | // Ui Debugging | 179 | // Ui Debugging |
| 164 | 180 | ||
| @@ -178,140 +194,141 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent) { | |||
| 178 | return parent->tr(text, context); | 194 | return parent->tr(text, context); |
| 179 | }; | 195 | }; |
| 180 | 196 | ||
| 181 | #define PAIR(ENUM, VALUE, TRANSLATION) \ | 197 | #define PAIR(ENUM, VALUE, TRANSLATION) {static_cast<u32>(Settings::ENUM::VALUE), (TRANSLATION)} |
| 182 | { static_cast<u32>(Settings::ENUM::VALUE), tr(TRANSLATION) } | ||
| 183 | #define CTX_PAIR(ENUM, VALUE, TRANSLATION, CONTEXT) \ | ||
| 184 | { static_cast<u32>(Settings::ENUM::VALUE), tr(TRANSLATION, CONTEXT) } | ||
| 185 | 198 | ||
| 186 | // Intentionally skipping VSyncMode to let the UI fill that one out | 199 | // Intentionally skipping VSyncMode to let the UI fill that one out |
| 187 | 200 | ||
| 188 | translations->insert({Settings::EnumMetadata<Settings::AstcDecodeMode>::Index(), | 201 | translations->insert({Settings::EnumMetadata<Settings::AstcDecodeMode>::Index(), |
| 189 | { | 202 | { |
| 190 | PAIR(AstcDecodeMode, Cpu, "CPU"), | 203 | PAIR(AstcDecodeMode, Cpu, tr("CPU")), |
| 191 | PAIR(AstcDecodeMode, Gpu, "GPU"), | 204 | PAIR(AstcDecodeMode, Gpu, tr("GPU")), |
| 192 | PAIR(AstcDecodeMode, CpuAsynchronous, "CPU Asynchronous"), | 205 | PAIR(AstcDecodeMode, CpuAsynchronous, tr("CPU Asynchronous")), |
| 193 | }}); | ||
| 194 | translations->insert({Settings::EnumMetadata<Settings::AstcRecompression>::Index(), | ||
| 195 | { | ||
| 196 | PAIR(AstcRecompression, Uncompressed, "Uncompressed (Best quality)"), | ||
| 197 | PAIR(AstcRecompression, Bc1, "BC1 (Low quality)"), | ||
| 198 | PAIR(AstcRecompression, Bc3, "BC3 (Medium quality)"), | ||
| 199 | }}); | 206 | }}); |
| 207 | translations->insert( | ||
| 208 | {Settings::EnumMetadata<Settings::AstcRecompression>::Index(), | ||
| 209 | { | ||
| 210 | PAIR(AstcRecompression, Uncompressed, tr("Uncompressed (Best quality)")), | ||
| 211 | PAIR(AstcRecompression, Bc1, tr("BC1 (Low quality)")), | ||
| 212 | PAIR(AstcRecompression, Bc3, tr("BC3 (Medium quality)")), | ||
| 213 | }}); | ||
| 200 | translations->insert({Settings::EnumMetadata<Settings::RendererBackend>::Index(), | 214 | translations->insert({Settings::EnumMetadata<Settings::RendererBackend>::Index(), |
| 201 | { | 215 | { |
| 202 | #ifdef HAS_OPENGL | 216 | #ifdef HAS_OPENGL |
| 203 | PAIR(RendererBackend, OpenGL, "OpenGL"), | 217 | PAIR(RendererBackend, OpenGL, tr("OpenGL")), |
| 204 | #endif | 218 | #endif |
| 205 | PAIR(RendererBackend, Vulkan, "Vulkan"), | 219 | PAIR(RendererBackend, Vulkan, tr("Vulkan")), |
| 206 | PAIR(RendererBackend, Null, "Null"), | 220 | PAIR(RendererBackend, Null, tr("Null")), |
| 207 | }}); | ||
| 208 | translations->insert({Settings::EnumMetadata<Settings::ShaderBackend>::Index(), | ||
| 209 | { | ||
| 210 | PAIR(ShaderBackend, Glsl, "GLSL"), | ||
| 211 | PAIR(ShaderBackend, Glasm, "GLASM (Assembly Shaders, NVIDIA Only)"), | ||
| 212 | PAIR(ShaderBackend, SpirV, "SPIR-V (Experimental, Mesa Only)"), | ||
| 213 | }}); | 221 | }}); |
| 222 | translations->insert( | ||
| 223 | {Settings::EnumMetadata<Settings::ShaderBackend>::Index(), | ||
| 224 | { | ||
| 225 | PAIR(ShaderBackend, Glsl, tr("GLSL")), | ||
| 226 | PAIR(ShaderBackend, Glasm, tr("GLASM (Assembly Shaders, NVIDIA Only)")), | ||
| 227 | PAIR(ShaderBackend, SpirV, tr("SPIR-V (Experimental, Mesa Only)")), | ||
| 228 | }}); | ||
| 214 | translations->insert({Settings::EnumMetadata<Settings::GpuAccuracy>::Index(), | 229 | translations->insert({Settings::EnumMetadata<Settings::GpuAccuracy>::Index(), |
| 215 | { | 230 | { |
| 216 | PAIR(GpuAccuracy, Normal, "Normal"), | 231 | PAIR(GpuAccuracy, Normal, tr("Normal")), |
| 217 | PAIR(GpuAccuracy, High, "High"), | 232 | PAIR(GpuAccuracy, High, tr("High")), |
| 218 | PAIR(GpuAccuracy, Extreme, "Extreme"), | 233 | PAIR(GpuAccuracy, Extreme, tr("Extreme")), |
| 219 | }}); | ||
| 220 | translations->insert({Settings::EnumMetadata<Settings::CpuAccuracy>::Index(), | ||
| 221 | { | ||
| 222 | PAIR(CpuAccuracy, Auto, "Auto"), | ||
| 223 | PAIR(CpuAccuracy, Accurate, "Accurate"), | ||
| 224 | PAIR(CpuAccuracy, Unsafe, "Unsafe"), | ||
| 225 | PAIR(CpuAccuracy, Paranoid, "Paranoid (disables most optimizations)"), | ||
| 226 | }}); | 234 | }}); |
| 235 | translations->insert( | ||
| 236 | {Settings::EnumMetadata<Settings::CpuAccuracy>::Index(), | ||
| 237 | { | ||
| 238 | PAIR(CpuAccuracy, Auto, tr("Auto")), | ||
| 239 | PAIR(CpuAccuracy, Accurate, tr("Accurate")), | ||
| 240 | PAIR(CpuAccuracy, Unsafe, tr("Unsafe")), | ||
| 241 | PAIR(CpuAccuracy, Paranoid, tr("Paranoid (disables most optimizations)")), | ||
| 242 | }}); | ||
| 227 | translations->insert({Settings::EnumMetadata<Settings::FullscreenMode>::Index(), | 243 | translations->insert({Settings::EnumMetadata<Settings::FullscreenMode>::Index(), |
| 228 | { | 244 | { |
| 229 | PAIR(FullscreenMode, Borderless, "Borderless Windowed"), | 245 | PAIR(FullscreenMode, Borderless, tr("Borderless Windowed")), |
| 230 | PAIR(FullscreenMode, Exclusive, "Exclusive Fullscreen"), | 246 | PAIR(FullscreenMode, Exclusive, tr("Exclusive Fullscreen")), |
| 231 | }}); | 247 | }}); |
| 232 | translations->insert({Settings::EnumMetadata<Settings::NvdecEmulation>::Index(), | 248 | translations->insert({Settings::EnumMetadata<Settings::NvdecEmulation>::Index(), |
| 233 | { | 249 | { |
| 234 | PAIR(NvdecEmulation, Off, "No Video Output"), | 250 | PAIR(NvdecEmulation, Off, tr("No Video Output")), |
| 235 | PAIR(NvdecEmulation, Cpu, "CPU Video Decoding"), | 251 | PAIR(NvdecEmulation, Cpu, tr("CPU Video Decoding")), |
| 236 | PAIR(NvdecEmulation, Gpu, "GPU Video Decoding (Default)"), | 252 | PAIR(NvdecEmulation, Gpu, tr("GPU Video Decoding (Default)")), |
| 237 | }}); | ||
| 238 | translations->insert({Settings::EnumMetadata<Settings::ResolutionSetup>::Index(), | ||
| 239 | { | ||
| 240 | PAIR(ResolutionSetup, Res1_2X, "0.5X (360p/540p) [EXPERIMENTAL]"), | ||
| 241 | PAIR(ResolutionSetup, Res3_4X, "0.75X (540p/810p) [EXPERIMENTAL]"), | ||
| 242 | PAIR(ResolutionSetup, Res1X, "1X (720p/1080p)"), | ||
| 243 | PAIR(ResolutionSetup, Res3_2X, "1.5X (1080p/1620p) [EXPERIMENTAL]"), | ||
| 244 | PAIR(ResolutionSetup, Res2X, "2X (1440p/2160p)"), | ||
| 245 | PAIR(ResolutionSetup, Res3X, "3X (2160p/3240p)"), | ||
| 246 | PAIR(ResolutionSetup, Res4X, "4X (2880p/4320p)"), | ||
| 247 | PAIR(ResolutionSetup, Res5X, "5X (3600p/5400p)"), | ||
| 248 | PAIR(ResolutionSetup, Res6X, "6X (4320p/6480p)"), | ||
| 249 | PAIR(ResolutionSetup, Res7X, "7X (5040p/7560p)"), | ||
| 250 | PAIR(ResolutionSetup, Res8X, "8X (5760p/8640p)"), | ||
| 251 | }}); | 253 | }}); |
| 254 | translations->insert( | ||
| 255 | {Settings::EnumMetadata<Settings::ResolutionSetup>::Index(), | ||
| 256 | { | ||
| 257 | PAIR(ResolutionSetup, Res1_2X, tr("0.5X (360p/540p) [EXPERIMENTAL]")), | ||
| 258 | PAIR(ResolutionSetup, Res3_4X, tr("0.75X (540p/810p) [EXPERIMENTAL]")), | ||
| 259 | PAIR(ResolutionSetup, Res1X, tr("1X (720p/1080p)")), | ||
| 260 | PAIR(ResolutionSetup, Res3_2X, tr("1.5X (1080p/1620p) [EXPERIMENTAL]")), | ||
| 261 | PAIR(ResolutionSetup, Res2X, tr("2X (1440p/2160p)")), | ||
| 262 | PAIR(ResolutionSetup, Res3X, tr("3X (2160p/3240p)")), | ||
| 263 | PAIR(ResolutionSetup, Res4X, tr("4X (2880p/4320p)")), | ||
| 264 | PAIR(ResolutionSetup, Res5X, tr("5X (3600p/5400p)")), | ||
| 265 | PAIR(ResolutionSetup, Res6X, tr("6X (4320p/6480p)")), | ||
| 266 | PAIR(ResolutionSetup, Res7X, tr("7X (5040p/7560p)")), | ||
| 267 | PAIR(ResolutionSetup, Res8X, tr("8X (5760p/8640p)")), | ||
| 268 | }}); | ||
| 252 | translations->insert({Settings::EnumMetadata<Settings::ScalingFilter>::Index(), | 269 | translations->insert({Settings::EnumMetadata<Settings::ScalingFilter>::Index(), |
| 253 | { | 270 | { |
| 254 | PAIR(ScalingFilter, NearestNeighbor, "Nearest Neighbor"), | 271 | PAIR(ScalingFilter, NearestNeighbor, tr("Nearest Neighbor")), |
| 255 | PAIR(ScalingFilter, Bilinear, "Bilinear"), | 272 | PAIR(ScalingFilter, Bilinear, tr("Bilinear")), |
| 256 | PAIR(ScalingFilter, Bicubic, "Bicubic"), | 273 | PAIR(ScalingFilter, Bicubic, tr("Bicubic")), |
| 257 | PAIR(ScalingFilter, Gaussian, "Gaussian"), | 274 | PAIR(ScalingFilter, Gaussian, tr("Gaussian")), |
| 258 | PAIR(ScalingFilter, ScaleForce, "ScaleForce"), | 275 | PAIR(ScalingFilter, ScaleForce, tr("ScaleForce")), |
| 259 | PAIR(ScalingFilter, Fsr, "AMD FidelityFX™️ Super Resolution"), | 276 | PAIR(ScalingFilter, Fsr, tr("AMD FidelityFX™️ Super Resolution")), |
| 260 | }}); | 277 | }}); |
| 261 | translations->insert({Settings::EnumMetadata<Settings::AntiAliasing>::Index(), | 278 | translations->insert({Settings::EnumMetadata<Settings::AntiAliasing>::Index(), |
| 262 | { | 279 | { |
| 263 | PAIR(AntiAliasing, None, "None"), | 280 | PAIR(AntiAliasing, None, tr("None")), |
| 264 | PAIR(AntiAliasing, Fxaa, "FXAA"), | 281 | PAIR(AntiAliasing, Fxaa, tr("FXAA")), |
| 265 | PAIR(AntiAliasing, Smaa, "SMAA"), | 282 | PAIR(AntiAliasing, Smaa, tr("SMAA")), |
| 266 | }}); | 283 | }}); |
| 267 | translations->insert({Settings::EnumMetadata<Settings::AspectRatio>::Index(), | 284 | translations->insert({Settings::EnumMetadata<Settings::AspectRatio>::Index(), |
| 268 | { | 285 | { |
| 269 | PAIR(AspectRatio, R16_9, "Default (16:9)"), | 286 | PAIR(AspectRatio, R16_9, tr("Default (16:9)")), |
| 270 | PAIR(AspectRatio, R4_3, "Force 4:3"), | 287 | PAIR(AspectRatio, R4_3, tr("Force 4:3")), |
| 271 | PAIR(AspectRatio, R21_9, "Force 21:9"), | 288 | PAIR(AspectRatio, R21_9, tr("Force 21:9")), |
| 272 | PAIR(AspectRatio, R16_10, "Force 16:10"), | 289 | PAIR(AspectRatio, R16_10, tr("Force 16:10")), |
| 273 | PAIR(AspectRatio, Stretch, "Stretch to Window"), | 290 | PAIR(AspectRatio, Stretch, tr("Stretch to Window")), |
| 274 | }}); | 291 | }}); |
| 275 | translations->insert({Settings::EnumMetadata<Settings::AnisotropyMode>::Index(), | 292 | translations->insert({Settings::EnumMetadata<Settings::AnisotropyMode>::Index(), |
| 276 | { | 293 | { |
| 277 | PAIR(AnisotropyMode, Automatic, "Automatic"), | 294 | PAIR(AnisotropyMode, Automatic, tr("Automatic")), |
| 278 | PAIR(AnisotropyMode, Default, "Default"), | 295 | PAIR(AnisotropyMode, Default, tr("Default")), |
| 279 | PAIR(AnisotropyMode, X2, "2x"), | 296 | PAIR(AnisotropyMode, X2, tr("2x")), |
| 280 | PAIR(AnisotropyMode, X4, "4x"), | 297 | PAIR(AnisotropyMode, X4, tr("4x")), |
| 281 | PAIR(AnisotropyMode, X8, "8x"), | 298 | PAIR(AnisotropyMode, X8, tr("8x")), |
| 282 | PAIR(AnisotropyMode, X16, "16x"), | 299 | PAIR(AnisotropyMode, X16, tr("16x")), |
| 283 | }}); | 300 | }}); |
| 284 | translations->insert( | 301 | translations->insert( |
| 285 | {Settings::EnumMetadata<Settings::Language>::Index(), | 302 | {Settings::EnumMetadata<Settings::Language>::Index(), |
| 286 | { | 303 | { |
| 287 | PAIR(Language, Japanese, "Japanese (日本語)"), | 304 | PAIR(Language, Japanese, tr("Japanese (日本語)")), |
| 288 | PAIR(Language, EnglishAmerican, "American English"), | 305 | PAIR(Language, EnglishAmerican, tr("American English")), |
| 289 | PAIR(Language, French, "French (français)"), | 306 | PAIR(Language, French, tr("French (français)")), |
| 290 | PAIR(Language, German, "German (Deutsch)"), | 307 | PAIR(Language, German, tr("German (Deutsch)")), |
| 291 | PAIR(Language, Italian, "Italian (italiano)"), | 308 | PAIR(Language, Italian, tr("Italian (italiano)")), |
| 292 | PAIR(Language, Spanish, "Spanish (español)"), | 309 | PAIR(Language, Spanish, tr("Spanish (español)")), |
| 293 | PAIR(Language, Chinese, "Chinese"), | 310 | PAIR(Language, Chinese, tr("Chinese")), |
| 294 | PAIR(Language, Korean, "Korean (한국어)"), | 311 | PAIR(Language, Korean, tr("Korean (한국어)")), |
| 295 | PAIR(Language, Dutch, "Dutch (Nederlands)"), | 312 | PAIR(Language, Dutch, tr("Dutch (Nederlands)")), |
| 296 | PAIR(Language, Portuguese, "Portuguese (português)"), | 313 | PAIR(Language, Portuguese, tr("Portuguese (português)")), |
| 297 | PAIR(Language, Russian, "Russian (Русский)"), | 314 | PAIR(Language, Russian, tr("Russian (Русский)")), |
| 298 | PAIR(Language, Taiwanese, "Taiwanese"), | 315 | PAIR(Language, Taiwanese, tr("Taiwanese")), |
| 299 | PAIR(Language, EnglishBritish, "British English"), | 316 | PAIR(Language, EnglishBritish, tr("British English")), |
| 300 | PAIR(Language, FrenchCanadian, "Canadian French"), | 317 | PAIR(Language, FrenchCanadian, tr("Canadian French")), |
| 301 | PAIR(Language, SpanishLatin, "Latin American Spanish"), | 318 | PAIR(Language, SpanishLatin, tr("Latin American Spanish")), |
| 302 | PAIR(Language, ChineseSimplified, "Simplified Chinese"), | 319 | PAIR(Language, ChineseSimplified, tr("Simplified Chinese")), |
| 303 | PAIR(Language, ChineseTraditional, "Traditional Chinese (正體中文)"), | 320 | PAIR(Language, ChineseTraditional, tr("Traditional Chinese (正體中文)")), |
| 304 | PAIR(Language, PortugueseBrazilian, "Brazilian Portuguese (português do Brasil)"), | 321 | PAIR(Language, PortugueseBrazilian, tr("Brazilian Portuguese (português do Brasil)")), |
| 305 | }}); | 322 | }}); |
| 306 | translations->insert({Settings::EnumMetadata<Settings::Region>::Index(), | 323 | translations->insert({Settings::EnumMetadata<Settings::Region>::Index(), |
| 307 | { | 324 | { |
| 308 | PAIR(Region, Japan, "Japan"), | 325 | PAIR(Region, Japan, tr("Japan")), |
| 309 | PAIR(Region, Usa, "USA"), | 326 | PAIR(Region, Usa, tr("USA")), |
| 310 | PAIR(Region, Europe, "Europe"), | 327 | PAIR(Region, Europe, tr("Europe")), |
| 311 | PAIR(Region, Australia, "Australia"), | 328 | PAIR(Region, Australia, tr("Australia")), |
| 312 | PAIR(Region, China, "China"), | 329 | PAIR(Region, China, tr("China")), |
| 313 | PAIR(Region, Korea, "Korea"), | 330 | PAIR(Region, Korea, tr("Korea")), |
| 314 | PAIR(Region, Taiwan, "Taiwan"), | 331 | PAIR(Region, Taiwan, tr("Taiwan")), |
| 315 | }}); | 332 | }}); |
| 316 | translations->insert( | 333 | translations->insert( |
| 317 | {Settings::EnumMetadata<Settings::TimeZone>::Index(), | 334 | {Settings::EnumMetadata<Settings::TimeZone>::Index(), |
| @@ -323,72 +340,74 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent) { | |||
| 323 | {static_cast<u32>(Settings::TimeZone::Default), | 340 | {static_cast<u32>(Settings::TimeZone::Default), |
| 324 | tr("Default (%1)", "Default time zone") | 341 | tr("Default (%1)", "Default time zone") |
| 325 | .arg(QString::fromStdString(Common::TimeZone::GetDefaultTimeZone()))}, | 342 | .arg(QString::fromStdString(Common::TimeZone::GetDefaultTimeZone()))}, |
| 326 | PAIR(TimeZone, Cet, "CET"), | 343 | PAIR(TimeZone, Cet, tr("CET")), |
| 327 | PAIR(TimeZone, Cst6Cdt, "CST6CDT"), | 344 | PAIR(TimeZone, Cst6Cdt, tr("CST6CDT")), |
| 328 | PAIR(TimeZone, Cuba, "Cuba"), | 345 | PAIR(TimeZone, Cuba, tr("Cuba")), |
| 329 | PAIR(TimeZone, Eet, "EET"), | 346 | PAIR(TimeZone, Eet, tr("EET")), |
| 330 | PAIR(TimeZone, Egypt, "Egypt"), | 347 | PAIR(TimeZone, Egypt, tr("Egypt")), |
| 331 | PAIR(TimeZone, Eire, "Eire"), | 348 | PAIR(TimeZone, Eire, tr("Eire")), |
| 332 | PAIR(TimeZone, Est, "EST"), | 349 | PAIR(TimeZone, Est, tr("EST")), |
| 333 | PAIR(TimeZone, Est5Edt, "EST5EDT"), | 350 | PAIR(TimeZone, Est5Edt, tr("EST5EDT")), |
| 334 | PAIR(TimeZone, Gb, "GB"), | 351 | PAIR(TimeZone, Gb, tr("GB")), |
| 335 | PAIR(TimeZone, GbEire, "GB-Eire"), | 352 | PAIR(TimeZone, GbEire, tr("GB-Eire")), |
| 336 | PAIR(TimeZone, Gmt, "GMT"), | 353 | PAIR(TimeZone, Gmt, tr("GMT")), |
| 337 | PAIR(TimeZone, GmtPlusZero, "GMT+0"), | 354 | PAIR(TimeZone, GmtPlusZero, tr("GMT+0")), |
| 338 | PAIR(TimeZone, GmtMinusZero, "GMT-0"), | 355 | PAIR(TimeZone, GmtMinusZero, tr("GMT-0")), |
| 339 | PAIR(TimeZone, GmtZero, "GMT0"), | 356 | PAIR(TimeZone, GmtZero, tr("GMT0")), |
| 340 | PAIR(TimeZone, Greenwich, "Greenwich"), | 357 | PAIR(TimeZone, Greenwich, tr("Greenwich")), |
| 341 | PAIR(TimeZone, Hongkong, "Hongkong"), | 358 | PAIR(TimeZone, Hongkong, tr("Hongkong")), |
| 342 | PAIR(TimeZone, Hst, "HST"), | 359 | PAIR(TimeZone, Hst, tr("HST")), |
| 343 | PAIR(TimeZone, Iceland, "Iceland"), | 360 | PAIR(TimeZone, Iceland, tr("Iceland")), |
| 344 | PAIR(TimeZone, Iran, "Iran"), | 361 | PAIR(TimeZone, Iran, tr("Iran")), |
| 345 | PAIR(TimeZone, Israel, "Israel"), | 362 | PAIR(TimeZone, Israel, tr("Israel")), |
| 346 | PAIR(TimeZone, Jamaica, "Jamaica"), | 363 | PAIR(TimeZone, Jamaica, tr("Jamaica")), |
| 347 | PAIR(TimeZone, Japan, "Japan"), | 364 | PAIR(TimeZone, Japan, tr("Japan")), |
| 348 | PAIR(TimeZone, Kwajalein, "Kwajalein"), | 365 | PAIR(TimeZone, Kwajalein, tr("Kwajalein")), |
| 349 | PAIR(TimeZone, Libya, "Libya"), | 366 | PAIR(TimeZone, Libya, tr("Libya")), |
| 350 | PAIR(TimeZone, Met, "MET"), | 367 | PAIR(TimeZone, Met, tr("MET")), |
| 351 | PAIR(TimeZone, Mst, "MST"), | 368 | PAIR(TimeZone, Mst, tr("MST")), |
| 352 | PAIR(TimeZone, Mst7Mdt, "MST7MDT"), | 369 | PAIR(TimeZone, Mst7Mdt, tr("MST7MDT")), |
| 353 | PAIR(TimeZone, Navajo, "Navajo"), | 370 | PAIR(TimeZone, Navajo, tr("Navajo")), |
| 354 | PAIR(TimeZone, Nz, "NZ"), | 371 | PAIR(TimeZone, Nz, tr("NZ")), |
| 355 | PAIR(TimeZone, NzChat, "NZ-CHAT"), | 372 | PAIR(TimeZone, NzChat, tr("NZ-CHAT")), |
| 356 | PAIR(TimeZone, Poland, "Poland"), | 373 | PAIR(TimeZone, Poland, tr("Poland")), |
| 357 | PAIR(TimeZone, Portugal, "Portugal"), | 374 | PAIR(TimeZone, Portugal, tr("Portugal")), |
| 358 | PAIR(TimeZone, Prc, "PRC"), | 375 | PAIR(TimeZone, Prc, tr("PRC")), |
| 359 | PAIR(TimeZone, Pst8Pdt, "PST8PDT"), | 376 | PAIR(TimeZone, Pst8Pdt, tr("PST8PDT")), |
| 360 | PAIR(TimeZone, Roc, "ROC"), | 377 | PAIR(TimeZone, Roc, tr("ROC")), |
| 361 | PAIR(TimeZone, Rok, "ROK"), | 378 | PAIR(TimeZone, Rok, tr("ROK")), |
| 362 | PAIR(TimeZone, Singapore, "Singapore"), | 379 | PAIR(TimeZone, Singapore, tr("Singapore")), |
| 363 | PAIR(TimeZone, Turkey, "Turkey"), | 380 | PAIR(TimeZone, Turkey, tr("Turkey")), |
| 364 | PAIR(TimeZone, Uct, "UCT"), | 381 | PAIR(TimeZone, Uct, tr("UCT")), |
| 365 | PAIR(TimeZone, Universal, "Universal"), | 382 | PAIR(TimeZone, Universal, tr("Universal")), |
| 366 | PAIR(TimeZone, Utc, "UTC"), | 383 | PAIR(TimeZone, Utc, tr("UTC")), |
| 367 | PAIR(TimeZone, WSu, "W-SU"), | 384 | PAIR(TimeZone, WSu, tr("W-SU")), |
| 368 | PAIR(TimeZone, Wet, "WET"), | 385 | PAIR(TimeZone, Wet, tr("WET")), |
| 369 | PAIR(TimeZone, Zulu, "Zulu"), | 386 | PAIR(TimeZone, Zulu, tr("Zulu")), |
| 370 | }}); | 387 | }}); |
| 371 | translations->insert({Settings::EnumMetadata<Settings::AudioMode>::Index(), | 388 | translations->insert({Settings::EnumMetadata<Settings::AudioMode>::Index(), |
| 372 | { | 389 | { |
| 373 | PAIR(AudioMode, Mono, "Mono"), | 390 | PAIR(AudioMode, Mono, tr("Mono")), |
| 374 | PAIR(AudioMode, Stereo, "Stereo"), | 391 | PAIR(AudioMode, Stereo, tr("Stereo")), |
| 375 | PAIR(AudioMode, Surround, "Surround"), | 392 | PAIR(AudioMode, Surround, tr("Surround")), |
| 376 | }}); | 393 | }}); |
| 377 | translations->insert({Settings::EnumMetadata<Settings::MemoryLayout>::Index(), | 394 | translations->insert({Settings::EnumMetadata<Settings::MemoryLayout>::Index(), |
| 378 | { | 395 | { |
| 379 | PAIR(MemoryLayout, Memory_4Gb, "4GB DRAM (Default)"), | 396 | PAIR(MemoryLayout, Memory_4Gb, tr("4GB DRAM (Default)")), |
| 380 | PAIR(MemoryLayout, Memory_6Gb, "6GB DRAM (Unsafe)"), | 397 | PAIR(MemoryLayout, Memory_6Gb, tr("6GB DRAM (Unsafe)")), |
| 381 | PAIR(MemoryLayout, Memory_8Gb, "8GB DRAM (Unsafe)"), | 398 | PAIR(MemoryLayout, Memory_8Gb, tr("8GB DRAM (Unsafe)")), |
| 399 | }}); | ||
| 400 | translations->insert({Settings::EnumMetadata<Settings::ConsoleMode>::Index(), | ||
| 401 | { | ||
| 402 | PAIR(ConsoleMode, Docked, tr("Docked")), | ||
| 403 | PAIR(ConsoleMode, Handheld, tr("Handheld")), | ||
| 382 | }}); | 404 | }}); |
| 383 | translations->insert( | ||
| 384 | {Settings::EnumMetadata<Settings::ConsoleMode>::Index(), | ||
| 385 | {PAIR(ConsoleMode, Docked, "Docked"), PAIR(ConsoleMode, Handheld, "Handheld")}}); | ||
| 386 | translations->insert( | 405 | translations->insert( |
| 387 | {Settings::EnumMetadata<Settings::ConfirmStop>::Index(), | 406 | {Settings::EnumMetadata<Settings::ConfirmStop>::Index(), |
| 388 | { | 407 | { |
| 389 | PAIR(ConfirmStop, Ask_Always, "Always ask (Default)"), | 408 | PAIR(ConfirmStop, Ask_Always, tr("Always ask (Default)")), |
| 390 | PAIR(ConfirmStop, Ask_Based_On_Game, "Only if game specifies not to stop"), | 409 | PAIR(ConfirmStop, Ask_Based_On_Game, tr("Only if game specifies not to stop")), |
| 391 | PAIR(ConfirmStop, Ask_Never, "Never ask"), | 410 | PAIR(ConfirmStop, Ask_Never, tr("Never ask")), |
| 392 | }}); | 411 | }}); |
| 393 | 412 | ||
| 394 | #undef PAIR | 413 | #undef PAIR |