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 ( )