diff --git a/data/po/update_po_authors.py b/data/po/update_po_authors.py index 360aef89b..23a607930 100755 --- a/data/po/update_po_authors.py +++ b/data/po/update_po_authors.py @@ -5,6 +5,9 @@ # 'translator-credits' translations - where launchpad added them # and which are shown in stk. # +# First rename the transifex files: +# for i in supertuxkartpot_*; do mv $i ${i##supertuxkartpot_}; done +# # Usage: update_po_authors.py PATH_TO/LANGUAGE.po # # IMPORTANT note: this script must be run on a file downloaded @@ -14,6 +17,8 @@ # # Less important note: The specified file is overwritten without # a backup! Make sure the git status is unmodified. +# + import re import sys @@ -24,7 +29,7 @@ if __name__ == "__main__": sys.exit(-1) for filename in sys.argv[1:]: - print("Processing file ", filename) + print("Processing file %s" % filename) f = open(filename, "r") if not f: print "Can not find", filename @@ -33,58 +38,81 @@ if __name__ == "__main__": f.close() - new_authors = [] - found = 0 - - # Find all authors with a simple finite state machine: - contributions = -1 - line_count = 0 - for i in lines: - line = i[:-1] # remove \n - if line=="# Translators:": - found = 1 - elif found and line[:2]=="# " and line [:14]!="# FIRST AUTHOR": - new_authors.append(line[2:]) - elif line[:5]=="msgid": - found = 0 - elif line[:31]== "msgstr \"Launchpad Contributions": - contributions = line_count - line_count = line_count + 1 - - - # Delete all email addresses - not sure if the authors - # would want them to be published - email=re.compile(" *<.*@.*\..*> *") # one @ and one dot at least - for i in range(len(new_authors)): - g = email.search(new_authors[i]) - if g: - new_authors[i] = new_authors[i][:g.start()] \ - + new_authors[i][g.end():] - - # Get the old authors from the translator-credits string: - if contributions>0: - # Ignore the first entry, which is "msgstr ...", and the - # last two characters, which are the '"\n'. - old_authors = lines[contributions][:-2].split("\\n")[1:] - for i in range(len(old_authors)): - old_authors[i] = old_authors[i].strip() - else: - old_authors=[] + # There are two sources of contributors: + # 1) Entries in the header from transifex (after "Translators:" + # till the first msgid string. + # 2) Entries as "translator-credits". These shouldn't be there, + # but sometimes occur (e.g. because an old version of this + # script was used that did not support these entries). + # Assemble all those entries in one line - all_authors = old_authors + new_authors; - all_authors = sorted(all_authors, key=lambda x: x.lower()) - all_authors_string = reduce(lambda x,y: x+"\\n"+y, all_authors, "") + found = 0 + contributions = "" + line_count = 0 + new_authors = [] + author_list = [] + + # Find new and old authors with a simple finite state machine: + # ============================================================ + i = 0 + while i < len(lines): + line = lines[i][:-1] # remove \n + i = i + 1 + if line=="# Translators:": + while i