#!/usr/bin/env python3 from Interfaces.OpoTestsInterface import OpoTestsInterface from typing import Any, Optional, Self from Utils.Check import Check from Utils.Utils import Utils class I18NManager: DEFAULT_SETTINGS:dict[str, Any|None] = {} def __init__(self:Self, ot:OpoTestsInterface) -> None: self.ot:OpoTestsInterface = ot self.__sentences:dict[str, dict[str, str|list[str]|tuple[str]]] = {} self.__default_language:str = "espanol" self.__language_selected:str = "espanol" def get(self:Self, texts:str|list|tuple, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, _default:Optional[Any] = None) -> str|None: keys:list[str] = Utils.get_keys(texts) text:str|tuple[str]|list[str]|None = None if len(keys): used:tuple[str] = tuple() language:str for language in [self.__language_selected, self.__default_language] + list(self.__sentences.keys()): if language not in used: used += (language,) if language in self.__sentences: for key in keys: if key in self.__sentences[language] and self.__sentences[language][key] is not None: text = self.__sentences[language][key] break if text is not None: break if text is None: strings:list[str] = Utils.get_strings(texts) text = strings[0] if _default == None and len(strings) else _default return Utils.string_variables(( "".join(text) if Check.is_array(text) else text), inputs, _default) if text else text