當訪客瀏覽網站時,若能根據其瀏覽器語言偏好自動導向對應語言版本(如中文用戶進入中文站、海外用戶導向英文站),將大幅提升用戶體驗。本文介紹兩種常見實作方式:伺服端 PHP 判斷與客戶端 JavaScript 判斷。
在頁面 <head> 區塊最上方放入以下 PHP 程式碼,可在輸出任何 HTML 內容前完成導向,效能最佳:
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5);
if ($lang === 'zh-cn' || $lang === 'zh-tw') {
header('Location: /zh/index.php');
} else {
header('Location: /en/index.php');
}
exit;
?>
說明:
$_SERVER['HTTP_ACCEPT_LANGUAGE'] 取得瀏覽器語言標頭(如 zh-CN,zh;q=0.9,en;q=0.8)。zh-cn、zh-tw、en-us 等常見代碼。header('Location: ...') 導向,避免輸出多餘內容,符合 HTTP 標準。若無法使用 PHP(如靜態託管),可在 <head> 內嵌入以下腳本:
<script>
const lang = (navigator.language || navigator.userLanguage).substr(0, 2).toLowerCase();
const target = {
'zh': '/zh/index.html',
'en': '/en/index.html',
'ja': '/ja/index.html',
'de': '/de/index.html'
}[lang] || '/en/index.html'; // 預設英文
window.location.replace(target);
</script>
優缺點比較:
| 方案 | 優點 | 缺點 |
|---|---|---|
| PHP | 導向前無畫面閃爍、SEO 友善、可攜帶 Session/資料庫偏好 | 需伺服端支援 PHP |
| JavaScript | 純前端、靜態網站也能用 | 會先載入原頁面再跳轉、搜尋引擎可能抓取錯誤語言版 |
zh-CN(簡體)、zh-TW(繁體)、zh-HK(香港)可分別對應不同翻譯。?lang=zh 參數供程式識別。採用 PHP 方案為主、JavaScript 為輔,即可建立流暢的多語言進站體驗。