From e1bc92abaf23002c37b9a8b7e5bf12b175be1a40 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 12 Nov 2015 13:42:04 +1300 Subject: Use transifex service for tranlation --- tools/translate.py | 54 ++++++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/tools/translate.py b/tools/translate.py index fd7d139df..e8324a61a 100755 --- a/tools/translate.py +++ b/tools/translate.py @@ -1,41 +1,35 @@ #!/usr/bin/python -import re import os +import optparse +import urllib2 +import json +import base64 -abspath = os.path.abspath(__file__) -dname = os.path.dirname(abspath) -os.chdir(dname) +parser = optparse.OptionParser() +parser.add_option("-u", "--user", dest="username", help="transifex user login") +parser.add_option("-p", "--password", dest="password", help="transifex user password") -path = '../web/l10n/' +(options, args) = parser.parse_args() -files = [f for f in os.listdir(path) if os.path.isfile(path + f) and f.endswith('.js') and not f.endswith('en.js')] -for f in files: - f = path + f +if not options.username or not options.password: + parser.error('User name and password are required') - print 'en -> ' + f[-5:-3] +os.chdir(os.path.dirname(os.path.abspath(__file__))) - dict = {} +path = "../web/l10n/" - for line in open(f).read().splitlines(): - match = re.search(" (\\w+): '(.+)'(,)?", line) - if match: - dict[match.group(1)] = match.group(2) +def request(url): + req = urllib2.Request(url) + auth = base64.encodestring("%s:%s" % (options.username, options.password)).replace("\n", "") + req.add_header("Authorization", "Basic %s" % auth) + return urllib2.urlopen(req) - out = open(f, 'w') +resource = json.load(request("https://www.transifex.com/api/2/project/traccar/resource/web/?details")) - for line in open(path + 'en.js').read().splitlines(): - match = re.search(" (\\w+): '(.+)'(,)?", line) - if match: - if dict.has_key(match.group(1)): - value = dict[match.group(1)] - else: - print '"' + match.group(2) + '"' - value = match.group(2) + ' (*)' - - out.write(' ' + match.group(1) + ": '" + value + "'") - if match.group(3) is not None: - out.write(',') - out.write('\n') - else: - out.write(line + '\n') +for language in resource["available_languages"]: + code = language["code"] + data = request("https://www.transifex.com/api/2/project/traccar/resource/web/translation/" + code + "?file") + file = open(path + code + ".json", "wb") + file.write(data.read()) + file.close() -- cgit v1.2.3