diff options
author | KUDr <kudr@openttd.org> | 2007-07-27 22:19:19 +0000 |
---|---|---|
committer | KUDr <kudr@openttd.org> | 2007-07-27 22:19:19 +0000 |
commit | f9411f30c4e955968e7abdecade3303b5e63bb4c (patch) | |
tree | e75eaf77cb4fd8c8fa42083e7e90ce01cd170772 /src | |
parent | 1c4b953f0673a483c9d62b56efe8611db1ac5839 (diff) | |
download | openttd-f9411f30c4e955968e7abdecade3303b5e63bb4c.tar.xz |
(svn r10711) -Fix [Win32]: take default language from current user's locale on Windows (In-)
Diffstat (limited to 'src')
-rw-r--r-- | src/strings.cpp | 3 | ||||
-rw-r--r-- | src/win32.cpp | 15 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 4ea1bc273..51dc504ad 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1224,6 +1224,8 @@ bool ReadLanguagePack(int lang_index) 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 @@ const char *GetCurrentLocale(const char *param) return getenv("LANG"); } +#endif /* ifndef WIN32 */ static int CDECL LanguageCompareFunc(const void *a, const void *b) { diff --git a/src/win32.cpp b/src/win32.cpp index a734acf59..0580087ca 100644 --- a/src/win32.cpp +++ b/src/win32.cpp @@ -1264,3 +1264,18 @@ HRESULT OTTDSHGetFolderPath(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, 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; +} |