You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.1 KiB
72 lines
2.1 KiB
import os
|
|
import gettext
|
|
from openpilot.common.params import Params
|
|
from openpilot.common.basedir import BASEDIR
|
|
|
|
|
|
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")
|
|
|
|
|
|
class Multilang:
|
|
def __init__(self):
|
|
self._params = Params()
|
|
self._language: str = self._params.get("LanguageSetting").strip("main_")
|
|
print(f"Multilang initialized with language: {self._language}")
|
|
|
|
# self._translations: dict[str, dict[str, str]] = {}
|
|
|
|
# self._load_languages()
|
|
|
|
def setup(self):
|
|
# global tr, trn
|
|
try:
|
|
with open(os.path.join(TRANSLATIONS_DIR, f'app_{self._language}.mo'), 'rb') as fh:
|
|
translation = gettext.GNUTranslations(fh)
|
|
translation.install()
|
|
tr = translation.gettext
|
|
trn = translation.ngettext
|
|
print(f"Loaded translations for language: {self._language}")
|
|
except FileNotFoundError:
|
|
print(f"No translation file found for language: {self._language}, using default.")
|
|
gettext.install('app')
|
|
tr = gettext.gettext
|
|
trn = gettext.ngettext
|
|
|
|
return tr, trn
|
|
|
|
def install_language(self, language: str):
|
|
# install and set globals
|
|
global tr, trn
|
|
self._language = language
|
|
tr, trn = self.setup()
|
|
|
|
# def translate(self, text: str) -> str:
|
|
# if self._language not in self._translations:
|
|
# return text
|
|
# return self._translations[self._language].get(text, 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
|
|
|
|
|
|
# # l = gettext.translation('app_de', localedir=TRANSLATIONS_DIR, languages=['de'])
|
|
# with open(os.path.join(TRANSLATIONS_DIR, 'app_de.mo'), 'rb') as fh:
|
|
# l = gettext.GNUTranslations(fh)
|
|
# l.install()
|
|
# # tr = multilang.translate
|
|
# # tr = gettext.gettext
|
|
# tr = l.gettext
|
|
# trn = l.ngettext
|
|
|
|
# tr, trn = None, None
|
|
# multilang = Multilang()
|
|
|
|
multilang = Multilang()
|
|
tr, trn = multilang.setup()
|
|
|