bash / strings /__init__.py
azils3's picture
Upload 216 files
618430a verified
import os
import sys
from glob import glob
from typing import Any, Dict, List, Union
from pyUltroid import *
from pyUltroid.fns.tools import translate
try:
from yaml import safe_load
except ModuleNotFoundError:
from pyUltroid.fns.tools import safe_load
ULTConfig.lang = udB.get_key("language") or os.getenv("LANGUAGE", "en")
languages = {}
PATH = "strings/strings/{}.yml"
def load(file):
if not file.endswith(".yml"):
return
elif not os.path.exists(file):
file = PATH.format("en")
code = file.split("/")[-1].split("\\")[-1][:-4]
try:
languages[code] = safe_load(
open(file, encoding="UTF-8"),
)
except Exception as er:
LOGS.info(f"Error in {file[:-4]} language file")
LOGS.exception(er)
load(PATH.format(ULTConfig.lang))
def get_string(key: str, _res: bool = True) -> Any:
lang = ULTConfig.lang or "en"
try:
return languages[lang][key]
except KeyError:
try:
en_ = languages["en"][key]
tr = translate(en_, lang_tgt=lang).replace("\ N", "\n")
if en_.count("{}") != tr.count("{}"):
tr = en_
if languages.get(lang):
languages[lang][key] = tr
else:
languages.update({lang: {key: tr}})
return tr
except KeyError:
if not _res:
return
return f"Warning: could not load any string with the key `{key}`"
except TypeError:
pass
except Exception as er:
LOGS.exception(er)
if not _res:
return None
return languages["en"].get(key) or f"Failed to load language string '{key}'"
def get_help(key):
doc = get_string(f"help_{key}", _res=False)
if doc:
return get_string("cmda") + doc
def get_languages() -> Dict[str, Union[str, List[str]]]:
for file in glob("strings/strings/*yml"):
load(file)
return {
code: {
"name": languages[code]["name"],
"natively": languages[code]["natively"],
"authors": languages[code]["authors"],
}
for code in languages
}