[Pkg-mozext-commits] [adblock-plus] 419/464: Make sure that translations used in manifest.json exist in all languages.

David Prévot taffit at moszumanska.debian.org
Tue Jul 22 20:44:40 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository adblock-plus.

commit 59c79b1d81c66e86ceac4cac49ecddbf7332095c
Author: Sebastian Noack <sebastian at adblockplug.org>
Date:   Thu Mar 13 16:57:20 2014 +0100

    Make sure that translations used in manifest.json exist in all languages.
---
 packagerChrome.py | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/packagerChrome.py b/packagerChrome.py
index c4b0ffc..320b5e6 100644
--- a/packagerChrome.py
+++ b/packagerChrome.py
@@ -160,6 +160,12 @@ def convertJS(params, files):
     sourceFiles = map(lambda f: os.path.abspath(os.path.join(baseDir, f)), sourceFiles)
     files[file] = doRewrite(sourceFiles, args)
 
+def toJson(data):
+  return json.dumps(
+    data, ensure_ascii=False, sort_keys=True,
+    indent=2, separators=(',', ': ')
+  ).encode('utf-8') + '\n'
+
 def importGeckoLocales(params, files):
   import localeTools
 
@@ -261,8 +267,7 @@ def importGeckoLocales(params, files):
       except Exception, e:
         print 'Warning: error importing locale data from %s: %s' % (sourceFile, e)
 
-      files[targetFile] = json.dumps(data, ensure_ascii=False, sort_keys=True,
-                            indent=2, separators=(',', ': ')).encode('utf-8') + '\n'
+      files[targetFile] = toJson(data)
 
   if params['type'] == 'opera':
     # Opera has a slightly different locale mapping
@@ -279,6 +284,24 @@ def importGeckoLocales(params, files):
           files[operaFile] = files[chromeFile]
         del files[chromeFile]
 
+def fixMissingTranslations(files):
+  # Chrome requires messages used in manifest.json to be given in all languages
+  defaults = {}
+  data = json.loads(files['_locales/%s/messages.json' % defaultLocale])
+  for match in re.finditer(r'__MSG_(\S+)__', files['manifest.json']):
+    name = match.group(1)
+    defaults[name] = data[name]
+
+  for filename in files:
+    if not filename.startswith('_locales/') or not filename.endswith('/messages.json'):
+      continue
+
+    data = json.loads(files[filename])
+    for name, info in defaults.iteritems():
+      data.setdefault(name, info)
+
+    files[filename] = toJson(data)
+
 def signBinary(zipdata, keyFile):
   import M2Crypto
   if not os.path.exists(keyFile):
@@ -343,6 +366,8 @@ def createBuild(baseDir, type='chrome', outFile=None, buildNum=None, releaseBuil
   if metadata.has_section('import_locales'):
     importGeckoLocales(params, files)
 
+  fixMissingTranslations(files)
+
   if devenv:
     files['devenvPoller__.js'] = createPoller(params)
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git



More information about the Pkg-mozext-commits mailing list