Browse Source

Updated language statistics script to not use the shell

Claude Paroz 6 years ago
parent
commit
b679b5b8f2
1 changed files with 10 additions and 5 deletions
  1. 10 5
      scripts/manage_translations.py

+ 10 - 5
scripts/manage_translations.py

@@ -119,16 +119,21 @@ def lang_stats(resources=None, languages=None):
             if languages and lang not in languages:
                 continue
             # TODO: merge first with the latest en catalog
-            p = Popen("msgfmt -vc -o /dev/null %(path)s/%(lang)s/LC_MESSAGES/django%(ext)s.po" % {
-                'path': dir_, 'lang': lang, 'ext': 'js' if name.endswith('-js') else ''},
-                stdout=PIPE, stderr=PIPE, shell=True)
+            po_path = '{path}/{lang}/LC_MESSAGES/django{ext}.po'.format(
+                path=dir_, lang=lang, ext='js' if name.endswith('-js') else ''
+            )
+            p = Popen(
+                ['msgfmt', '-vc', '-o', '/dev/null', po_path],
+                stdout=PIPE, stderr=PIPE,
+                env={'LANG': 'C'}
+            )
             output, errors = p.communicate()
             if p.returncode == 0:
                 # msgfmt output stats on stderr
-                print("%s: %s" % (lang, errors.strip()))
+                print("%s: %s" % (lang, errors.decode().strip()))
             else:
                 print("Errors happened when checking %s translation for %s:\n%s" % (
-                    lang, name, errors))
+                    lang, name, errors.decode()))
 
 
 def fetch(resources=None, languages=None):