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.
43 lines
1.4 KiB
43 lines
1.4 KiB
#!/usr/bin/env python3
|
|
import argparse
|
|
import json
|
|
import os
|
|
|
|
from openpilot.system.ui.lib.multilang import UI_DIR, TRANSLATIONS_DIR, LANGUAGES_FILE
|
|
|
|
|
|
def update_translations():
|
|
files = []
|
|
for root, _, filenames in os.walk(os.path.join(UI_DIR, "widgets")):
|
|
for filename in filenames:
|
|
if filename.endswith(".py"):
|
|
files.append(os.path.join(root, filename))
|
|
|
|
# Create main translation file
|
|
print(files)
|
|
cmd = ("xgettext -L Python --keyword=tr --keyword=trn:1,2 --keyword=pgettext:1c,2 --from-code=UTF-8 " +
|
|
"--flag=tr:1:python-brace-format --flag=trn:1:python-brace-format --flag=trn:2:python-brace-format " +
|
|
"-o translations/app.pot {}").format(" ".join(files))
|
|
print(cmd)
|
|
|
|
ret = os.system(cmd)
|
|
assert ret == 0
|
|
|
|
# Generate/update translation files for each language
|
|
with open(LANGUAGES_FILE) as f:
|
|
translation_files = json.load(f).values()
|
|
|
|
for file in translation_files:
|
|
name = file.replace("main_", "")
|
|
if os.path.exists(os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")):
|
|
cmd = "msgmerge --update --backup=none --sort-output translations/app.pot translations/app_{}.po".format(name)
|
|
ret = os.system(cmd)
|
|
assert ret == 0
|
|
else:
|
|
cmd = "msginit -l es --no-translator --input translations/app.pot --output-file translations/app_{}.po".format(name)
|
|
ret = os.system(cmd)
|
|
assert ret == 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
update_translations()
|
|
|