X-Git-Url: https://git.korewanetadesu.com/?p=python-collate.git;a=blobdiff_plain;f=collate%2Fsyslocale%2F__init__.py;h=43281e27dac417457f07717b3086691c29632859;hp=6784a978c2b106cbedca95dcec4d4c37d7ad168e;hb=22570a3c13079d27cfb60110f631b164dbd8b831;hpb=c02c5c3c54d35e7d5836adf54aadac1f79906f05 diff --git a/collate/syslocale/__init__.py b/collate/syslocale/__init__.py index 6784a97..43281e2 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): + 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: