fix zipapp with multilang (#36511)

* fix

* fix

* fix

* more
This commit is contained in:
Maxime Desroches
2025-10-27 22:47:41 -07:00
committed by GitHub
parent 73ed45f9d7
commit 8a77534d02
5 changed files with 13 additions and 11 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ from openpilot.common.basedir import BASEDIR
DIRS = ['cereal', 'openpilot']
EXTS = ['.png', '.py', '.ttf', '.capnp']
EXTS = ['.png', '.py', '.ttf', '.capnp', '.json', '.fnt', '.mo']
INTERPRETER = '/usr/bin/env python3'
+2 -2
View File
@@ -8,7 +8,7 @@ import requests
from parameterized import parameterized_class
from openpilot.system.ui.lib.multilang import TRANSLATIONS_DIR, LANGUAGES_FILE
with open(LANGUAGES_FILE) as f:
with open(str(LANGUAGES_FILE)) as f:
translation_files = json.load(f)
UNFINISHED_TRANSLATION_TAG = "<translation type=\"unfinished\"" # non-empty translations can be marked unfinished
@@ -29,7 +29,7 @@ class TestTranslations:
return f.read()
def test_missing_translation_files(self):
assert os.path.exists(os.path.join(TRANSLATIONS_DIR, f"{self.file}.ts")), \
assert os.path.exists(os.path.join(str(TRANSLATIONS_DIR), f"{self.file}.ts")), \
f"{self.name} has no XML translation file, run selfdrive/ui/update_translations.py"
@pytest.mark.skip("Only test unfinished translations before going to release")
+1 -1
View File
@@ -4,7 +4,7 @@ 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(TRANSLATIONS_DIR, "app.pot")
POT_FILE = os.path.join(str(TRANSLATIONS_DIR), "app.pot")
def update_translations():
+3 -2
View File
@@ -391,8 +391,9 @@ class GuiApplication:
def _load_fonts(self):
for font_weight_file in FontWeight:
with as_file(FONT_DIR.joinpath(font_weight_file)) as fspath:
font = rl.load_font(fspath.as_posix())
with as_file(FONT_DIR) as fspath:
fnt_path = fspath / font_weight_file
font = rl.load_font(fnt_path.as_posix())
rl.set_texture_filter(font.texture, rl.TextureFilter.TEXTURE_FILTER_BILINEAR)
self._fonts[font_weight_file] = font
rl.gui_set_font(self._fonts[FontWeight.NORMAL])
+6 -5
View File
@@ -1,3 +1,4 @@
from importlib.resources import files
import os
import json
import gettext
@@ -10,9 +11,9 @@ except ImportError:
Params = None
SYSTEM_UI_DIR = os.path.join(BASEDIR, "system", "ui")
UI_DIR = os.path.join(BASEDIR, "selfdrive", "ui")
TRANSLATIONS_DIR = os.path.join(UI_DIR, "translations")
LANGUAGES_FILE = os.path.join(TRANSLATIONS_DIR, "languages.json")
UI_DIR = files("openpilot.selfdrive.ui")
TRANSLATIONS_DIR = UI_DIR.joinpath("translations")
LANGUAGES_FILE = TRANSLATIONS_DIR.joinpath("languages.json")
UNIFONT_LANGUAGES = [
"ar",
@@ -43,7 +44,7 @@ class Multilang:
def setup(self):
try:
with open(os.path.join(TRANSLATIONS_DIR, f'app_{self._language}.mo'), 'rb') as fh:
with TRANSLATIONS_DIR.joinpath(f'app_{self._language}.mo').open('rb') as fh:
translation = gettext.GNUTranslations(fh)
translation.install()
self._translation = translation
@@ -66,7 +67,7 @@ class Multilang:
return self._translation.ngettext(singular, plural, n)
def _load_languages(self):
with open(LANGUAGES_FILE, encoding='utf-8') as f:
with LANGUAGES_FILE.open(encoding='utf-8') as f:
self.languages = json.load(f)
self.codes = {v: k for k, v in self.languages.items()}