Don't call setlocale("") on startup by default any longer.

This undoes the changes of r44773 because calling setlocale() resulted in C
locale being set differently from C++ locale which was confusing and led to
huge slowdowns in any code using std::stream with at least MinGW. And setting
the C++ locale to be the same, as r72719 tried to do, doesn't seem to be
practical as it results in immediate crashes under OS X and MinGW when used
under XP.

Do provide wxApp::SetCLocale() helper to explicitly do what was previously
done implicitly, even though currently it is a trivial wrapper for setlocale()
and we don't even need to call gtk_set_locale() as it has never done anything
else and is deprecated since GTK+ 2.24.

Closes #14780.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-11-14 13:46:50 +00:00
parent 40df8a51f2
commit b51014176a
9 changed files with 65 additions and 64 deletions

View File

@@ -561,6 +561,33 @@ public:
//@}
/**
Sets the C locale to the default locale for the current environment.
It is advised to call this to ensure that the underlying toolkit uses
the locale in which the numbers and monetary amounts are shown in the
format expected by user and so on.
Calling this function is roughly equivalent to calling
@code
setlocale(LC_ALL, "");
@endcode
but performs additional toolkit-specific tasks under some platforms and
so should be used instead of @c setlocale() itself. Alternatively, you
can use wxLocale to change the locale with more control.
Notice that this does @em not change the global C++ locale, you need to
do it explicitly if you want, e.g.
@code
std::locale::global(std::locale(""));
@endcode
but be warned that locale support in C++ standard library can be poor
or worse under some platforms, e.g. the above line results in an
immediate crash under OS X up to the version 10.8.2.
@since 2.9.5
*/
void SetCLocale();
/**
Number of command line arguments (after environment-specific processing).