@JohnxFFF

Как правильно хранить мультиязычный контент?

Добрый день.
Есть вложенные категории nested sets (где листья - категории/страницы), для каждого языка - свой поддомен

Как правильно хранить мультиязычные статьи/категории?
Пока есть 2 варианта:
  1. Каждая статья/категория - отдельная запись в таблице, с столбцом указывающим на язык, а выборку делать с условием по языку
  2. Каждая статья/категория - просто обертка, с url, автором, и какими-то общими данными + общей версией
    А уже конкретно контент статьи + мета, язык которой отличается от общей версии (англ) хранить в отдельной таблице


Подскажите, как будет грамотнее, и где будет меньше проблем?
Как мне кажется логичнее 2 вариант, но буду рад узнать ваше мнение, опыт
  • Вопрос задан
  • 207 просмотров
Решения вопроса 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если предполагается что для каждого языка одинаковый список категорий и статей, то лучше второй вариант.
Причём содержимое статьи для любого языка лучше отделить от самой обёртки статьи.
То есть 2 таблицы
1. article - только общая информация, которая повторяется для каждой статьи, и никакой "общей версии" не содержит.
2. article_data - содержимое статьи на определённом языке.

Нет смысла хранить внутри статьи "общую версию" текста, так как это только усложнит логику кода лишними проверками, что есть стандартный заголовок на англ языке, он лежит в самой статье, а заголовок на другом языке лежит отдельно. Или при редактировании опять надо будет проверять что стандартный язык в статью, а если доп. язык то отдельно - это опять же усложнение.
При полном разделении статей и содержимого можно будет легко менять "стандартный" язык, вдруг завтра это будет не англ, а какой-то другой? И логика кода будет чище и проще так как работать будем с понятием "содержимое на таком-то языке" и не важно какой язык стандартный и тд.
Ответ написан
DevMan
@DevMan
первый вариант.
второй вариант - усложнение логики с непонятными целями.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы