44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import gettext
|
|
import config
|
|
|
|
from .models.lang import Lang
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from discord.ext import commands
|
|
|
|
|
|
class Texts:
|
|
def __init__(self, base: str = 'base', ctx: commands.Context = None):
|
|
self.locale = self.get_locale(ctx)
|
|
self.base = base
|
|
|
|
def get(self, text: str) -> str:
|
|
texts = gettext.translation(self.base, localedir='extras/locales',
|
|
languages=[self.locale])
|
|
texts.install()
|
|
return texts.gettext(text)
|
|
|
|
def set(self, lang: str):
|
|
self.locale = lang
|
|
|
|
@staticmethod
|
|
def get_locale(ctx):
|
|
engine = create_engine(config.postgresql)
|
|
|
|
Session = sessionmaker()
|
|
Session.configure(bind=engine)
|
|
|
|
session = Session()
|
|
|
|
if ctx is not None:
|
|
current = session\
|
|
.query(Lang.value)\
|
|
.filter(Lang.key == str(ctx.guild.id))
|
|
if current.count() > 0:
|
|
return current.one()[0]
|
|
|
|
default = session\
|
|
.query(Lang.value)\
|
|
.filter(Lang.key == 'default')\
|
|
.one()[0]
|
|
return default
|