Как использовать разные шаблоны для разных языков ?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
talants
Сообщения: 7
Зарегистрирован: 2019.04.26, 13:49

Как использовать разные шаблоны для разных языков ?

Сообщение talants »

Есть сайт с 4 языками. Мультиязычность работает с помощью codemix/localeurls. Инфо на сайте идентичная только переводы одной инфы на 4 языках.

Надо что 2 языка работали на 1 шаблоне и другие 2 языка на втором шаблоне.

С какого места надо оталкиваться. На форуме поиск ничего похожего не дал и в гугле тоже.


Спасибо заранее.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Как использовать разные шаблоны для разных языков ?

Сообщение rak »

имеется в виду какой-то один шаблон? или все шаблоны?
если один, то просто проверять язык и рендерить то что нужно.
если разные, то можно создать 2 темы и в зависимости от языка подключать одну из них
talants
Сообщения: 7
Зарегистрирован: 2019.04.26, 13:49

Re: Как использовать разные шаблоны для разных языков ?

Сообщение talants »

rak писал(а): 2021.01.21, 15:10 если разные, то можно создать 2 темы и в зависимости от языка подключать одну из них
2 шаблона, если А и Б язык то шаблон1 если нет шаблон 2.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Как использовать разные шаблоны для разных языков ?

Сообщение rak »

так а в чем проблема?

1. Если нужны разные view для одного action(можно конечно и в нескольких/всех экшенах так прописывать, если их немного)

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

if(in_array(Yii::$app->language, ['ru', 'en'])) {
    return $this->render('template1');
} else {
    return $this->render('template2');
}
2. Если нужны только разные layout - создать базовый контроллер, от которого будут наследоваться все остальные контроллеры приложения и в конструкторе или методе init выбирать layout примерно с той же логикой, что и в пункте 1(только вместо рендера устанавливать свойство $this->layout)

3. Если нужны и разные layout и разные view для всех экшенов, то нужно создавать 2 темы, в которых это все и размещать, а при инициализации приложения в зависимости от языка устанавливать нужную тему
Ответить