/** * Resolve application language by checking user cookies, preferred language and profile settings */ public function beforeRequest() { if (Yii::$app->getRequest()->getCookies()->has($this->cookieName) && !Yii::$app->session->hasFlash('forceUpdateLocale')) { $userLocale = Yii::$app->getRequest()->getCookies()->getValue($this->cookieName); } else { $userLocale = Yii::$app->language; if (!Yii::$app->user->isGuest && Yii::$app->user->identity->userProfile->locale && array_key_exists(Yii::$app->user->identity->userProfile->locale, Languages::getLanguages())) { $userLocale = Yii::$app->user->getIdentity()->userProfile->locale; } elseif ($this->enablePreferredLanguage) { $userLocale = Languages::getDefault(); } } if (Yii::$app->getRequest()->get('lang_locale')) { $userLocale = Yii::$app->getRequest()->get('lang_locale'); } Yii::$app->language = $userLocale; }