X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=po%2Fpostats.py;h=bca7380af9c7ae8f66621df5e3dd40cf9840ea79;hb=93ee1850148dbd3a628a061d361e4fffcd7738c7;hp=c8c37ec67aac3190665667a7955d6836aeef527c;hpb=103e8fdd90d803a8200c3260a4bf7b57ac31e976;p=lyx.git diff --git a/po/postats.py b/po/postats.py index c8c37ec67a..bca7380af9 100755 --- a/po/postats.py +++ b/po/postats.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # -*- coding: utf-8 -*- # Copyright (C) 2007 Michael Gerz # Copyright (C) 2007 José Matos @@ -26,6 +26,7 @@ and generates a PHP web page. Invocation: postats.py lyx_version po_files > "pathToWebPages"/i18n.inc """ +from __future__ import print_function # modify this when you change branch # Note that an empty lyx_branch variable (ie svn trunk) @@ -36,10 +37,13 @@ ommitted = ('en.po') import os import sys +import codecs +import subprocess +from subprocess import Popen, PIPE # Reset the locale import locale -locale.setlocale(locale.LC_ALL, 'C') +locale.setlocale(locale.LC_ALL, 'C') os.environ['LC_ALL'] = 'C' def extract_number(line, issues, prop): @@ -68,7 +72,7 @@ def read_pofile(pofile): """ Read the header of the pofile and return it as a dictionary""" header = {} read_header = False - for line in open(pofile): + for line in codecs.open(pofile, encoding='utf8'): line = line[:-1] if line[:5] == 'msgid': if read_header: @@ -93,7 +97,7 @@ def run_msgfmt(pofile): The function runs msgfmt on it and returns corresponding php code. """ if not pofile.endswith('.po'): - print >> sys.stderr, "%s is not a po file" % pofile + print("%s is not a po file" % pofile, file=sys.stderr) sys.exit(1) dirname = os.path.dirname(pofile) @@ -109,16 +113,14 @@ def run_msgfmt(pofile): prop["email"] = header['Last-Translator'].split('<')[1][:-1] prop["email"] = prop["email"].replace("@", " () ") prop["email"] = prop["email"].replace(".", " ! ") - translator = header['Last-Translator'].split('<')[0].strip() - try: - prop["translator"] = translator.decode(charset).encode('ascii','xmlcharrefreplace') - except LookupError: - prop["translator"] = translator - - p_in, p_out = os.popen4("msgfmt --statistics -o %s %s" % (gmofile, pofile)) - extract_number(p_out.readline(), - ('translated', 'fuzzy', 'untranslated'), - prop) + prop["translator"] = header['Last-Translator'].split('<')[0].strip() + + msg = subprocess.check_output(["msgfmt", "--statistics", + "-o", gmofile, # FIXME: do we really want a gmofile as side-effect? + pofile], stderr=subprocess.STDOUT) + if sys.version_info[0] > 2: + msg = msg.decode('utf8') + extract_number(msg, ('translated', 'fuzzy', 'untranslated'), prop) return """ array ( 'langcode' => '%(langcode)s', "date" => "%(date)s", "msg_tr" => %(translated)d, "msg_fu" => %(fuzzy)d, "msg_nt" => %(untranslated)d, @@ -127,12 +129,12 @@ array ( 'langcode' => '%(langcode)s', "date" => "%(date)s", if __name__ == "__main__": if lyx_branch: - branch_tag = "branches/%s" % lyx_branch + branch_tag = lyx_branch else: - branch_tag = "trunk" + branch_tag = "master" - print """ -""" % (sys.argv[1], branch_tag, ",".join([run_msgfmt(po) for po in sys.argv[2:] if po not in ommitted])) +)?>""" % (sys.argv[1], branch_tag, + ",".join([run_msgfmt(po) for po in sys.argv[2:] + if po not in ommitted])))