(svn r10711) -Fix [Win32]: take default language from current user's locale on Windows (In-)
--- a/src/strings.cpp Fri Jul 27 22:13:12 2007 +0000
+++ b/src/strings.cpp Fri Jul 27 22:19:19 2007 +0000
@@ -1224,6 +1224,8 @@
return true;
}
+/* Win32 implementation in win32.cpp. */
+#ifndef WIN32
/** Determine the current charset based on the environment
* First check some default values, after this one we passed ourselves
* and if none exist return the value for $LANG
@@ -1247,6 +1249,7 @@
return getenv("LANG");
}
+#endif /* ifndef WIN32 */
static int CDECL LanguageCompareFunc(const void *a, const void *b)
{
--- a/src/win32.cpp Fri Jul 27 22:13:12 2007 +0000
+++ b/src/win32.cpp Fri Jul 27 22:19:19 2007 +0000
@@ -1264,3 +1264,18 @@
return E_INVALIDARG;
}
+
+/** Determine the current user's locale. */
+const char *GetCurrentLocale(const char *)
+{
+ char lang[32], country[32];
+ static char retbuf[64];
+ if (GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME, lang, lengthof(lang)) == 0 ||
+ GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, country, lengthof(country)) == 0) {
+ /* Unable to retrieve the locale. */
+ return NULL;
+ }
+ /* Format it as 'en_us'. */
+ sprintf(retbuf, "%c%c_%c%c\0", lang[0], lang[1], country[0], country[1]);
+ return retbuf;
+}