--------- Co-authored-by: Amit Sharma <48654350+buddhhu@users.noreply.github.com> Co-authored-by: Aditya <me@xditya.me> Co-authored-by: Dark <darkbeamer.official@gmail.com> Co-authored-by: buddhhu <amitsharma123234@gmail.com> Co-authored-by: Kaif <88398455+kaif-00z@users.noreply.github.com> Co-authored-by: 1Danish-00 <danish@ultroid.tech> Co-authored-by: TechiError <techierror@gmail.com> Co-authored-by: Dark <59723913+DarkBeamerYT@users.noreply.github.com>
83 lines
2.1 KiB
Python
83 lines
2.1 KiB
Python
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
|
|
}
|