-
- if collator is None or collator.locale != locale_code:
- 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:
- break
+ global default
+
+ if backend is None:
+ backend = default
+ locales = collate._locale.localelist(locale)
+ c = None
+ for locale in locales:
+ locale, encoding_ = collate._locale.getpair(locale, encoding)
+ try:
+ c = backend.Collator(locale, encoding_)
+ except collate.errors.InvalidLocaleError:
+ pass