-import sys
import locale
+
import collate.errors
import collate._abcollator
class Collator(collate._abcollator.Collator):
- def __init__(self, locale_code, strict=False):
+ def __init__(self, locale_code):
+ default = locale.getdefaultlocale()[0]
+ for locale in [locale_code, default]:
+ try:
+ locale.setlocale(locale.LC_COLLATE, locale_code)
+ except locale.Error as err:
+ pass
+ else:
+ break
+ else:
+ raise collate.errors.InvalidLocaleError("no locale found")
+ self.locale = locale.getlocale()[0]
try:
self.__encoding = locale_code.split(".")[1]
except IndexError:
- self.__encoding = locale_code.split(sys.getdefaultencoding())
- try:
- locale.setlocale(locale.LC_COLLATE, locale_code)
- except locale.Error as err:
- if strict:
- raise collate.errors.InvalidLocaleError(str(err))
- try:
- locale.setlocale(
- locale.LC_COLLATE, locale.getdefaultlocale()[0])
- except locale.Error as err:
- raise collate.errors.InvalidLocaleError(str(err))
- self.locale = locale.getdefaultlocale()[0]
+ self.__encoding = locale_code.split(locale.getpreferredencoding())
def key(self, string):
try: