You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.6 KiB
42 lines
1.6 KiB
|
2 days ago
|
#!/usr/bin/env python3
|
||
|
|
from itertools import chain
|
||
|
|
import os
|
||
|
|
from openpilot.common.basedir import BASEDIR
|
||
|
|
from openpilot.system.ui.lib.multilang import SYSTEM_UI_DIR, UI_DIR, TRANSLATIONS_DIR, multilang
|
||
|
|
|
||
|
|
POT_FILE = os.path.join(str(TRANSLATIONS_DIR), "app.pot")
|
||
|
|
|
||
|
|
|
||
|
|
def update_translations():
|
||
|
|
files = []
|
||
|
|
for root, _, filenames in chain(os.walk(SYSTEM_UI_DIR),
|
||
|
|
os.walk(os.path.join(UI_DIR, "widgets")),
|
||
|
|
os.walk(os.path.join(UI_DIR, "layouts")),
|
||
|
|
os.walk(os.path.join(UI_DIR, "onroad"))):
|
||
|
|
for filename in filenames:
|
||
|
|
if filename.endswith(".py"):
|
||
|
|
files.append(os.path.relpath(os.path.join(root, filename), BASEDIR))
|
||
|
|
|
||
|
|
# Create main translation file
|
||
|
|
cmd = ("xgettext -L Python --keyword=tr --keyword=trn:1,2 --keyword=tr_noop --from-code=UTF-8 " +
|
||
|
|
"--flag=tr:1:python-brace-format --flag=trn:1:python-brace-format --flag=trn:2:python-brace-format " +
|
||
|
|
f"-D {BASEDIR} -o {POT_FILE} {' '.join(files)}")
|
||
|
|
|
||
|
|
ret = os.system(cmd)
|
||
|
|
assert ret == 0
|
||
|
|
|
||
|
|
# Generate/update translation files for each language
|
||
|
|
for name in multilang.languages.values():
|
||
|
|
if os.path.exists(os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")):
|
||
|
|
cmd = f"msgmerge --update --no-fuzzy-matching --backup=none --sort-output {TRANSLATIONS_DIR}/app_{name}.po {POT_FILE}"
|
||
|
|
ret = os.system(cmd)
|
||
|
|
assert ret == 0
|
||
|
|
else:
|
||
|
|
cmd = f"msginit -l {name} --no-translator --input {POT_FILE} --output-file {TRANSLATIONS_DIR}/app_{name}.po"
|
||
|
|
ret = os.system(cmd)
|
||
|
|
assert ret == 0
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
update_translations()
|