summaryrefslogtreecommitdiffstats
path: root/scripts/import_po.py
blob: 3f2c98429499999e174156e2b9e14f01bfa2fe7e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Download translations from transifex and regenerate files."""

import io
from glob import glob
import os
import sys
import polib

if 'nopull' not in sys.argv or '--nopull' in sys.argv:
    os.system("tx pull -a")
elif '-h' in sys.argv or '--help' in sys.argv:
    print("Internal use only. Takes optional 'nopull' argument to prevent pulling from Transifex.")
    exit()

trans_files = glob(os.path.join('translations', 'nikola.messages', '*.po'))
for fname in trans_files:
    lang = os.path.splitext(os.path.basename(fname))[0].lower()
    lang = lang.replace('@', '_')
    outf = os.path.join('nikola', 'data', 'themes', 'base',
                        'messages', 'messages_{0}.py'.format(lang))
    po = polib.pofile(fname)
    lines = """# -*- encoding:utf-8 -*-
\"\"\"Autogenerated file, do not edit. Submit translations on Transifex.\"\"\"

MESSAGES = {""".splitlines()
    lines2 = []
    for entry in po:
        lines2.append('    "{0}": "{1}",'. format(entry.msgid, entry.msgstr))
    lines.extend(sorted(lines2))
    lines.append("}\n")
    print("Generating:", outf)
    with io.open(outf, "w+", encoding="utf8") as outfile:
        outfile.write('\n'.join(lines))