最好的辦法是simpliest方式:)
$langs = array('LV', 'EN', 'RU');
<?php foreach ($langs as $lang): ?>
<a href="index.php?lang=<?=$lang;?>"> <?=$lang;?> </a>
<?php endforeach; ?>
所以你給用戶有機會通過GET在這個例子中改變郎。
覆蓋該會話所發送的請求:
<?php
if(in_array($_GET['lang'], $langs) {
$_SESSION['lang'] = $_GET['lang']; // to prevent user to change its session to something you don't want to
}
?>
之後,您只與此會話交互顯示內容。
你可以使用重定向,如果你有不同的語言編寫的每一頁: (但我猜邏輯如何與自動語言檢測已經實現的語言交互,但仍然...讓我建議一些方法在快?)
<?php
if (isset($_SESSION['lang']) && $_SESSION['lang'] !== 'EN') {
header("Location: mysite.com/".$_SESSION['lang']."/index.php");
exit;
}
?>
或者,您可以使用翻譯方法。
所有的翻譯都在數據庫下,與$ langs數組名稱相同。
所以你輸出從該特定的列中的內容:
SELECT lang_{$_SESSION['lang']} FROM translations WHERE string = '$string';
難道你們就不能使用,如果檢查語句是否有新的會話即chosen_session設置,如果不使用default_session –
不能修改開關算法?當用戶手動選擇一種語言時,該值被保存在會話中;語言算法會檢查此變量:如果存在,則加載所選語言,如果不存在則繼續實際行爲 –
我不確定您的問題是什麼。你在問最好的圖形用戶界面嗎? (我的Chrome發送'es-ES,es; q = 0.8,en; q = 0.6',雖然它幾乎不能被隱藏,但它是可配置的。) –