-
Notifications
You must be signed in to change notification settings - Fork 21
/
gen_translations.py
67 lines (55 loc) · 2.27 KB
/
gen_translations.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import sys, os, multiprocessing, subprocess, time, shutil
gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src/sakia'))
ts = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'ts'))
qm = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'qm'))
if not os.path.exists(qm):
os.mkdir(qm)
translations = []
qm_files = []
qm_shortnames = []
def prepare_qm():
for root, dirs, files in os.walk(ts):
for f in files:
if f.endswith('.ts'):
tsfilename = os.path.join(root, f)
qmshort = "{0}qm".format(f[:-2])
qmfilename = os.path.join(qm, qmshort)
srcdest = (tsfilename, qmfilename)
translations.append(srcdest)
qm_shortnames.append(qmshort)
else:
continue
print(os.path.join(root, f))
for (ts_file, qm_file) in translations:
# avoid conflict with qt4 lrelease by running qtchooser directly
if sys.platform.startswith('win') or shutil.which("qtchooser") == None or "--lrelease" in sys.argv:
subprocess.call(["lrelease", ts_file, "-qm", qm_file])
else:
subprocess.call(["qtchooser", "-run-tool=lrelease", "-qt=5", ts_file, "-qm", qm_file])
print(ts_file + " >> " + qm_file)
def build_resources():
files = ""
for file in qm_shortnames:
files += """
<file alias="{0}">qm/{0}.qm</file>""".format(file[:-3])
rccfile = """<RCC>
<qresource prefix="i18n">{0}
</qresource>
</RCC>
""".format(files)
print(rccfile)
qrc_filename = os.path.abspath(os.path.join(os.path.dirname(__file__),
'res',
'i18n',
'langs-{0}.qrc'.format(int(time.time()))
))
pyc_filename = os.path.abspath(os.path.join(gen_resources, 'i18n_rc.py'))
with open(qrc_filename, 'w') as outfile:
outfile.write(rccfile)
try:
subprocess.call(["pyrcc5", "-o", pyc_filename, qrc_filename])
print(qrc_filename + " >> " + pyc_filename)
finally:
os.remove(qrc_filename)
prepare_qm()
build_resources()