我正在构建一个自定义CMS,并试图通过使用MySQL和列方法来创建多语言内容。我没有使用任何框架,它是纯PHP。
这是我的代码:
<?php
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result)) {
$title = $row['title'];
}
echo $title;
?>
我正在成功地从数据库中打印标题。
现在,如果我通过添加新字段"title_en"answers"title_de"来更改表帖子,并添加会话
$_SESSION['current_language'] = 'en';
$_SESSION['current_language'] = 'de';
如何创建语言切换器并打印标题取决于激活的语言?
编辑:
这是我正在尝试的代码
<?php
session_start();
if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) {
$lang = $_GET['lang'];
$_SESSION['current_language'] = $lang;
print_r($_SESSION['current_language']);
} else {
$lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en';
}
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result)) {
$title = $row['title_'.$lang];
echo $title;
}
?>
但在www.mywebsite.com/lang=de上,它仍然显示英文标题。
EDIT2
我刚试过www.mywebsite.com/?lang=de,并且显示正常。非常感谢ПавелИванов!
只需使用保存的语言作为关键字。get属性应该比保存的会话具有更高的优先级(例如,当用户想要切换语言时)。
if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) {
$lang = $_GET['lang'];
$_SESSION['current_language'] = $lang;
} else {
$lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en';
}
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result)) {
$title = $row['title_'.$lang];
echo $title;
}
编辑:语言切换器是url中的简单ul>li列表,lang="Your lang"