generated from geekiot/python-template
Add [localization]: add i18n middleware
This commit is contained in:
parent
7491c7df5d
commit
6b980d8017
1 changed files with 38 additions and 0 deletions
38
src/bot/middlewares/i18n.py
Normal file
38
src/bot/middlewares/i18n.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue