+preferred_locale = None
+
+def _get_collator(backend, locale_code):
+ for code in [locale_code,
+ locale_code.split("_")[0],
+ locale.getlocale(locale.LC_COLLATE)[0],
+ locale.getlocale(locale.LC_COLLATE)[0].split("_")[0],
+ locale.getdefaultlocale()[0],
+ locale.getdefaultlocale()[0].split("_")[0],
+ None]:
+ try:
+ return default.Collator(code)
+ except collate.errors.InvalidLocaleError:
+ pass