Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from typing import Dict
- from .consts import RawConnection
- class Translations(RawConnection):
- translations: Dict[str, Dict[str, str]] = {}
- @staticmethod
- async def load_translations():
- sql = 'SELECT * FROM `translations`'
- r = await Translations._make_request(sql, fetch=True, mult=True)
- for i in r:
- str_id, value, lang = i['str_id'], i['value'], i['lang'],
- if lang in Translations.translations:
- Translations.translations[lang][str_id] = value
- else:
- Translations.translations[lang] = {}
- Translations.translations[lang][str_id] = value
- @staticmethod
- async def gettext(str_id: str, lang: str = 'ru') -> str:
- try:
- res = Translations.translations[lang][str_id]
- except KeyError:
- await Translations.load_translations()
- try:
- res = Translations.translations[lang][str_id]
- except KeyError:
- return str_id
- else:
- return res
- else:
- return res
- @staticmethod
- async def get_translation(str_id: str, lang: str = 'ru') -> str:
- sql = 'SELECT `value` FROM `translations` WHERE `str_id` = %s AND `lang` = %s'
- params = (str_id, lang)
- r = await Translations._make_request(sql, params, fetch=True)
- return r['value'] if r is not None else str_id
- @staticmethod
- async def set_translation(str_id: str, value: str, lang: str = 'ru'):
- if await Translations.get_translation(str_id, lang) != str_id:
- sql = 'UPDATE `translations` SET `value` = %s WHERE `str_id` = %s AND `lang` = %s'
- params = (value, str_id, lang)
- else:
- sql = 'INSERT INTO `translations` (`str_id`, `value`, `lang`) VALUES (%s, %s, %s)'
- params = (str_id, value, lang)
- await Translations._make_request(sql, params)
- await Translations.load_translations()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement