import collections import os import glob from pprint import pprint import polib # fades PO_DIR = os.path.abspath( os.path.join( os.path.dirname(__file__), '..', )) DELIMITERS = ("``", "*") def has_delimiters(x): for d in DELIMITERS: if d in x: return True return False def main(): files_with_differences = collections.defaultdict(list) for i, pofilename in enumerate(glob.glob(PO_DIR + '**/**/*.po')): po = polib.pofile(pofilename) if po.percent_translated() < 85: continue for entry in po: words = [] wordsid = wordsstr = list() if has_delimiters(entry.msgid): wordsid = [word for word in entry.msgid.split() if has_delimiters(word)] if has_delimiters(entry.msgstr): wordsstr = [word for word in entry.msgstr.split() if has_delimiters(word)] if len(wordsid) != len(wordsstr): key = pofilename.replace(PO_DIR, '') files_with_differences[key].append({ 'occurrences': entry.occurrences, 'words': { 'original': wordsid, 'translated': wordsstr, }, }) return files_with_differences pprint(main())