summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/ConfigManager.cpp4
-rw-r--r--Source/Core/Core/ConfigManager.h2
-rw-r--r--Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp40
-rw-r--r--Source/Core/DolphinWX/Main.cpp22
4 files changed, 28 insertions, 40 deletions
diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp
index 0cf06f4e97..b1a63626f6 100644
--- a/Source/Core/Core/ConfigManager.cpp
+++ b/Source/Core/Core/ConfigManager.cpp
@@ -156,7 +156,7 @@ void SConfig::SaveInterfaceSettings(IniFile& ini)
interface->Set("MainWindowPosY", (iPosY == -32000) ? 0 : iPosY); // TODO - HAX
interface->Set("MainWindowWidth", iWidth);
interface->Set("MainWindowHeight", iHeight);
- interface->Set("Language", m_InterfaceLanguage);
+ interface->Set("LanguageCode", m_InterfaceLanguage);
interface->Set("ShowToolbar", m_InterfaceToolbar);
interface->Set("ShowStatusbar", m_InterfaceStatusbar);
interface->Set("ShowLogWindow", m_InterfaceLogWindow);
@@ -423,7 +423,7 @@ void SConfig::LoadInterfaceSettings(IniFile& ini)
interface->Get("MainWindowPosY", &iPosY, 100);
interface->Get("MainWindowWidth", &iWidth, 800);
interface->Get("MainWindowHeight", &iHeight, 600);
- interface->Get("Language", &m_InterfaceLanguage, 0);
+ interface->Get("LanguageCode", &m_InterfaceLanguage, "");
interface->Get("ShowToolbar", &m_InterfaceToolbar, true);
interface->Get("ShowStatusbar", &m_InterfaceStatusbar, true);
interface->Get("ShowLogWindow", &m_InterfaceLogWindow, false);
diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h
index e8fa5eee7d..0f819797d7 100644
--- a/Source/Core/Core/ConfigManager.h
+++ b/Source/Core/Core/ConfigManager.h
@@ -210,7 +210,7 @@ struct SConfig : NonCopyable
std::string m_bba_mac;
// interface language
- int m_InterfaceLanguage;
+ std::string m_InterfaceLanguage;
float m_EmulationSpeed;
bool m_OCEnable;
float m_OCFactor;
diff --git a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp
index a3934c9b8f..30a3c7aa30 100644
--- a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp
+++ b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp
@@ -27,38 +27,14 @@
#include "DolphinWX/X11Utils.h"
#endif
-static const wxLanguage language_ids[] = {
- wxLANGUAGE_DEFAULT,
-
- wxLANGUAGE_MALAY,
- wxLANGUAGE_CATALAN,
- wxLANGUAGE_CZECH,
- wxLANGUAGE_DANISH,
- wxLANGUAGE_GERMAN,
- wxLANGUAGE_ENGLISH,
- wxLANGUAGE_SPANISH,
- wxLANGUAGE_FRENCH,
- wxLANGUAGE_CROATIAN,
- wxLANGUAGE_ITALIAN,
- wxLANGUAGE_HUNGARIAN,
- wxLANGUAGE_DUTCH,
- wxLANGUAGE_NORWEGIAN_BOKMAL,
- wxLANGUAGE_POLISH,
- wxLANGUAGE_PORTUGUESE,
- wxLANGUAGE_PORTUGUESE_BRAZILIAN,
- wxLANGUAGE_ROMANIAN,
- wxLANGUAGE_SERBIAN,
- wxLANGUAGE_SWEDISH,
- wxLANGUAGE_TURKISH,
-
- wxLANGUAGE_GREEK,
- wxLANGUAGE_RUSSIAN,
- wxLANGUAGE_ARABIC,
- wxLANGUAGE_FARSI,
- wxLANGUAGE_KOREAN,
- wxLANGUAGE_JAPANESE,
- wxLANGUAGE_CHINESE_SIMPLIFIED,
- wxLANGUAGE_CHINESE_TRADITIONAL,
+static const std::string language_ids[] = {
+ "",
+
+ "ms", "ca", "cs", "da", "de", "en", "es", "fr", "hr", "it", "hu", "nl",
+ "nb", // wxWidgets won't accept "no"
+ "pl", "pt", "pt_BR", "ro", "sr", "sv", "tr",
+
+ "el", "ru", "ar", "fa", "ko", "ja", "zh_CN", "zh_TW",
};
InterfaceConfigPane::InterfaceConfigPane(wxWindow* parent, wxWindowID id) : wxPanel(parent, id)
diff --git a/Source/Core/DolphinWX/Main.cpp b/Source/Core/DolphinWX/Main.cpp
index 20460e258c..12938544d6 100644
--- a/Source/Core/DolphinWX/Main.cpp
+++ b/Source/Core/DolphinWX/Main.cpp
@@ -295,11 +295,23 @@ void DolphinApp::AfterInit()
void DolphinApp::InitLanguageSupport()
{
- unsigned int language = 0;
-
- IniFile ini;
- ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
- ini.GetOrCreateSection("Interface")->Get("Language", &language, wxLANGUAGE_DEFAULT);
+ std::string language_code;
+ {
+ IniFile ini;
+ ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
+ ini.GetOrCreateSection("Interface")->Get("LanguageCode", &language_code, "");
+ }
+ int language = wxLANGUAGE_UNKNOWN;
+ if (language_code.empty())
+ {
+ language = wxLANGUAGE_DEFAULT;
+ }
+ else
+ {
+ const wxLanguageInfo* language_info = wxLocale::FindLanguageInfo(StrToWxStr(language_code));
+ if (language_info)
+ language = language_info->Language;
+ }
// Load language if possible, fall back to system default otherwise
if (wxLocale::IsAvailable(language))