# HG changeset patch # User KUDr # Date 1185574759 0 # Node ID fbecfb6e2c2b86781d129b74158b5fb9ff7ff405 # Parent ec16ba9480c52bb8dda0df7d252846588f241462 (svn r10711) -Fix [Win32]: take default language from current user's locale on Windows (In-) diff -r ec16ba9480c5 -r fbecfb6e2c2b src/strings.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) { diff -r ec16ba9480c5 -r fbecfb6e2c2b src/win32.cpp --- 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; +}