Yii и перевод контента

Добрый день. Так как все таки правильно работать с переводами на YII?
Висит у меня какой-нибудь виджет в шапке (en | ру | de ), пользователь кликает и мы меняем 'language' на ru_RU, например. Срабатывает i18n - по переходу на разные страницы отрабатывается message, переводится все, что в Yii::t() - с этим все понятно.
Что делать со статьями (если хранить перевод в базе)? Как-то дать понять модулям/контроллерам, что сейчас надо брать контент из этого поля базы (content_ru) , а не из этого (content_en)?
  • Вопрос задан
  • 2467 просмотров
Решения вопроса 1
@homyden
https://github.com/mikehaertl/translatable поведение для перевода моделей. Там и про базу описано. Смысл в том, чтобы хранить сущность и отдельно ее перевод.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
локаль выбранная вам доступна, а как вы построите архитектуру базы решать вам.

По поводу разделения на базы данных по языковому признаку - это не очень удобный вариант. Как минимум будут проблемы с миграцией данных и деплоем. Да и просто это как-то не кошерно.
Ответ написан
@slip31 Автор вопроса
Ну я имею в виду проверять в каждом контроллере "если ru, то content_ru"? Наверное, есть более цивилизованные способы? (ну, как понимаю, можно, конечно и Controller предопределить сам, чтобы в каждом не писать)
Ответ написан
Все-таки вернусь к вопросу. Имеем два варианта:
1) Хранить `content_ru`,`content_en`, в моделе получать Yii::$app->language и как-то получать
get->'name_'.Yii::$app->language (Кстати, это возможно сделать?)
2) Хранить `id`, и хранить отдельно таблицу `id`,`ru`,`en`, ну это как-то как в Yii:t только с базой

Что все-таки выбрать. SEO не важно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы