diff --git a/DaisyX/modules/utils/language.py b/DaisyX/modules/utils/language.py index 8929c2a2..0f6b8467 100644 --- a/DaisyX/modules/utils/language.py +++ b/DaisyX/modules/utils/language.py @@ -22,81 +22,70 @@ from DaisyX.services.redis import redis from DaisyX.utils.logger import log + LANGUAGES = {} log.info("Loading localizations...") -for filename in os.listdir("DaisyX/localization"): - log.debug("Loading language file " + filename) - with open("DaisyX/localization/" + filename, "r", encoding="utf8") as f: +for filename in os.listdir('DaisyX/localization'): + log.debug('Loading language file ' + filename) + with open('DaisyX/localization/' + filename, "r", encoding='utf8') as f: lang = yaml.load(f, Loader=yaml.CLoader) - lang_code = lang["language_info"]["code"] - lang["language_info"]["babel"] = Locale(lang_code) + lang_code = lang['language_info']['code'] + lang['language_info']['babel'] = Locale(lang_code) LANGUAGES[lang_code] = lang -log.info( - "Languages loaded: {}".format( - [ - language["language_info"]["babel"].display_name - for language in LANGUAGES.values() - ] - ) -) +log.info("Languages loaded: {}".format( + [language['language_info']['babel'].display_name for language in LANGUAGES.values()])) async def get_chat_lang(chat_id): - r = redis.get("lang_cache_{}".format(chat_id)) + r = redis.get('lang_cache_{}'.format(chat_id)) if r: return r else: - db_lang = await db.lang.find_one({"chat_id": chat_id}) + db_lang = await db.lang.find_one({'chat_id': chat_id}) if db_lang: # Rebuild lang cache - redis.set("lang_cache_{}".format(chat_id), db_lang["lang"]) - return db_lang["lang"] - user_lang = await db.user_list.find_one({"user_id": chat_id}) - if user_lang and user_lang["user_lang"] in LANGUAGES: + redis.set('lang_cache_{}'.format(chat_id), db_lang['lang']) + return db_lang['lang'] + user_lang = await db.user_list.find_one({'user_id': chat_id}) + if user_lang and user_lang['user_lang'] in LANGUAGES: # Add telegram language in lang cache - redis.set("lang_cache_{}".format(chat_id), user_lang["user_lang"]) - return user_lang["user_lang"] + redis.set('lang_cache_{}'.format(chat_id), user_lang['user_lang']) + return user_lang['user_lang'] else: - return "en" + return 'en' async def change_chat_lang(chat_id, lang): - redis.set("lang_cache_{}".format(chat_id), lang) - await db.lang.update_one( - {"chat_id": chat_id}, {"$set": {"chat_id": chat_id, "lang": lang}}, upsert=True - ) + redis.set('lang_cache_{}'.format(chat_id), lang) + await db.lang.update_one({'chat_id': chat_id}, {"$set": {'chat_id': chat_id, 'lang': lang}}, upsert=True) async def get_strings(chat_id, module, mas_name="STRINGS"): chat_lang = await get_chat_lang(chat_id) if chat_lang not in LANGUAGES: - await change_chat_lang(chat_id, "en") + await change_chat_lang(chat_id, 'en') class Strings: - @staticmethod - def get_strings(lang, mas_name, module): + def get_strings(self, lang, mas_name, module): - if ( - mas_name not in LANGUAGES[lang] - or module not in LANGUAGES[lang][mas_name] - ): + if mas_name not in LANGUAGES[lang] or module not in LANGUAGES[lang][mas_name]: return {} data = LANGUAGES[lang][mas_name][module] - if mas_name == "STRINGS": - data["language_info"] = LANGUAGES[chat_lang]["language_info"] + if mas_name == 'STRINGS': + data['language_info'] = LANGUAGES[chat_lang]['language_info'] return data def get_string(self, name): data = self.get_strings(chat_lang, mas_name, module) if name not in data: - data = self.get_strings("en", mas_name, module) + data = self.get_strings('en', mas_name, module) return data[name] @@ -115,9 +104,9 @@ def get_strings_dec(module, mas_name="STRINGS"): def wrapped(func): async def wrapped_1(*args, **kwargs): message = args[0] - if hasattr(message, "chat"): + if hasattr(message, 'chat'): chat_id = message.chat.id - elif hasattr(message, "message"): + elif hasattr(message, 'message'): chat_id = message.message.chat.id else: chat_id = None @@ -132,4 +121,4 @@ async def wrapped_1(*args, **kwargs): async def get_chat_lang_info(chat_id): chat_lang = await get_chat_lang(chat_id) - return LANGUAGES[chat_lang]["language_info"] + return LANGUAGES[chat_lang]['language_info']