47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
#!/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 |