Как выбрать конкретную колонку из таблицы для определенного языка?

Я делаю перевод страницы. По примеру из интернета я создала таблицу в БД с большим количеством колонок для каждого элемента текста на сайте.
Но если на сайте будет очень много текста, соответственно будет и много колонок в таблице, что является неправильным. Поэтому я думаю создать таблицу только с тремя колонками id en и ru и обращаться к тексту с помощью id

На форумах я нашла такой код:
<?php
$en_select = '';
$pl_select = '';
$language = '';
if ((isset($_GET['language']) && $_GET['language'] == 'en') || !isset($_GET['language'])) {
    $en_select = 'selected';
    $language = 'en';
} else {
    $pl_select = 'selected';
    $language = 'ru;
}
$con = new mysqli('localhost', 'root', '', 'site');
$sql = "SELECT * FROM translate WHERE language='$language'";
$con->set_charset('utf8');
$result = $con->query($sql);
$row = $result->fetch_all(MYSQLI_ASSOC);
?>


<li class="fright">
Language
<select onchange="set_language()" name="language" id="language">
<option value="en" <?php echo $en_select?>>EN</option>
<option value="ru" <?php echo $ru_select?>>RU</option>
</select>
</li>

<div id="content">
<p><?php echo $row['0']['translate']?></p>
</div>


function set_language(){
var language=jQuery('#language').val();
window.location.href='?language='+language;
}


Подскажите, пожалуйста, как его изменить чтобы он был подходящим для ситуации которую я описала выше?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro Куратор тега PHP
Посмотрите тут было небольшое обсуждение Как правильно хранить мультиязычный контент?
Скажем у нас есть в базе статьи в таблице article, у статей есть заголовок title и содержимое content.
Есть два основных концепта:

1. Можно под каждый язык сделать отдельную колонку: title_ru, title_en, content_ru, content_en
Тогда в зависимости от выбранного языка запрос будет примерно такой
SELECT title_ru AS title, content_ru AS content FROM article


2. Каждую языковую версию храним отдельной записью (версия статьи на таком-то языке), либо в связанной таблице где лежат данные под язык и есть колонка с указанием языка.
В зависимости от реализации забираем целиком статью такой-то языковой версии или делаем JOIN чтобы получить данные в выбранном языке.
Ответ написан
Ваш ответ на вопрос

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

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