Разные папки views для разных языков

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kva212
Сообщения: 8
Зарегистрирован: 2016.09.16, 01:06

Разные папки views для разных языков

Сообщение kva212 »

Хочу для мультиязычности добавить другую папку, к примеру views-en.
Понимаю, что это не так, как "книжка пишет", но страницы для русского и англ. вариантов получаются разные, простым переводом фраз не отделаться.
Как посоветуете поступить? Заранее спасибо!
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Разные папки views для разных языков

Сообщение futbolim »

Так и поступите.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Разные папки views для разных языков

Сообщение futbolim »

При рендере вьюхи, выбирайте её в зависимости от языка. Что-то типа:

Код: Выделить всё

public function actionIndex()
    {
    	$lang = explode('-', Yii::$app->language)[0];
        return $this->render("@your_path/view-$lang/index");
    }
С путём разберётесь
kva212
Сообщения: 8
Зарегистрирован: 2016.09.16, 01:06

Re: Разные папки views для разных языков

Сообщение kva212 »

Спасибо.
Я, правда, предполагал, что в где-то в одном месте можно указать название папки view в зависимости от языка.
Ну ладно, и такое решение подходит.
Еще раз спасибо!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Разные папки views для разных языков

Сообщение zelenin »

site/views/ru-RU/... работает из коробки без настройки
kva212
Сообщения: 8
Зарегистрирован: 2016.09.16, 01:06

Re: Разные папки views для разных языков

Сообщение kva212 »

Не понял о чем написал zeleninб пробовал вьюшки в папку кинуть - так не работает, может не понял чего.

Не хотелось много править в рабочем проекте. Разрулил вот так:
создал новый класс, может кому понадобится
class LangController extends \yii\web\Controller
{
public function render($a,$b=[]){
$class=parent::className();
$class=str_replace('app\controllers\\', '', $class);
$class=str_replace('Controller', '', $class);
$lang='-'.\Yii::$app->language;
if($lang=='-ru')$lang='';
return parent::render('@app/views'.$lang.'/'.$class.'/'.$a.'.php',$b);
}
}
То есть переопределил render и теперь существующие классы контроллеров делаю потомками LangController и если язык не ru, то вьюшки берет из папки типа views-en
Всем спасибо. Вопрос решен.
kva212
Сообщения: 8
Зарегистрирован: 2016.09.16, 01:06

Re: Разные папки views для разных языков

Сообщение kva212 »

viewtopic.php?t=22479
а так еще лучше :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Разные папки views для разных языков

Сообщение zelenin »

kva212 писал(а): 2017.04.22, 20:57 Не понял о чем написал zeleninб пробовал вьюшки в папку кинуть - так не работает, может не понял чего.

Не хотелось много править в рабочем проекте. Разрулил вот так:
создал новый класс, может кому понадобится
class LangController extends \yii\web\Controller
{
public function render($a,$b=[]){
$class=parent::className();
$class=str_replace('app\controllers\\', '', $class);
$class=str_replace('Controller', '', $class);
$lang='-'.\Yii::$app->language;
if($lang=='-ru')$lang='';
return parent::render('@app/views'.$lang.'/'.$class.'/'.$a.'.php',$b);
}
}
То есть переопределил render и теперь существующие классы контроллеров делаю потомками LangController и если язык не ru, то вьюшки берет из папки типа views-en
Всем спасибо. Вопрос решен.
чего не ясно? вьюшки автоматом смотрятся сначала в views/<language>/*.php и только потом в views/*.php
Ответить