29 lines
821 B
Python
29 lines
821 B
Python
import gettext
|
|
|
|
from app.core.logger import make_log
|
|
|
|
|
|
def get_translator(lang_code: str, domain='sanic_telegram_bot'):
|
|
localedir = 'locale'
|
|
|
|
try:
|
|
return gettext.translation(domain, localedir, languages=[lang_code])
|
|
except FileNotFoundError:
|
|
return get_translator('en', domain=domain)
|
|
|
|
|
|
class TranslationCore:
|
|
@property
|
|
def translator(self):
|
|
return get_translator(self.lang_code or 'en', domain=self.LOCALE_DOMAIN)
|
|
|
|
def translated(self, message, **format_kwargs):
|
|
try:
|
|
message = self.translator.gettext(message)
|
|
if format_kwargs:
|
|
message = message.format(**format_kwargs)
|
|
except BaseException as e:
|
|
make_log("User.translated", f"Error translating message ({self.lang_code}): {e}")
|
|
|
|
return message
|