Хочу для мультиязычности добавить другую папку, к примеру views-en.
Понимаю, что это не так, как "книжка пишет", но страницы для русского и англ. вариантов получаются разные, простым переводом фраз не отделаться.
Как посоветуете поступить? Заранее спасибо!
Разные папки views для разных языков
Re: Разные папки views для разных языков
Так и поступите.
Re: Разные папки views для разных языков
При рендере вьюхи, выбирайте её в зависимости от языка. Что-то типа:
С путём разберётесь
Код: Выделить всё
public function actionIndex()
{
$lang = explode('-', Yii::$app->language)[0];
return $this->render("@your_path/view-$lang/index");
}
Re: Разные папки views для разных языков
Спасибо.
Я, правда, предполагал, что в где-то в одном месте можно указать название папки view в зависимости от языка.
Ну ладно, и такое решение подходит.
Еще раз спасибо!
Я, правда, предполагал, что в где-то в одном месте можно указать название папки view в зависимости от языка.
Ну ладно, и такое решение подходит.
Еще раз спасибо!
Re: Разные папки views для разных языков
site/views/ru-RU/... работает из коробки без настройки
Re: Разные папки views для разных языков
Не понял о чем написал 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
Всем спасибо. Вопрос решен.
Не хотелось много править в рабочем проекте. Разрулил вот так:
создал новый класс, может кому понадобится
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
Всем спасибо. Вопрос решен.
Re: Разные папки views для разных языков
viewtopic.php?t=22479
а так еще лучше
а так еще лучше
Re: Разные папки views для разных языков
чего не ясно? вьюшки автоматом смотрятся сначала в views/<language>/*.php и только потом в views/*.phpkva212 писал(а): ↑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
Всем спасибо. Вопрос решен.