X-Git-Url: https://git.korewanetadesu.com/?p=python-collate.git;a=blobdiff_plain;f=collate%2Fsyslocale%2F__init__.py;h=a76d538f9b059b00a39b8b8675cab497463a83eb;hp=6784a978c2b106cbedca95dcec4d4c37d7ad168e;hb=712ad12a7b2bee93aeb464d2d1ad46a40ddc010f;hpb=29f1f7e12a4ca6100b00dc0d32e84f82f530bcb4 diff --git a/collate/syslocale/__init__.py b/collate/syslocale/__init__.py index 6784a97..a76d538 100644 --- a/collate/syslocale/__init__.py +++ b/collate/syslocale/__init__.py @@ -1,25 +1,25 @@ -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, encoding=None): + 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: