'beforeRequest' ]; } public function beforeRequest() { if ( Yii::$app->getRequest()->getCookies()->has($this->cookieName) ) { $userLocale = Yii::$app->getRequest()->getCookies()->getValue($this->cookieName); } else { $userLocale = Yii::$app->language; $user_profile_locale = ArrayHelper::getValue(Yii::$app->user, 'identity.userProfile.locale'); if (!EmptyCheck::isEmpty($user_profile_locale) && in_array($user_profile_locale, $this->getAvailableLocales())) { $userLocale = Yii::$app->user->identity->userProfile->locale; } elseif ($this->enablePreferredLanguage) { $userLocale = Yii::$app->request->getPreferredLanguage($this->getAvailableLocales()); } } Yii::$app->language = $userLocale; } protected function getAvailableLocales() { return Yii::$app->localizationManager->getAvailableLocales(); } }