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
 
