Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / locale / create_languages_js.py
diff --git a/examples/locale/create_languages_js.py b/examples/locale/create_languages_js.py
new file mode 100644 (file)
index 0000000..1ac1d8c
--- /dev/null
@@ -0,0 +1,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()