Typo.
[python-collate.git] / collate / syslocale.py
index 4a67044..e2aeed9 100644 (file)
@@ -12,11 +12,10 @@ locale of all previous collators and anything else using the system
 locale information.
 
 Use this collation backend if...
 locale information.
 
 Use this collation backend if...
- - You are on a system without ICU or UCA datafiles for the locale,
-   and DUCET results are not acceptable.
+ - You are on a system without ICU.
 
 Avoid this backend if...
 
 Avoid this backend if...
- - ICU or UCA support is available for the current locale.
+ - ICU is available for the current locale.
  - You are sorting strings from alphabets outside the primary locale.
  - You need to support collating multiple locales at once.
  - You need the same results across multiple platforms.
  - You are sorting strings from alphabets outside the primary locale.
  - You need to support collating multiple locales at once.
  - You need the same results across multiple platforms.
@@ -24,6 +23,7 @@ Avoid this backend if...
 """
 
 import locale
 """
 
 import locale
+import re
 
 import collate.errors
 import collate._abcollator
 
 import collate.errors
 import collate._abcollator
@@ -35,9 +35,10 @@ class Collator(collate._abcollator.Collator):
     def __init__(self, locale_code, encoding=None):
         locale_code, encoding = collate._locale.getpair(locale_code, encoding)
         try:
     def __init__(self, locale_code, encoding=None):
         locale_code, encoding = collate._locale.getpair(locale_code, encoding)
         try:
-            locale.setlocale(locale.LC_COLLATE, locale_code)
+            setlocale = locale_code + "." + encoding
+            locale.setlocale(locale.LC_COLLATE, setlocale)
         except locale.Error:
         except locale.Error:
-            raise collate.errors.InvalidLocaleError(locale_code)
+            raise collate.errors.InvalidLocaleError(setlocale)
         self.locale = locale.getlocale(locale.LC_COLLATE)[0]
         self.encoding = collate._locale.encoding(encoding)
 
         self.locale = locale.getlocale(locale.LC_COLLATE)[0]
         self.encoding = collate._locale.encoding(encoding)
 
@@ -65,3 +66,10 @@ class Collator(collate._abcollator.Collator):
             b = b.decode(self.encoding, "replace")
         return locale.strcoll(a, b)
                                   
             b = b.decode(self.encoding, "replace")
         return locale.strcoll(a, b)
                                   
+    def words(self, string, sep=re.compile(r"\W+", re.UNICODE)):
+        """Split the string into separate words.
+
+        This split is done using the locale's notion of a word boundry.
+        """
+        return re.split(sep, string)
+