ICU backend; uses Pyrex, based on zope.ucol.
[python-collate.git] / collate / __init__.py
index 6d1806a..1d48178 100644 (file)
@@ -11,30 +11,34 @@ except ImportError:
 
 collator = None
 
-def set_locale(locale_code, strict=False):
+def set_locale(locale_code):
     global collator
 
     if collator is None or collator.locale != locale_code:
-        try:
-            collator = default.Collator(locale_code, strict)
-        except collate.errors.InvalidLocaleError:
-            if strict:
-                raise
+        for code in [locale_code,
+                     locale_code.split("_")[0],
+                     locale.getdefaultlocale()[0],
+                     locale.getdefaultlocale()[0].split("_")[0],
+                     None]:
+            try:
+                collator = default.Collator(code)
+            except collate.errors.InvalidLocaleError:
+                pass
             else:
-                default_locale = locale.getdefaultlocale()[0]
-                try:
-                    collator = default.Collator(default_locale, strict)
-                except collate.errors.InvalidLocaleError:
-                    if not collator:
-                        raise
+                break
+        else:
+            raise collate.errors.InvalidLocaleError(locale_code)
 
 def get_locale():
     return collator.locale
 
-def set_backend(backend, strict=False):
+def set_backend(backend):
     pass
 
 def key(string):
     return collator.key(string)
 
+def cmp(string1, string2):
+    return collator.cmp(string1, string2)
+
 set_locale(locale.getdefaultlocale()[0])