[英]Auto detect language and redirect user
我正在做我自己的網站,我設法編寫了一些代碼,根據瀏覽器的語言指導用戶使用語言版本。 這是腳本:
<?php
if ($_SERVER["HTTP_ACCEPT_LANGUAGE"] == "sv")
header("location: index.php");
if ($_SERVER["HTTP_ACCEPT_LANGUAGE"] == "pt")
header("location: pt/index.php");
else
header("location: en/index.html");
?>
我把它放在index.php之前。 這似乎有效,因為我不在英語國家,但我的瀏覽器是英文,我被重定向到英文版。
它是否正確? 有沒有更好/更清潔的方法來做到這一點?
好吧,我遇到了一些代碼問題,這並不奇怪,因為我不是PHP專家。 因此,我一直在尋找可能的解決方案,我在另一個網站上找到了以下代碼:
<?php
// Initialize the language code variable
$lc = "";
// Check to see that the global language server variable isset()
// If it is set, we cut the first two characters from that string
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// Now we simply evaluate that variable to detect specific languages
if($lc == "fr"){
header("location: index_french.php");
exit();
} else if($lc == "de"){
header("location: index_german.php");
exit();
}
else{ // don't forget the default case if $lc is empty
header("location: index_english.php");
exit();
}
?>
這完美地完成了這項工作! 我只剩下一個問題。 沒有辦法改變語言,即使是直接鏈接到另一種語言,因為只要頁面加載,php塊就會將我重定向到borwser的語言。 如果您居住在另一個國家並且例如瑞典語作為母語,但是您的英語瀏覽器是因為您在英國購買了計算機,這可能會成為一個問題。
所以我對這個問題的解決方案是在index.html上沒有這個php代碼(因此不是index.php),為每種語言(甚至是主語言的一種語言)創建具有重復版本的文件夾。 所以現在我的網站自動檢測語言,用戶也可以選擇手動更改它,以備不時之需!
希望它能幫助其他人解決同樣的問題!
PHP 5.3.0+附帶locale_accept_from_http()
,它從Accept-Language
標頭中獲取首選語言。
您應該總是更喜歡這種方法,因為標題字段比人們想象的要復雜得多。 (這是一個加權偏好列表。)
你應該檢索這樣的語言:
$lang = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
但即便如此,你不會只是有en
的每一個英語用戶和es
西班牙語的。 它可能變得更加困難 , es-ES
和es-US
等標准也是如此。
這意味着您應該遍歷您嘗試的正則表達式列表,並以此方式確定頁面語言。 有關示例,請參閱PHP-I18N 。
我認為你的想法很棒。 可能會幫你最短的代碼:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
header("location: ".$lang."/index.php");
這應該工作正常。 你也可以使用http_negotiate_language並在這里討論
最有用的代碼
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if(file_exists('system/lang/'.$lang.'.php'))
{
include('system/lang/'.$lang.'.php');
}else{
include('system/lang/en.php'); //set default lang here if not exists translated language in ur system
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.