Marc-Andre Lemburg <mal@lemburg.com>:
Added emulations of the C APIs in _locale to be used when the
_locale module is not enabled. They return the correct values
assuming the 'C' locale.
diff --git a/Lib/locale.py b/Lib/locale.py
index cb01821..a4e1e44 100644
--- a/Lib/locale.py
+++ b/Lib/locale.py
@@ -13,9 +13,67 @@
 
 import string
 
-### C lib locale APIs
+### Load C lib locale APIs or use an emulation
 
-from _locale import *
+try:
+    from _locale import *
+
+except ImportError:
+
+    CHAR_MAX = 127
+    LC_ALL = 6
+    LC_COLLATE = 3
+    LC_CTYPE = 0
+    LC_MESSAGES = 5
+    LC_MONETARY = 4
+    LC_NUMERIC = 1
+    LC_TIME = 2
+    Error = ValueError
+
+    def localeconv():
+        """ localeconv() -> dict. 
+            Returns numeric and monetary locale-specific parameters.
+        """
+        # 'C' locale default values
+        return {'grouping': [127],
+                'currency_symbol': '',
+                'n_sign_posn': 127,
+                'p_cs_precedes': 127, 
+                'n_cs_precedes': 127, 
+                'mon_grouping': [], 
+                'n_sep_by_space': 127,
+                'decimal_point': '.',
+                'negative_sign': '',
+                'positive_sign': '',
+                'p_sep_by_space': 127, 
+                'int_curr_symbol': '',
+                'p_sign_posn': 127, 
+                'thousands_sep': '',
+                'mon_thousands_sep': '', 
+                'frac_digits': 127, 
+                'mon_decimal_point': '',
+                'int_frac_digits': 127}
+    
+    def setlocale(category, value=None):
+        """ setlocale(integer,string=None) -> string. 
+            Activates/queries locale processing.
+        """
+        if value is not None and \
+           value is not 'C':
+            raise Error,'_locale emulation only supports "C" locale'
+        return 'C'
+
+    def strcoll(a,b):
+        """ strcoll(string,string) -> int. 
+            Compares two strings according to the locale.
+        """
+        return cmp(a,b)
+
+    def strxfrm(s):
+        """ strxfrm(string) -> string. 
+            Returns a string that behaves for cmp locale-aware.
+        """
+        return s
 
 ### Number formatting APIs