#!/usr/bin/env python3 from itertools import chain 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 chain(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.join(root, filename)) # Create main translation file 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)) 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 name in translation_files: if os.path.exists(os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")): cmd = f"msgmerge --update --backup=none --sort-output translations/app_{name}.po translations/app.pot" ret = os.system(cmd) assert ret == 0 else: cmd = f"msginit -l {name} --no-translator --input translations/app.pot --output-file translations/app_{name}.po" ret = os.system(cmd) assert ret == 0 if __name__ == "__main__": update_translations()