| Index: translations.py |
| =================================================================== |
| new file mode 100755 |
| --- /dev/null |
| +++ b/translations.py |
| @@ -0,0 +1,65 @@ |
| +#!/usr/bin/env python |
| + |
| +import os |
| +import re |
| +import sys |
| +import urllib2 |
| +from StringIO import StringIO |
| +from zipfile import ZipFile |
| + |
| +import buildtools.localeTools |
| + |
| +BASE_PATH = os.path.dirname(os.path.abspath(__file__)) |
| +LOCALES_PATH = os.path.join(BASE_PATH, "mobile", "android", "base", "locales", |
| + "adblockbrowser") |
| +PROJECT_URL = "http://api.crowdin.net/api/project/adblockbrowserandroid" |
| + |
| +def print_usage(): |
| + print >>sys.stderr, "Usage: %s get API_KEY" % os.path.basename(sys.argv[0]) |
| + |
| +def get_translations(api_key): |
| + # We could use buildtools.localeTools.getTranslations here if we were |
| + # submitting JSON wrappers for DTDs, the same way ABP for Firefox does it. |
| + # See https://issues.adblockplus.org/2911. |
| + |
| + result = urllib2.urlopen("%s/export?key=%s" % (PROJECT_URL, api_key)) |
| + if result.read().find("<success") < 0: |
| + raise Exception("Export failed: " + result) |
| + |
| + result = urllib2.urlopen("%s/download/all.zip?key=%s" % \ |
| + (PROJECT_URL, api_key)) |
| + zip = ZipFile(StringIO(result.read())) |
| + for info in zip.infolist(): |
| + if not info.filename.endswith(".dtd"): |
| + continue |
| + |
| + dir, file = os.path.split(info.filename) |
| + if not re.match(r"^[\w\-]+$", dir) or dir == "en-US": |
| + continue |
| + |
| + mapping = buildtools.localeTools.langMappingGecko |
| + for key, value in mapping.iteritems(): |
| + if value == dir: |
| + dir = key |
| + |
| + data = zip.open(info.filename).read() |
| + if not data: |
| + continue |
| + |
| + path = os.path.join(LOCALES_PATH, dir, file) |
| + if not os.path.exists(os.path.dirname(path)): |
| + os.makedirs(os.path.dirname(path)) |
| + with open(path, "w") as file: |
| + file.write(data) |
| + |
| +if __name__ == "__main__": |
| + if len(sys.argv) < 3: |
| + print_usage() |
| + sys.exit(1) |
| + |
| + command, api_key = sys.argv[1:] |
| + if command != "get": |
| + print_usage() |
| + sys.exit(2) |
| + |
| + get_translations(api_key) |