Add [localization]: add i18n middleware

This commit is contained in:
Kirill Samoylenkov 2025-11-08 17:54:31 +05:00
parent 7491c7df5d
commit 6b980d8017

View file

@ -0,0 +1,38 @@
__all__ = ["I18nMiddleware"]
from typing import Any, Dict
from aiogram.types import TelegramObject
from aiogram.utils.i18n import SimpleI18nMiddleware
from database.models import TelegramUser
class I18nMiddleware(SimpleI18nMiddleware):
"""
Middleware for providing the user's language code.
Used for localizing bot messages.
"""
async def get_locale(
self,
event: TelegramObject,
data: Dict[str, Any],
) -> str:
"""
Retrieving the user's language code.
Args:
event (TelegramObject): The incoming event.
data (Dict[str, Any]): Data for the event.
Returns:
str: user's language code.
"""
telegram_user: TelegramUser | None = data.get("telegram_user")
if telegram_user is None:
return self.i18n.default_locale
return telegram_user.lang