Advertisement
Guest User

Untitled

a guest
Jul 27th, 2020
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1. from typing import Dict
  2.  
  3. from .consts import RawConnection
  4.  
  5.  
  6. class Translations(RawConnection):
  7.     translations: Dict[str, Dict[str, str]] = {}
  8.  
  9.     @staticmethod
  10.     async def load_translations():
  11.         sql = 'SELECT * FROM `translations`'
  12.         r = await Translations._make_request(sql, fetch=True, mult=True)
  13.         for i in r:
  14.             str_id, value, lang = i['str_id'], i['value'], i['lang'],
  15.             if lang in Translations.translations:
  16.                 Translations.translations[lang][str_id] = value
  17.             else:
  18.                 Translations.translations[lang] = {}
  19.                 Translations.translations[lang][str_id] = value
  20.  
  21.     @staticmethod
  22.     async def gettext(str_id: str, lang: str = 'ru') -> str:
  23.         try:
  24.             res = Translations.translations[lang][str_id]
  25.         except KeyError:
  26.             await Translations.load_translations()
  27.             try:
  28.                 res = Translations.translations[lang][str_id]
  29.             except KeyError:
  30.                 return str_id
  31.             else:
  32.                 return res
  33.         else:
  34.             return res
  35.  
  36.     @staticmethod
  37.     async def get_translation(str_id: str, lang: str = 'ru') -> str:
  38.         sql = 'SELECT `value` FROM `translations` WHERE `str_id` = %s AND `lang` = %s'
  39.         params = (str_id, lang)
  40.         r = await Translations._make_request(sql, params, fetch=True)
  41.         return r['value'] if r is not None else str_id
  42.  
  43.     @staticmethod
  44.     async def set_translation(str_id: str, value: str, lang: str = 'ru'):
  45.         if await Translations.get_translation(str_id, lang) != str_id:
  46.             sql = 'UPDATE `translations` SET `value` = %s WHERE `str_id` = %s AND `lang` = %s'
  47.             params = (value, str_id, lang)
  48.         else:
  49.             sql = 'INSERT INTO `translations` (`str_id`, `value`, `lang`) VALUES (%s, %s, %s)'
  50.             params = (str_id, value, lang)
  51.         await Translations._make_request(sql, params)
  52.         await Translations.load_translations()
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement