diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 7ede8c394a..58f237f0ae 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -96,3 +96,15 @@ if GetOption('extras'): f = raylib_env.Program(f"installer/installers/installer_{name}", [obj, cont, inter], LIBS=raylib_libs) # keep installers small assert f[0].get_size() < 1900*1e3, f[0].get_size() + +# Compile gettext .po -> .mo alongside Qt translations +po_sources = [f"#selfdrive/ui/translations/app_{l.replace('main_', '')}.po" for l in languages.values()] +mo_targets = [src.replace(".po", ".mo") for src in po_sources] +msgfmt_bin = 'msgfmt' + +# Build each .mo individually to ensure one-to-one mapping +mo_build = [] +for src, tgt in zip(po_sources, mo_targets): + mo_build.append(env.Command(tgt, src, f"{msgfmt_bin} -o $TARGET $SOURCE")) + +qt_env.Depends(assets, mo_build) diff --git a/selfdrive/ui/translations/languages.json b/selfdrive/ui/translations/languages.json index b0674dee82..132b5088d7 100644 --- a/selfdrive/ui/translations/languages.json +++ b/selfdrive/ui/translations/languages.json @@ -1,14 +1,14 @@ { - "English": "en", - "Deutsch": "de", - "Français": "fr", - "Português": "pt-BR", - "Español": "es", - "Türkçe": "tr", - "العربية": "ar", - "ไทย": "th", - "中文(繁體)": "zh-CHT", - "中文(简体)": "zh-CHS", - "한국어": "ko", - "日本語": "ja" + "English": "main_en", + "Deutsch": "main_de", + "Français": "main_fr", + "Português": "main_pt-BR", + "Español": "main_es", + "Türkçe": "main_tr", + "العربية": "main_ar", + "ไทย": "main_th", + "中文(繁體)": "main_zh-CHT", + "中文(简体)": "main_zh-CHS", + "한국어": "main_ko", + "日本語": "main_ja" } diff --git a/system/ui/lib/multilang.py b/system/ui/lib/multilang.py index 966f49ba65..d729a614ed 100644 --- a/system/ui/lib/multilang.py +++ b/system/ui/lib/multilang.py @@ -1,4 +1,5 @@ import os +import gettext import pyray as rl from typing import Union from openpilot.common.params import Params @@ -58,4 +59,8 @@ class Multilang: multilang = Multilang() -tr = multilang.translate +l = gettext.translation('de', localedir=TRANSLATIONS_DIR, languages=[Params().get("LanguageSetting")]) +l.install() +# tr = multilang.translate +# tr = gettext.gettext +tr = l.gettext