Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: translations.py

Issue 29516560: Issue 5507 - Download only translated files from Crowdin (Closed)
Patch Set: Issue 5507 - Download only translated files from Crowdin Created Aug. 15, 2017, 12:37 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: translations.py
===================================================================
--- a/translations.py
+++ b/translations.py
@@ -1,16 +1,17 @@
#!/usr/bin/env python
import filecmp
import os
import re
import shutil
import sys
import urllib2
+from lxml import etree
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")
@@ -29,17 +30,23 @@ def get_translations(api_key):
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()))
+ progress_for_translation = get_progress_for_translation_dictionary(api_key)
for info in zip.infolist():
+ # skip languages without translations
+ index = info.filename.index('/')
+ if progress_for_translation[info.filename[:index]] == '0':
+ continue
+
if not info.filename.endswith(".dtd"):
continue
dir, file = os.path.split(info.filename)
if not re.match(r"^[\w\-]+$", dir) or dir == DEFAULT_LOCALE:
continue
mapping = buildtools.localeTools.langMappingGecko
@@ -52,16 +59,26 @@ def get_translations(api_key):
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)
+def get_progress_for_translation_dictionary(api_key):
+ parser = etree.HTMLParser()
+ f = urllib2.urlopen('{}/status?key={}'.format(PROJECT_URL, api_key))
+ tree = etree.parse(f, parser)
+ languages = {}
+ for language in tree.iter():
+ languages.update({
+ language.findtext('code'): language.findtext('translated_progress')
+ })
+ return languages
def remove_redundant_translations():
default_locale_path = os.path.join(LOCALES_PATH, DEFAULT_LOCALE)
for locale in os.listdir(LOCALES_PATH):
if locale == DEFAULT_LOCALE:
continue
locale_path = os.path.join(LOCALES_PATH, locale)
if not filecmp.dircmp(locale_path, default_locale_path).diff_files:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld