cancel
Showing results for 
Search instead for 
Did you mean: 

Magento 2 Программно отличить язык админки (не getLocale())

SOLVED

Magento 2 Программно отличить язык админки (не getLocale())

Доброго времени суток! При доработке модуля импорта товаров столкнулся со следующей ситуацией. В админке есть несколько пользователей, при этом у одного из них интерфейс (и фронтенд и бэкэнд) русифицированы. У другого - на английском. Общие настройки магазина (Stores -> Configurations -> General -> Locale Options) у всех одинаков - Russian.

При этом язык самого пользователя в настройках разный (System -> All Users -> User Info) - ru/en:

1520968812403.jpg

 

 

 

 

 

 

Проблема в том, что при импорте товаров нужно указывать некоторые атрибуты по их заполнителям:

1520969382050.jpg

 

 

 

 

а в руссифицированном пользователе соответственно поле атрибута содержит "Каталог, Поиск"

 

В коде примерно так:

 

...       
$this->_resolver = $this->_objectManager->get('Magento\Framework\Locale\Resolver');
$this->myLocale = $this->_resolver->getLocale();
...   
if($this->myLocale == 'ru_RU') {
    $buffer['visibility'] = 'Не видим по отдельности';
} else {
    $buffer['visibility'] = 'Not Visible Individually';
}

Но в не русифицированном пользователе getLocale() так же возвращает в коде ru_RU и импорт в последующем крашится из-за невалидного значения атрибута (написанного на русском для англоязычного интерфейса) .

 

Подскажите пожалуйста, как можно программно различить именно текущий язык админки или получить местозаполнители атрибутов?

 

P.S. Модуль импорта на базе https://github.com/firegento/FireGento_FastSimpleImport2

1 REPLY

Re: Magento 2 Программно отличить язык админки (не getLocale())

UPD Оказывается нужно было получить пользователя сессии, а там уже методы извлечения информации есть... 

...
$this->authSession = $this->_objectManager->get('\Magento\Backend\Model\Auth\Session');
... 
$user = $this->authSession->getUser();
$locale = $user->getInterfaceLocale();