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