отправляется только исходный (английский) вариант, и как эту ошибку можно отследить? спасибо!
Здравствуйте. Я изменил метод на lazy... from middlewares.language import i18n _ = i18n.lazy_gettext welcome = _('Welcome!') goodbye = _('Goodbye!') ...переписал метод мидлваря... class Localization(I18nMiddleware): async def get_user_locale(self, action: str, args: Tuple[Any]) -> str: return types.User.get_current().locale i18n = Localization('giwishbot', LOCALES_DIR) ...проверил доступные локали... print(messages.i18n.find_locales()) >>> {'en': <gettext.GNUTranslations object at 0x000001BEAADD5310>, 'ru': <gettext.GNUTranslations object at 0x000001BEAADBBBE0>} ...проверил локаль пользователя внутри функции с сообщением... async def bot_welcome(message: Message) -> None: await message.reply(messages.welcome) await message.answer(str(message.from_user.locale)) >>> "Welcome!" >>> "ru" ...и ничего, абсолютно ничего не помогает. Можете помочь, пожалуйста?
https://github.com/shardeex/aiogram-not-working-i18n 😭
Ладно, скорее всего никто не будет разбираться в чужом коде... Но буду рад, если кто-нибудь поделится проектом или темплейтом с работающим i18n (желательно с laxy_gettext, вдруг там какая-то разница есть).
не наблюдаю где у тебя мидлварь подключается к диспетчеру вернее вижу функцию setup(dp: Dispatcher) в middlewares/__init__.py, но не вижу где она у тебя вызывается
Да, всё решилось. Спасибо большое, максимально глупая ошибка по невнимательности.
Обсуждают сегодня