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