diff options
| author | JosJuice <josjuice@gmail.com> | 2016-08-12 14:01:56 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2016-08-12 15:29:34 +0200 |
| commit | f63461175c3e665ecb7b7a51622babbbecce351d (patch) | |
| tree | 7b085443226e45946ff427bf6c0c05f9ce0d5f93 /Source/Core | |
| parent | ed9007cab7d46e8fb271cfb5536c1936097dbf6c (diff) | |
DolphinWX: Loose language matching in interface config
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp index 30a3c7aa30..ae1a79ba04 100644 --- a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include <array> +#include <limits> #include <string> #include <wx/button.h> @@ -12,6 +14,7 @@ #include <wx/sizer.h> #include <wx/stattext.h> +#include "Common/CommonFuncs.h" #include "Common/CommonPaths.h" #include "Common/FileSearch.h" #include "Common/FileUtil.h" @@ -27,7 +30,7 @@ #include "DolphinWX/X11Utils.h" #endif -static const std::string language_ids[] = { +static const std::array<std::string, 29> language_ids = { "", "ms", "ca", "cs", "da", "de", "en", "es", "fr", "hr", "it", "hu", "nl", @@ -146,14 +149,26 @@ void InterfaceConfigPane::LoadGUIValues() m_osd_messages_checkbox->SetValue(startup_params.bOnScreenDisplayMessages); m_pause_focus_lost_checkbox->SetValue(SConfig::GetInstance().m_PauseOnFocusLost); - for (size_t i = 0; i < sizeof(language_ids) / sizeof(wxLanguage); i++) + const std::string exact_language = SConfig::GetInstance().m_InterfaceLanguage; + const std::string loose_language = exact_language.substr(0, exact_language.find('_')); + size_t exact_match_index = std::numeric_limits<size_t>::max(); + size_t loose_match_index = std::numeric_limits<size_t>::max(); + for (size_t i = 0; i < language_ids.size(); i++) { - if (language_ids[i] == SConfig::GetInstance().m_InterfaceLanguage) + if (language_ids[i] == exact_language) { - m_interface_lang_choice->SetSelection(i); + exact_match_index = i; break; } + else if (language_ids[i] == loose_language) + { + loose_match_index = i; + } } + if (exact_match_index != std::numeric_limits<size_t>::max()) + m_interface_lang_choice->SetSelection(exact_match_index); + else if (loose_match_index != std::numeric_limits<size_t>::max()) + m_interface_lang_choice->SetSelection(loose_match_index); LoadThemes(); } |
