Смена локали программно без смены Store View

Как поменять настройки конфига где устанавливается текущая локаль

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 artemiusgreat
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 27.04.2010

27.04.2010 12:02

Добрый день.

Подскажите, пожалуйста, можно ли в скрипте (не через админку) поменять текущую локаль с английской, например, на русскую. Я интегрирую Мадженто в самописную ЦМС на Зенде и у меня пока не получается менять локаль не через админку, убил уже 2 дня, честно говоря, не понимаю где Мадженто хранит данные о текущих данных из конфига, это явно не куки, и скорей всего не сессия но какой-то файл связанный с ней.
Вот что делаю я :

- в админке ставлю основной локалью английскую, а в скрипте инициализирую Мадженто

umask(0);
Mage::app("default");
$store = Mage::app()->getStore('default');
Mage::app()->setCurrentStore($store);


- устанавливаю локаль


$localeName = "ru_RU";
Mage::reset();
Mage::register('isSecureArea', true);
Mage::app()->cleanCache();
Mage::app()->getCache()->clean();
Mage::app()->getLocale()->setDefaultLocale($localeName);
Mage::app()->getLocale()->setLocale($localeName);
Mage::app()->getLocale()->setLocaleCode($localeName);
Mage::app()->getCookie()->getStore()->setLocale($localeName);
Mage::unregister('isSecureArea');


- пытаюсь получить список месяцев для текущей локали, русской

Mage::app()->getLocale()->getTranslationList('month');


Но установка локали для текущего пользователя срабатывает ТОЛЬКО ОДИН РАЗ, после того как он залогинился, после это Мадженто ГДЕ-ТО сохраняет данные из конфига и поменять их уже НЕЛЬЗЯ почему-то и пока юзер не разлогинится - локаль не изменится.

Вопрос № 1 : как все-таки динамически менять локаль в мадженте или же в Зенде?
Вопрос № 2 : где Мадженто сохраняет данные о текущей локали, откуда их берет когда я пытаюсь подтянуть стандартный Зендовский перевод, например, список месяцев?

Заранее спасибо за ответы, ссылки и комментарии.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

27.04.2010 12:21

1) Посмотрите программный обработчик смены локали административной части (левый нижний угол)
2) Magento сохраняет однажды расчитанные значения в var/cache.

#3 artemiusgreat
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 27.04.2010

27.04.2010 13:29

Просмотр сообщенияДмитрий Федюк (27.04.2010 12:21) писал:

1) Посмотрите пограммный обработчик смены локали административной части (левый нижний угол)
2) Magento сохраняет однажды расчитанные значения в var/cache.


Пардон, я зря шумел :)

Вот это работает замечательно для подмены данных конфига :

Mage::app()->getLocale()->setDefaultLocale($localeName);
Mage::app()->getLocale()->setLocale($localeName);
Mage::app()->getLocale()->setLocaleCode($localeName);


Просто в другом месте данные вручную ложились в сессию и брались уже из сессии, а не из Мадженты.

Спасибо, тема закрыта.

Поделиться темой: