From 678d338966acbbc1246ff1b3aad32c2565ce4d2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=9Aniatowski?= Date: Sat, 28 Mar 2009 14:40:06 +0100 Subject: [PATCH] Do not call setlocale with LC_ALL on windows... ...when trying to set the unavailable on win32 LC_MESSAGES, instead just return. Also only set LANG env var when setting LC_MESSAGES and never set the LC_ALL var. This fixes the units not submerging bug and possibly more issues as floats will now load correctly regardless of locale. --- src/language.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/language.cpp b/src/language.cpp index 9de8e1e89c4..1b60e5d5263 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -210,17 +210,15 @@ static void wesnoth_setlocale(int category, std::string slocale, #endif #ifdef _WIN32 - std::string env = "LANG=" + slocale; - _putenv(env.c_str()); - env = "LC_ALL=" + slocale; - _putenv(env.c_str()); std::string win_locale = locale; win_locale = win_locale.substr(0,2); #include "language_win32.ii" - SetEnvironmentVariable("LANG", win_locale.c_str()); - SetEnvironmentVariable("LC_ALL", win_locale.c_str()); - if(category == LC_MESSAGES) - category = LC_ALL; + if(category == LC_MESSAGES) { + std::string env = "LANG=" + slocale; + _putenv(env.c_str()); + SetEnvironmentVariable("LANG", win_locale.c_str()); + return; + } locale = win_locale.c_str(); #endif @@ -296,6 +294,10 @@ static void wesnoth_setlocale(int category, std::string slocale, << locale << "'.\n"; else LOG_GENERAL << "set locale to '" << (try_loc.get()) << "' result: '" << res <<"'\n"; + + DBG_GENERAL << "Numeric locale: " << std::setlocale(LC_NUMERIC, NULL) << '\n'; + DBG_GENERAL << "Full locale: " << std::setlocale(LC_ALL, NULL) << '\n'; + } bool set_language(const language_def& locale)