1 | import sys |
---|
2 | import subprocess |
---|
3 | |
---|
4 | from PyICU import Locale as PyICULocale |
---|
5 | |
---|
6 | |
---|
7 | def get_locale_name_pyicu(code): |
---|
8 | locale = PyICULocale(code) |
---|
9 | return locale.getDisplayName(locale) |
---|
10 | |
---|
11 | def read_all_codes(): |
---|
12 | fdp = subprocess.Popen(['locale', '-a'], stdout=subprocess.PIPE) |
---|
13 | lines = fdp.stdout.read().split('\n') |
---|
14 | codes = [] |
---|
15 | |
---|
16 | for line in lines: |
---|
17 | if line.endswith('utf8'): |
---|
18 | codes.append(line) |
---|
19 | |
---|
20 | #FIXME: This is a temporary workaround for locales that are essential to |
---|
21 | # OLPC, but are not in Glibc yet. |
---|
22 | for code in ['ht_HT.utf8', 'fa_AF.utf8', 'ps_AF.utf8']: |
---|
23 | codes.append(code) |
---|
24 | |
---|
25 | return codes |
---|
26 | |
---|
27 | if __name__ == '__main__': |
---|
28 | available_codes = read_all_codes() |
---|
29 | |
---|
30 | names_pyicu = {} |
---|
31 | for code in available_codes: |
---|
32 | locale_name = get_locale_name_pyicu(code) |
---|
33 | names_pyicu[code] = locale_name |
---|