Files
sunnypilot/selfdrive/ui/translations/update_translations.py
2026-03-23 08:59:37 -07:00

37 lines
1.3 KiB
Python
Executable File

#!/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
from openpilot.selfdrive.ui.translations.potools import extract_strings, generate_pot, merge_po, init_po
LANGUAGES_FILE = os.path.join(str(TRANSLATIONS_DIR), "languages.json")
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))
# Extract translatable strings and generate .pot template
entries = extract_strings(files, BASEDIR)
generate_pot(entries, POT_FILE)
# Generate/update translation files for each language
for name in multilang.languages.values():
po_file = os.path.join(TRANSLATIONS_DIR, f"app_{name}.po")
if os.path.exists(po_file):
merge_po(po_file, POT_FILE)
else:
init_po(POT_FILE, po_file, name)
if __name__ == "__main__":
update_translations()