簡體   English   中英

PHP多語言,$ _SESSION和語言切換器

[英]PHP multilingual, $_SESSION and language switcher

我正在構建一個自定義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”和“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;
}

編輯:語言切換器很簡單ul> li列在url中,用lang =“你的郎”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM