您可以使用HTTP_ACCEPT_LANGUAGE
標題。將支持的語言保存到數組,然後使用foreach
循環標題。
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
header("Location: $lang.php"); // i.e. fi.php or se.php
break;
}
}
HTTP_ACCEPT_LANGUAGE
包含這樣的事情:
接受語言:EN-GB,EN; Q = 0.5
正如你所看到的,是多國語言,en-gb
和en
。這就是爲什麼循環標頭是很聰明的。如果你喜歡的功能,這裏有一個:
function get_user_lang() {
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
return $lang; // i.e. fi.php or se.php
break;
}
}
}
echo 'Your language is ' . get_user_lang();
步驟一步的指導:
爲每種語言創建新的文件。將它們命名爲:「fi.php」或「se.php」。
將第一個代碼部分放在主頁的頂部。該文件必須包含.php
結尾,所以它必須是php文件。如果您不明白,那應該放在何處:
<?php
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
header("Location: $lang.php"); // i.e. fi.php or se.php
break;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
contents
</body>
</html>
導航到您的主頁您的瀏覽器。如果您的瀏覽器的語言是英語,如果瑞典語,它將重定向到「en.php」; 「se.php」等。
你可以從this link看到所有的語言代碼,swedish是「sv」。
@NickR,問題要求PHP的方式。此外,你*不能*做它的客戶端,因爲被引用問題的接受答案說。 –
「瀏覽器語言」是一個模糊的概念,不需要根據「Accept-Language」標題匹配最喜歡的語言。您可能需要考慮您希望用作選擇初始頁面語言的基礎。 –
謝謝Jukka。如果我的原始問題中沒有包含更好的方法,我會很高興聽到它。 – peterh