diff --git a/bot/handlers/user/payment.py b/bot/handlers/user/payment.py index 69b65f2..2f7f473 100644 --- a/bot/handlers/user/payment.py +++ b/bot/handlers/user/payment.py @@ -198,6 +198,7 @@ async def process_successful_payment(session: AsyncSession, bot: Bot, applied_referee_bonus_days_from_referral = referral_bonus_info.get( "referee_bonus_applied_days") + # Use user's DB language for all user-facing messages user_lang = db_user.language_code if db_user and db_user.language_code else settings.DEFAULT_LANGUAGE _ = lambda key, **kwargs: i18n.gettext(user_lang, key, **kwargs) @@ -488,6 +489,7 @@ async def yookassa_webhook_route(request: web.Request): await session.rollback() # Notify user about successful binding with Back button try: + # Use user's DB language for bind success notification i18n_lang = settings.DEFAULT_LANGUAGE from db.dal import user_dal db_user = await user_dal.get_user_by_id(session, user_id) diff --git a/bot/handlers/user/subscription.py b/bot/handlers/user/subscription.py index f168f02..8d74983 100644 --- a/bot/handlers/user/subscription.py +++ b/bot/handlers/user/subscription.py @@ -2,7 +2,7 @@ import logging from aiogram import Router, F, types, Bot from aiogram.filters import Command from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, LabeledPrice -from typing import Optional, Dict, Any, Union +from typing import Optional, Dict, Any, Union, List from datetime import datetime, timezone from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select @@ -774,14 +774,14 @@ async def payment_method_history(callback: types.CallbackQuery, settings: Settin async def payment_methods_list(callback: types.CallbackQuery, settings: Settings, i18n_data: dict, session: AsyncSession): current_lang = i18n_data.get("current_language", settings.DEFAULT_LANGUAGE) i18n: Optional[JsonI18n] = i18n_data.get("i18n_instance") - _ = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key + get_text = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key # For now we only support single saved YK method; format as list API-ready from db.dal.user_billing_dal import list_user_payment_methods cards: List[tuple] = [] methods = await list_user_payment_methods(session, callback.from_user.id) for m in methods: - title = _("payment_method_card_title", network=m.card_network or "Card", last4=m.card_last4 or "????") + title = get_text("payment_method_card_title", network=m.card_network or "Card", last4=m.card_last4 or "????") cards.append((str(m.method_id), title if not m.is_default else f"⭐ {title}")) # Parse page @@ -791,9 +791,9 @@ async def payment_methods_list(callback: types.CallbackQuery, settings: Settings except Exception: page = 0 - text = _("payment_methods_title") + text = get_text("payment_methods_title") if not cards: - text += "\n\n" + _("payment_method_none") + text += "\n\n" + get_text("payment_method_none") await callback.message.edit_text(text, reply_markup=get_payment_methods_list_keyboard(cards, page, current_lang, i18n)) try: await callback.answer() diff --git a/bot/services/crypto_pay_service.py b/bot/services/crypto_pay_service.py index 718f0c2..d6edd24 100644 --- a/bot/services/crypto_pay_service.py +++ b/bot/services/crypto_pay_service.py @@ -155,6 +155,7 @@ class CryptoPayService: return db_user = await user_dal.get_user_by_id(session, user_id) + # Use DB language for user-facing messages lang = db_user.language_code if db_user and db_user.language_code else settings.DEFAULT_LANGUAGE _ = lambda k, **kw: i18n.gettext(lang, k, **kw) diff --git a/bot/services/stars_service.py b/bot/services/stars_service.py index eaf36cc..b48b4b5 100644 --- a/bot/services/stars_service.py +++ b/bot/services/stars_service.py @@ -109,8 +109,9 @@ class StarsService: if not final_end: final_end = activation_details["end_date"] - current_lang = i18n_data.get("current_language", - self.settings.DEFAULT_LANGUAGE) + # Always use user's language from DB for user-facing messages + db_user = await user_dal.get_user_by_id(session, message.from_user.id) + current_lang = db_user.language_code if db_user and db_user.language_code else self.settings.DEFAULT_LANGUAGE i18n: JsonI18n = i18n_data.get("i18n_instance") _ = lambda k, **kw: i18n.gettext(current_lang, k, **kw) if i18n else k diff --git a/bot/services/tribute_service.py b/bot/services/tribute_service.py index a7d4403..06d1d25 100644 --- a/bot/services/tribute_service.py +++ b/bot/services/tribute_service.py @@ -209,6 +209,7 @@ class TributeService: ) try: + # Use user's DB language in success messages prepared above await bot.send_message( int(user_id), success_msg,