mirror of
https://github.com/civsocit/olgram.git
synced 2023-07-22 01:29:12 +03:00
автоматический перевод некоторых сообщений в зависимости от локали устройства
This commit is contained in:
parent
b09f8d9cb6
commit
059e97a96d
@ -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,
|
||||
}
|
@ -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 = _("<b>Политика конфиденциальности</b>\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":
|
||||
|
Loading…
Reference in New Issue
Block a user