feature/localization #13

Merged
geekiot merged 7 commits from feature/localization into develop 2025-11-09 12:09:04 +05:00
3 changed files with 83 additions and 2 deletions
Showing only changes of commit 77d65b9d73 - Show all commits

View file

@ -0,0 +1,58 @@
from aiogram import F
from aiogram.types import CallbackQuery, Message
from aiogram.utils.i18n import gettext as _
from sqlalchemy.ext.asyncio import AsyncSession
from bot.handlers import unverified_registry
from bot.utils.keyboards import get_language_choose_markup
from bot.utils.types import ChatType
from database import TelegramUser
@unverified_registry.register(
triggers="choose_language",
description="Choose language callback menu",
chat_types=ChatType.PRIVATE,
is_callback=True,
)
async def call_choose_language(
call: CallbackQuery,
) -> None:
if not isinstance(call.message, Message):
return
await call.message.edit_text(
text=_("unverified choose language menu"),
reply_markup=get_language_choose_markup(),
)
@unverified_registry.register(
filters=F.data.startswith("choose_language_"), # pyrefly: ignore
description="Choose language callback menu",
chat_types=ChatType.PRIVATE,
is_callback=True,
)
async def call_choosed_language(
call: CallbackQuery,
telegram_user: TelegramUser,
session: AsyncSession,
) -> None:
if not isinstance(call.message, Message) or call.data is None:
return
code = call.data.split("_")[-1]
telegram_user.lang = code
await session.commit()
await call.message.edit_text(
text=_(
"unverified choose language successfully template",
locale=code,
).format(
code,
),
reply_markup=None,
)

View file

@ -1,5 +1,6 @@
__all__ = [
"get_start_verification_markup",
"get_language_choose_markup",
"get_verification_role_markup",
"get_verification_finish_markup",
"get_menu_markup",
@ -23,8 +24,30 @@ def get_start_verification_markup() -> InlineKeyboardMarkup:
InlineKeyboardButton(
text=_("start verification button"),
callback_data="verification_start",
)
),
InlineKeyboardButton(
text=_("choose language button"),
callback_data="choose_language",
),
)
builder.adjust(1)
return builder.as_markup()
def get_language_choose_markup() -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.add(
InlineKeyboardButton(
text="en", callback_data="choose_language_en"
),
InlineKeyboardButton(
text="ru", callback_data="choose_language_ru"
),
)
builder.adjust(2)
return builder.as_markup()

View file

@ -103,7 +103,7 @@ class RouterRegistry:
if isinstance(chat_types, ChatType):
chat_types = [chat_types]
if isinstance(filters, (Filter, State)):
if isinstance(filters, (Filter, State, MagicFilter)):
filters = [filters]
elif filters is None:
filters = list()