[colobot] 277/390: Modified locale setting code
Didier Raboud
odyx at moszumanska.debian.org
Fri Jun 12 14:21:54 UTC 2015
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch upstream/latest
in repository colobot.
commit 87cf056158c9cb208b6fb2701118c82a2f29e660
Author: krzys-h <krzys_h at interia.pl>
Date: Sat Mar 21 13:09:05 2015 +0100
Modified locale setting code
I'm doing my best to fix #445. At least shouldn't crash anymore.
Needs more testing.
---
src/app/app.cpp | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/app/app.cpp b/src/app/app.cpp
index d0e783d..72adb0f 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -1682,8 +1682,29 @@ void CApplication::SetLanguage(Language language)
putenv(S_LANGUAGE);
GetLogger()->Trace("SetLanguage: Set LANGUAGE=%s in environment\n", locale.c_str());
}
-
- std::locale::global(std::locale(std::locale(""), "C", std::locale::numeric));
+
+ std::setlocale(LC_ALL, ""); // Load system locale
+ std::setlocale(LC_NUMERIC, "C"); // Force numeric locale to "C" (fixes decimal point problems)
+ char* systemLocale = std::setlocale(LC_ALL, nullptr); // Get current locale configuration
+ GetLogger()->Debug("System locale: %s\n", systemLocale);
+ // Update C++ locale
+ try
+ {
+ std::locale::global(std::locale(systemLocale));
+ }
+ catch(...)
+ {
+ GetLogger()->Warn("Failed to update locale, possibly incorect system configuration. Will fallback to classic locale.\n");
+ try
+ {
+ std::locale::global(std::locale::classic());
+ std::setlocale(LC_ALL, systemLocale); // C locale might still work correctly
+ }
+ catch(...)
+ {
+ GetLogger()->Warn("Failed to set classic locale. Something is really messed up in your system configuration. Translations probably won't work.\n");
+ }
+ }
bindtextdomain("colobot", m_pathManager->GetLangPath().c_str());
bind_textdomain_codeset("colobot", "UTF-8");
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list