File bash-4.0-setlocale.dif of Package bash

--- locale.c
+++ locale.c	2008-11-25 13:41:50.000000000 +0000
@@ -47,6 +47,7 @@ extern int dump_translatable_strings, du
 
 /* The current locale when the program begins */
 static char *default_locale;
+static char fallback[128];
 
 /* The current domain for textdomain(3). */
 static char *default_domain;
@@ -314,11 +315,21 @@ get_locale_var (var)
   if (locale == 0 || *locale == 0)
     locale = lang;
   if (locale == 0 || *locale == 0)
-#if 0
-    locale = default_locale;	/* system-dependent; not really portable.  should it be "C"? */
-#else
-    locale = "";
-#endif
+    {
+      char *ptr;
+      if (default_locale && *default_locale && (ptr = strstr(default_locale, var)) && (ptr = strchr(ptr, '=')) && ++ptr)
+	{
+	  memset (fallback, 0,   sizeof(fallback));
+	  strncpy(fallback, ptr, sizeof(fallback)-1);
+	      
+	  if ((ptr = strchr(fallback, ';')))
+	    *ptr = '\0';
+	      
+	  locale = fallback;
+	}
+      else
+	locale = default_locale;	/* system-dependent; not really portable.  should it be "C"? */
+    }
   return (locale);
 }