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