From 9dc5d299f11c599862d39af3e32d92e787c1ae7b Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Thu, 30 Mar 2017 12:56:38 -0500 Subject: [PATCH] kernel32: Improve locale detection on Android. setlocale is coded to just return 'C' for all inquiries ignoring locale that may be set in the environment. Signed-off-by: Aric Stewart Signed-off-by: Alexandre Julliard --- dlls/kernel32/locale.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index e14aedbe44c..a72a8aa0f74 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -985,6 +985,15 @@ static const char* get_locale(int category, const char* category_name) { const char* ret = setlocale(category, NULL); +#ifdef __ANDROID__ + if (!strcmp(ret, "C")) + { + ret = getenv( category_name ); + if (!ret || !ret[0]) ret = getenv( "LC_ALL" ); + if (!ret || !ret[0]) ret = "C"; + } +#endif + #ifdef __APPLE__ /* If LC_ALL is set, respect it as a user override. If LC_* is set, respect it as a user override, except if it's LC_CTYPE