Blame scripts/sanitize_po_files.py

Packit Service 21c75c
#!/usr/bin/python3
Packit Service 21c75c
Packit Service 21c75c
# script to get rid of
Packit Service 21c75c
# "'msgid' and 'msgstr' entries do not both begin/end with '\n'"
Packit Service 21c75c
# error messages during .po to .mo files conversion via msgfmt tool
Packit Service 21c75c
#
Packit Service 21c75c
# 'polib' module is needed for run: https://pypi.python.org/pypi/polib
Packit Service 21c75c
#
Packit Service 21c75c
# usage: python3 sanitize_po_files.py [po_file...]
Packit Service 21c75c
#
Packit Service 21c75c
# in order to update translations from zanata, do:
Packit Service 21c75c
#  * cmake .
Packit Service 21c75c
#  * make gettext-update
Packit Service 21c75c
#  * git add po/*.po
Packit Service 21c75c
#  * ./scripts/sanitize_po_files.py po/*.po
Packit Service 21c75c
#  * git commit -m "zanata update"
Packit Service 21c75c
Packit Service 21c75c
import polib
Packit Service 21c75c
import re
Packit Service 21c75c
import sys
Packit Service 21c75c
Packit Service 21c75c
Packit Service 21c75c
def sanitize_po_file(po_file):
Packit Service 21c75c
    print("Processing", po_file)
Packit Service 21c75c
    po = polib.pofile(po_file)
Packit Service 21c75c
    for entry in po:
Packit Service 21c75c
        msgid_without_indents = entry.msgid.strip()
Packit Service 21c75c
        msgstr_without_indents = entry.msgstr.strip()
Packit Service 21c75c
        entry.msgstr = entry.msgid.replace(
Packit Service 21c75c
            msgid_without_indents, msgstr_without_indents)
Packit Service 21c75c
        if re.match(r"^\s+$", entry.msgstr):
Packit Service 21c75c
            entry.msgstr = ""
Packit Service 21c75c
Packit Service 21c75c
        if entry.msgid_plural:
Packit Service 21c75c
            msgid_plural_without_indents = entry.msgid_plural.strip()
Packit Service 21c75c
            for i in entry.msgstr_plural.keys():
Packit Service 21c75c
                msgstr_plural_without_indents = entry.msgstr_plural[i].strip()
Packit Service 21c75c
                entry.msgstr_plural[i] = entry.msgid_plural.replace(
Packit Service 21c75c
                    msgid_plural_without_indents,
Packit Service 21c75c
                    msgstr_plural_without_indents)
Packit Service 21c75c
                if re.match(r"^\s+$", entry.msgstr_plural[i]):
Packit Service 21c75c
                    entry.msgstr_plural[i] = ""
Packit Service 21c75c
    po.save()
Packit Service 21c75c
Packit Service 21c75c
Packit Service 21c75c
if __name__ == "__main__":
Packit Service 21c75c
    for po_file in sys.argv[1:]:
Packit Service 21c75c
        sanitize_po_file(po_file)