From 059e97a96dd3b2e67821fa118fee5933e9c5bc93 Mon Sep 17 00:00:00 2001 From: mihalin Date: Mon, 11 Apr 2022 15:51:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B4=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D1=8B=D1=85=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=B2=20=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D0=BE=D1=82=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D0=B8=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/locale.py | 7 +++++++ server/custom.py | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/locales/locale.py b/locales/locale.py index 1515a72..5cd083c 100644 --- a/locales/locale.py +++ b/locales/locale.py @@ -15,3 +15,10 @@ if lang == "ru": else: t = gettext.translation("olgram", localedir=locales_dir, languages=[lang]) _ = t.gettext + + +translators = { + "ru": dummy_translator, + "uk": gettext.translation("olgram", localedir=locales_dir, languages=["uk"]).gettext, + "zh": gettext.translation("olgram", localedir=locales_dir, languages=["zh"]).gettext, +} \ No newline at end of file diff --git a/server/custom.py b/server/custom.py index b307e3f..a3d995c 100644 --- a/server/custom.py +++ b/server/custom.py @@ -12,7 +12,7 @@ import logging import typing as ty from olgram.settings import ServerSettings from olgram.models.models import Bot, GroupChat, BannedUser -from locales.locale import _ +from locales.locale import _, translators from server.inlines import inline_handler _logger = logging.getLogger(__name__) @@ -23,6 +23,10 @@ db_bot_instance: ContextVar[Bot] = ContextVar('db_bot_instance') _redis: ty.Optional[Redis] = None +def _get_translator(message: types.Message) -> ty.Callable: + return translators.get(message.from_user.locale, _) + + async def init_redis(): global _redis _redis = await create_redis_pool(ServerSettings.redis_path()) @@ -37,6 +41,7 @@ def _thread_uniqie_id(bot_id: int, chat_id: int) -> str: def _on_security_policy(message: types.Message, bot): + _ = _get_translator(message) text = _("Политика конфиденциальности\n\n" "Этот бот не хранит ваши сообщения, имя пользователя и @username. При отправке сообщения (кроме команд " "/start и /security_policy) ваш идентификатор пользователя записывается в кеш на некоторое время и потом " @@ -79,6 +84,7 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot): async def handle_user_message(message: types.Message, super_chat_id: int, bot): """Обычный пользователь прислал сообщение в бот, нужно переслать его операторам""" + _ = _get_translator(message) is_super_group = super_chat_id < 0 # Проверить, не забанен ли пользователь @@ -118,6 +124,8 @@ async def handle_user_message(message: types.Message, super_chat_id: int, bot): async def handle_operator_message(message: types.Message, super_chat_id: int, bot): """Оператор написал что-то, нужно переслать сообщение обратно пользователю, или забанить его и т.д.""" + _ = _get_translator(message) + if message.reply_to_message: if not message.reply_to_message.from_user.is_bot: @@ -167,6 +175,7 @@ async def handle_operator_message(message: types.Message, super_chat_id: int, bo async def message_handler(message: types.Message, *args, **kwargs): _logger.info("message handler") + _ = _get_translator(message) bot = db_bot_instance.get() if message.text and message.text == "/start":