create_languages_js.py
1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
import sys, os, re
try:
import chardet
except ImportError:
print "You need universal encoding detector for this script"
print " http://chardet.feedparser.org or apt-get install python-chardet"
sys.exit()
regexp_language = re.compile("\* +(.+) +translation", re.IGNORECASE)
js_template = """/* This file is automaticly generated by create_language_js.py */
// some data used in the examples
Ext.namespace('Ext.exampledata');
// TODO: complete and sort the list
Ext.exampledata.languages = [
%s
];
"""
lang_dubs = {}
def lang_name(file):
language = os.path.basename(file)
m = regexp_language.search(open(file).read(512))
if m:
language = m.groups()[0]
if not lang_dubs.has_key(language):
lang_dubs[language] = file
else:
raise Exception('Duplicate language '+language+' for file '+file)
return language
def print_locale(lang_code):
print lang_code,
sys.stdout.flush()
return True
def main():
base_dir = "../../src/locale"
base_file = lambda f: os.path.join(base_dir, f)
try:
locales = os.listdir(base_dir)
except IOError:
print "Cannot find source locale directory: %s ... exiting" % base_dir
sys.exit()
valid_file = lambda e: e.endswith(".js") and e.startswith("ext-lang-")
char_set = lambda f: chardet.detect(open(f).read())['encoding']
lang_code = lambda f: f[9:f.rfind(".js")]
info_set = lambda f: (lang_name(base_file(f)), (lang_code(f), char_set(base_file(f))))
locales = dict(info_set(file) for file in locales if valid_file(file) and print_locale(lang_code(file)))
print "... done"
locale_strarray = ',\n'.join(["\t[%r, %r, %r]" % (code, name, charset) \
for name, (code, charset) in sorted(locales.items())])
# create languages.js
open("languages.js", "w").write(js_template % locale_strarray)
print "saved %d languages to languages.js" % len(locales)
if __name__=="__main__":
main()