bash / strings /__init__.py
azils3's picture
Upload 216 files
618430a verified
Raw
History Blame Contribute Delete
2.19 kB
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
}