azils3/bash
0
1import os2import sys3from glob import glob4from typing import Any, Dict, List, Union5 6from pyUltroid import *7from pyUltroid.fns.tools import translate8 9try:10 from yaml import safe_load11except ModuleNotFoundError:12 from pyUltroid.fns.tools import safe_load13 14ULTConfig.lang = udB.get_key("language") or os.getenv("LANGUAGE", "en")15 16languages = {}17PATH = "strings/strings/{}.yml"18 19 20def load(file):21 if not file.endswith(".yml"):22 return23 elif not os.path.exists(file):24 file = PATH.format("en")25 code = file.split("/")[-1].split("\\")[-1][:-4]26 try:27 languages[code] = safe_load(28 open(file, encoding="UTF-8"),29 )30 except Exception as er:31 LOGS.info(f"Error in {file[:-4]} language file")32 LOGS.exception(er)33 34 35load(PATH.format(ULTConfig.lang))36 37 38def get_string(key: str, _res: bool = True) -> Any:39 lang = ULTConfig.lang or "en"40 try:41 return languages[lang][key]42 except KeyError:43 try:44 en_ = languages["en"][key]45 tr = translate(en_, lang_tgt=lang).replace("\ N", "\n")46 if en_.count("{}") != tr.count("{}"):47 tr = en_48 if languages.get(lang):49 languages[lang][key] = tr50 else:51 languages.update({lang: {key: tr}})52 return tr53 except KeyError:54 if not _res:55 return56 return f"Warning: could not load any string with the key `{key}`"57 except TypeError:58 pass59 except Exception as er:60 LOGS.exception(er)61 if not _res:62 return None63 return languages["en"].get(key) or f"Failed to load language string '{key}'"64 65 66def get_help(key):67 doc = get_string(f"help_{key}", _res=False)68 if doc:69 return get_string("cmda") + doc70 71 72def get_languages() -> Dict[str, Union[str, List[str]]]:73 for file in glob("strings/strings/*yml"):74 load(file)75 return {76 code: {77 "name": languages[code]["name"],78 "natively": languages[code]["natively"],79 "authors": languages[code]["authors"],80 }81 for code in languages82 }83 