ICU backend; uses Pyrex, based on zope.ucol.
[python-collate.git] / collate / __init__.py
1 import locale
2
3 import collate.errors
4
5 try:
6 import collate.syslocale as default
7 import collate.uca as default
8 import collate.icu as default
9 except ImportError:
10 pass
11
12 collator = None
13
14 def set_locale(locale_code):
15 global collator
16
17 if collator is None or collator.locale != locale_code:
18 for code in [locale_code,
19 locale_code.split("_")[0],
20 locale.getdefaultlocale()[0],
21 locale.getdefaultlocale()[0].split("_")[0],
22 None]:
23 try:
24 collator = default.Collator(code)
25 except collate.errors.InvalidLocaleError:
26 pass
27 else:
28 break
29 else:
30 raise collate.errors.InvalidLocaleError(locale_code)
31
32 def get_locale():
33 return collator.locale
34
35 def set_backend(backend):
36 pass
37
38 def key(string):
39 return collator.key(string)
40
41 def cmp(string1, string2):
42 return collator.cmp(string1, string2)
43
44 set_locale(locale.getdefaultlocale()[0])