Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.12.2017 13:26:41

Структура БД для нескольких языков

Здравствуйте.
Этот вопрос уже здесь поднимался, но та структура которая предложена там, меня не устраивает.
Во многих CMS с идет мультиязычность используя несколько таблиц, к примеру: articles и articles_lang. Но я не хочу использовать такую структуру, что бы не было по два запроса на один ресурс. Может как то по другому можно?

В голову пришло только вот это.
Создаем таблицу языков. Когда посетитель заходит на сайт, то определяем его язык браузера, делаем запрос в базу с языками, и выбираем язык по коду. Если такого языка в базе нет, выбираем дефолтный язык. Затем ставим ид этого языка в сессию, а потом глобальным скоупом, выбираем записи where('lang_id', $lang->id)

Нормально ли так делать? И есть ли еще какие то варианты. Спасибо.

Не в сети

#2 24.12.2017 15:22:34

Re: Структура БД для нескольких языков

Нормально вначале конкретизировать что именно ты собираешся локализовать. Просто чтобы не возникало путаницы давай оговоримся сходу, что язык менюшек и других интерфейсных элементов, не должен влиять на выбор контента. Вот язык интерфейса логично автоматически выбирать исходя из языкового заголовка запроса. Но не контент!

Как бы я делал (и делал big_smile ) ресурсы на разных языках. Во первых, даже если одна статья это дословный перевод другой, это всё равно разные ресурсы, у них должен быть разный URL. Хотя вероятно у них будут перекрёстные ссылки. Отсюда естественным образом вытекает то, что достаточно одной таблицы articles. А атрибут язык это одно из полей таблицы. Для перекрёстных ссылок типа "варианты статьи на других языках" можно завести таблицу связку, чтобы организовать отношение many-to-many.

Изменено artoodetoo (24.12.2017 15:23:48)

Не в сети

#3 11.01.2018 14:08:39

Re: Структура БД для нескольких языков

  1. Как бы я делал (и делал big_smile ) ресурсы на разных языках. Во первых, даже если одна статья это дословный перевод другой, это всё равно разные ресурсы, у них должен быть разный URL. Хотя вероятно у них будут перекрёстные ссылки. Отсюда естественным образом вытекает то, что достаточно одной таблицы articles. А атрибут язык это одно из полей таблицы. Для перекрёстных ссылок типа «варианты статьи на других языках» можно завести таблицу связку, чтобы организовать отношение many-to-many.

Спасибо. Все понятно!

Не в сети

Подвал раздела