Как поменять язык в консольном приложении?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
mogilka
Сообщения: 21
Зарегистрирован: 2013.01.19, 12:43
Откуда: Казахстан, Алматы
Контактная информация:

Как поменять язык в консольном приложении?

Сообщение mogilka »

Всем привет, у меня двуязычный сайт - ru и en. Эти языки установлены как параметры веб-приложения language и sourceLanguage соответственно. В вебе переключение языков происходит через расширение https://github.com/codemix/yii2-localeurls, всё работает отлично, и при смене языка он сохраняется в базе в профиле пользователя

А вот с запуском консольного приложения у меня проблемы: через него организована рассылка на языке пользователя. Перед началом рассылки в скрипте app\commands\MailController.php выполняется команда:

Код: Выделить всё

Yii::$app->language = $user->lang;
Но даже если у пользователя в профиле установлен английский, письмо всё равно отправляется на русском. Формирование тела письма имеет сложную логику, - оно генерирует кастомизированный контент. И такое ощущение, что при вызове методов за пределами контроллера язык снова берётся из глобального конфига - становится русским. Может ли такое быть?

Логика рассылки очень сложна, неужели при вызове каждого метода придётся заново устанавливать язык пользователя? Если вы сталкивались с такой проблемой, то как решили её?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Как поменять язык в консольном приложении?

Сообщение rak »

1. проверить что в $user->lang
2. проверить все ли сообщения, которые отправляются, переведены на en
3. проверить не переключается ли где-то язык при формировании и отправке письма
mogilka писал(а): 2021.08.02, 18:11 И такое ощущение, что при вызове методов за пределами контроллера язык снова берётся из глобального конфига - становится русским. Может ли такое быть?
конечно может, только не берется из глобального конфига, а переопределяется

Код: Выделить всё

Yii::$app->language = $user->lang;
Аватара пользователя
mogilka
Сообщения: 21
Зарегистрирован: 2013.01.19, 12:43
Откуда: Казахстан, Алматы
Контактная информация:

Re: Как поменять язык в консольном приложении?

Сообщение mogilka »

rak писал(а): 2021.08.03, 11:39 1. проверить что в $user->lang
2. проверить все ли сообщения, которые отправляются, переведены на en
3. проверить не переключается ли где-то язык при формировании и отправке письма
спасибо большое, я всё отладила, там мой баг тоже был. Смена языка и локали работает нормально
Ответить