Я использовал common.php для выбора языка всего веб-сайта и перевода отдельных слов / фраз веб-страницы по языковым переменным из языковых файлов, например, lang / lang.de.php, lang.en .php и т. д. и результаты. Это также прекрасно работает и не является проблемой. Теперь, когда я создал блог на веб-сайте, чьи сообщения находятся в базе данных, я хотел бы сделать это сейчас, в зависимости от выбора языка посетителя, из всей таблицы: разговаривать, читать и тратить.
Короче:
Посетитель выбирает немецкий язык, и все читается из следующей таблицы, и выводится …
<?php
$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3
?>
… или если посетитель выбирает, например, английский язык, то в соответствии с таблицей ниже читать …
<?php
$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3
?>
…и так далее
common.php
<?php
session_start();
header('Cache-control: private');
if(isSet($_GET['lang'])) {
$lang = $_GET['lang'];
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
} else if(isSet($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
} else if(isSet($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
} else { $lang = 'de'; }
switch ($lang) {
case 'en': $lang_file = 'lang.en.php'; break;
case 'de': $lang_file = 'lang.de.php'; break;
case 'ru': $lang_file = 'lang.ru.php'; break;
case 'fr': $lang_file = 'lang.fr.php'; break;
default: $lang_file = 'lang.de.php'; }
include_once 'lang/'.$lang_file;
?>
blog.php
<section id="blog" class="row">
<div class="center">
<h1 style="color:#fff; text-shadow: 1px 1px 2px #000000;"><i class="fa fa-newspaper-o" aria-hidden="true"></i> Blog</h1>
<div id="blogcontent">
<?php
$pdo = new PDO('mysql:host=localhost;dbname=DATENBANK', 'BENUTZER', 'PASSWORT');
if ($_GET["lang"]=="de") { $sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
else if ($_GET["lang"]=="en") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
else if ($_GET["lang"]=="fr") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
else if ($_GET["lang"]=="ru") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }
else { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru LIMIT 3 ORDER BY Name ID LIMIT 3"; }
foreach ($pdo->query($sql) as $row) {
echo "<div class='post'><div class='blog_titel'><i class='fa fa-comment-o' aria-hidden='true'></i> " .$row['Name']. "</div>";
echo "<div class='blog_date'><i class='fa fa-calendar' aria-hidden='true'></i> " .$row['Phone']. "</div>";
echo "<div class='blog_post'> " .$row['Email']. "</div>";
echo "</div>";
}
?>
</div>
</div>
</div>
</section>
Голосовой вывод работает великолепно, и он также будет считан правильно со всех сторон существующих языков в переменной из lang / lang.de.php, lang / lang.en.php и т. Д. Когда я сейчас, но, например, с:
index.php?lang=en
Английский язык в Navigation вызывает, а затем не читает сообщения блога, как требуется из соответствующей таблицы. По моему мнению, это должно работать, но с вышеупомянутым Кодексом или там есть опечатка, или я там ошибаюсь?
Таким образом, мой вопрос к более опытным среди вас, как я могу это сделать, зависит от желаемого выбора соответствующей таблицы из существующей базы данных и отображения на языке чтения.
В случае $ _GET [‘lang’] == ‘de’ вы помещаете запрос в $ sql, что правильно, потому что тогда вы делаете $ pdo-> query ($ sql). В других случаях вы помещаете его в $ abfrage, поэтому ошибка есть.
В любом случае, более простой подход, поддерживающий ту же структуру базы данных, был бы:
foreach($pdo->query("SELECT ... FROM blog_".$_GET['lang']." WHERE ...") as row) ...
Во всяком случае, решение ppeterka, вероятно, является лучшим.
Других решений пока нет …