Skip to content

Commit b8d85fc

Browse files
dev
1 parent 3a916b0 commit b8d85fc

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

src/MultiLangComponent.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,10 @@ class MultiLangComponent extends \yii\base\Component
1919
/**
2020
* @var array доступные языки
2121
*/
22-
public $langs = ['ru', 'en', 'es'];
22+
public $langs = ['ru', 'en'];
2323

2424
/**
2525
* @var string язык проекта по умолчанию
2626
*/
2727
public $default_lang = 'ru';
28-
29-
/**
30-
* @return string
31-
*/
32-
public function getWidgetSuffix()
33-
{
34-
return (\Yii::$app->language == $this->default_lang ? "" : "-".\Yii::$app->language);
35-
}
3628
}

src/MultiLangUrlManager.php

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,35 @@ class MultiLangUrlManager extends UrlManager
2929
public function createUrl($params)
3030
{
3131
if (isset($params[static::LANG_PARAM_NAME])) {
32-
//Если указан идентификатор языка, то делаем попытку найти язык в БД,
33-
//иначе работаем с языком по умолчанию
3432
$lang = $params[static::LANG_PARAM_NAME];
35-
unset($params[static::LANG_PARAM_NAME]);
33+
//unset($params[static::LANG_PARAM_NAME]);
3634
} else {
3735
//Если не указан параметр языка, то работаем с текущим языком
3836
$lang = \Yii::$app->language;
37+
$params[static::LANG_PARAM_NAME] = $lang;
3938
//$lang = 'ru';
4039
}
4140

42-
//Получаем сформированный URL(без префикса идентификатора языка)
43-
$url = parent::createUrl($params);
41+
//Если урл вида /url/test то нужно убрать из параметров язык, поскольку он будет содержатся не в параметра а в pathInfo
42+
if ($this->enablePrettyUrl) {
43+
unset($params[static::LANG_PARAM_NAME]);
44+
}
4445

46+
//Если указанный язык = отображаемому на сайте по умолчанию, то не нужно менять урл
4547
if ($lang == \Yii::$app->multiLanguage->default_lang) {
46-
return $url;
48+
return parent::createUrl($params);
4749
}
4850

51+
/**
52+
* Работает только с enablePrettyUrl
53+
*/
54+
if (!$this->enablePrettyUrl) {
55+
return parent::createUrl($params);
56+
}
57+
58+
//Получаем сформированный URL(без префикса идентификатора языка)
59+
$url = parent::createUrl($params);
60+
4961
//Url absolute
5062
if (strpos($url, '://') !== false) {
5163
$urlData = parse_url($url);
@@ -65,10 +77,16 @@ public function createUrl($params)
6577
return "//".$this->unparse_url($urlData);
6678

6779
} else {
68-
if ($url == '/' || $url == '') {
69-
return '/'.$lang;
80+
if ($url == '' || $url == "/") {
81+
//Поддерживаем только суффикс "/" для поддержки других суффиксов, нужно это учесть в MultiLangRequest
82+
if ($this->suffix == "/") {
83+
$suffix = "/";
84+
} else {
85+
$suffix = "";
86+
}
87+
return '/' . $lang . $suffix;
7088
} else {
71-
return '/'.$lang.$url;
89+
return '/' . $lang . $url;
7290
}
7391
}
7492
}

0 commit comments

Comments
 (0)