(svn r10711) -Fix [Win32]: take default language from current user's locale on Windows (In-)
authorKUDr
Fri, 27 Jul 2007 22:19:19 +0000
changeset 7844 fbecfb6e2c2b
parent 7843 ec16ba9480c5
child 7845 af62980009e7
(svn r10711) -Fix [Win32]: take default language from current user's locale on Windows (In-)
src/strings.cpp
src/win32.cpp
--- 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;
+}