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:
|
else:
|
||||||
t = gettext.translation("olgram", localedir=locales_dir, languages=[lang])
|
t = gettext.translation("olgram", localedir=locales_dir, languages=[lang])
|
||||||
_ = t.gettext
|
_ = 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
|
import typing as ty
|
||||||
from olgram.settings import ServerSettings
|
from olgram.settings import ServerSettings
|
||||||
from olgram.models.models import Bot, GroupChat, BannedUser
|
from olgram.models.models import Bot, GroupChat, BannedUser
|
||||||
from locales.locale import _
|
from locales.locale import _, translators
|
||||||
from server.inlines import inline_handler
|
from server.inlines import inline_handler
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
@ -23,6 +23,10 @@ db_bot_instance: ContextVar[Bot] = ContextVar('db_bot_instance')
|
|||||||
_redis: ty.Optional[Redis] = None
|
_redis: ty.Optional[Redis] = None
|
||||||
|
|
||||||
|
|
||||||
|
def _get_translator(message: types.Message) -> ty.Callable:
|
||||||
|
return translators.get(message.from_user.locale, _)
|
||||||
|
|
||||||
|
|
||||||
async def init_redis():
|
async def init_redis():
|
||||||
global _redis
|
global _redis
|
||||||
_redis = await create_redis_pool(ServerSettings.redis_path())
|
_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):
|
def _on_security_policy(message: types.Message, bot):
|
||||||
|
_ = _get_translator(message)
|
||||||
text = _("<b>Политика конфиденциальности</b>\n\n"
|
text = _("<b>Политика конфиденциальности</b>\n\n"
|
||||||
"Этот бот не хранит ваши сообщения, имя пользователя и @username. При отправке сообщения (кроме команд "
|
"Этот бот не хранит ваши сообщения, имя пользователя и @username. При отправке сообщения (кроме команд "
|
||||||
"/start и /security_policy) ваш идентификатор пользователя записывается в кеш на некоторое время и потом "
|
"/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):
|
async def handle_user_message(message: types.Message, super_chat_id: int, bot):
|
||||||
"""Обычный пользователь прислал сообщение в бот, нужно переслать его операторам"""
|
"""Обычный пользователь прислал сообщение в бот, нужно переслать его операторам"""
|
||||||
|
_ = _get_translator(message)
|
||||||
is_super_group = super_chat_id < 0
|
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):
|
async def handle_operator_message(message: types.Message, super_chat_id: int, bot):
|
||||||
"""Оператор написал что-то, нужно переслать сообщение обратно пользователю, или забанить его и т.д."""
|
"""Оператор написал что-то, нужно переслать сообщение обратно пользователю, или забанить его и т.д."""
|
||||||
|
_ = _get_translator(message)
|
||||||
|
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
|
|
||||||
if not message.reply_to_message.from_user.is_bot:
|
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):
|
async def message_handler(message: types.Message, *args, **kwargs):
|
||||||
_logger.info("message handler")
|
_logger.info("message handler")
|
||||||
|
_ = _get_translator(message)
|
||||||
bot = db_bot_instance.get()
|
bot = db_bot_instance.get()
|
||||||
|
|
||||||
if message.text and message.text == "/start":
|
if message.text and message.text == "/start":
|
||||||
|
Loading…
Reference in New Issue
Block a user