/**
* Redirect to the current URL with given language code applied
*
* @param string $language the language code to add. Can also be empty to not add any language code.
*/
protected function redirectToLanguage($language)
{
// Examples:
// 1) /baseurl/index.php/some/page?q=foo
// 2) /baseurl/some/page?q=foo
// 3)
// 4) /some/page?q=foo
if ($this->showScriptName) {
// 1) /baseurl/index.php
// 2) /baseurl/index.php
// 3) /index.php
// 4) /index.php
$redirectUrl = $this->_request->getScriptUrl();
} else {
// 1) /baseurl
// 2) /baseurl
// 3)
// 4)
$redirectUrl = $this->_request->getBaseUrl();
}
if ($language) {
$redirectUrl .= '/' . $language;
}
// 1) some/page
// 2) some/page
// 3)
// 4) some/page
$pathInfo = $this->_request->getPathInfo();
if ($pathInfo) {
$redirectUrl .= '/' . $pathInfo;
}
if ($redirectUrl === '') {
$redirectUrl = '/';
}
// 1) q=foo
// 2) q=foo
// 3)
// 4) q=foo
$queryString = $this->_request->getQueryString();
if ($queryString) {
$redirectUrl .= '?' . $queryString;
}
Yii::$app->getResponse()->redirect($redirectUrl);
if (YII_ENV_TEST) {
throw new \yii\base\Exception(\yii\helpers\Url::to($redirectUrl));
} else {
Yii::$app->end();
}
}