split to file

pull/36410/head
Shane Smiskol 1 month ago
parent 7a11c1d441
commit 6d4f568f7d
  1. 7
      system/ui/lib/application.py
  2. 46
      system/ui/lib/multilang.py

@ -12,6 +12,7 @@ from typing import NamedTuple
from importlib.resources import as_file, files from importlib.resources import as_file, files
from openpilot.common.swaglog import cloudlog from openpilot.common.swaglog import cloudlog
from openpilot.system.hardware import HARDWARE, PC from openpilot.system.hardware import HARDWARE, PC
from openpilot.system.ui.lib.multilang import Multilang
from openpilot.common.realtime import Ratekeeper from openpilot.common.realtime import Ratekeeper
DEFAULT_FPS = int(os.getenv("FPS", "60")) DEFAULT_FPS = int(os.getenv("FPS", "60"))
@ -135,6 +136,7 @@ class GuiApplication:
self._window_close_requested = False self._window_close_requested = False
self._trace_log_callback = None self._trace_log_callback = None
self._modal_overlay = ModalOverlay() self._modal_overlay = ModalOverlay()
self._multilang = Multilang()
self._mouse = MouseState(self._scale) self._mouse = MouseState(self._scale)
self._mouse_events: list[MouseEvent] = [] self._mouse_events: list[MouseEvent] = []
@ -318,11 +320,6 @@ class GuiApplication:
def height(self): def height(self):
return self._height return self._height
def _load_languages(self):
LANGUAGE_DIR = os.path.join(BASEDIR, "selfdrive", "ui", "translations")
for file in os.listdir(LANGUAGE_DIR):
if file.endswith(".ts"):
pass
def _load_fonts(self): def _load_fonts(self):
# Create a character set from our keyboard layouts # Create a character set from our keyboard layouts

@ -0,0 +1,46 @@
import os
import pyray as rl
from typing import Union
from openpilot.common.params import Params
from openpilot.common.basedir import BASEDIR
class Multilang:
def __init__(self):
self._language: str = "main_en"
self._translations: dict[str, dict[str, str]] = {}
self._load_languages()
self._hook_draw_text()
def _load_languages(self):
self._language = Params().get("LanguageSetting")
LANGUAGE_DIR = os.path.join(BASEDIR, "selfdrive", "ui", "translations")
for file in os.listdir(LANGUAGE_DIR):
if file.endswith(".ts"):
pass
def _get_translated_text(self, text: str) -> str:
if self._language not in self._translations:
return text
return self._translations[self._language].get(text, text)
def _hook_draw_text(self):
# hook rl.draw_text* to get text for multilang
# TODO: and measure text
original_draw_text = rl.draw_text
original_draw_text_ex = rl.draw_text_ex
def draw_text_wrapper(text: str, posX: int, posY: int, fontSize: int, color: Union[rl.Color, list, tuple]) -> None:
assert False
text = self._get_translated_text(text)
return original_draw_text(text, posX, posY, fontSize, color)
def draw_text_ex_wrapper(font: Union[rl.Font, list, tuple], text: str, position: Union[rl.Vector2, list, tuple], fontSize: float, spacing: float,
tint: Union[rl.Color, list, tuple]) -> None:
text = self._get_translated_text(text)
return original_draw_text_ex(font, text, position, fontSize, spacing, tint)
rl.draw_text = draw_text_wrapper
rl.draw_text_ex = draw_text_ex_wrapper
Loading…
Cancel
Save