首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 與 JavaScript 依瀏覽器語言自動導向多語系頁面

     編輯:PHP 綜合知識

PHP 版本(伺服器端)

<?php
// 取得 HTTP_ACCEPT_LANGUAGE 前 5 字元(如 zh-cn, en-us)
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5);

if ($lang === 'zh-cn') {
    // 簡體中文
    header('Location: /zh-cn/index.php');
} elseif ($lang === 'zh-tw') {
    // 繁體中文
    header('Location: /zh-tw/index.php');
} else {
    // 預設英文
    header('Location: /en/index.php');
}
exit;
?>

優點:搜尋引擎可抓取、無需 JavaScript、回應較快。
缺點:依賴瀏覽器送出的 Header,使用者無法輕易切換語言。

JavaScript 版本(用戶端)

<script>
(function() {
    var lang = navigator.language || navigator.userLanguage; // IE 相容
    lang = lang.substr(0, 2).toLowerCase(); // 取前兩碼:zh, en, ja...

    var urlMap = {
        'zh': '/zh-cn/',      // 可細分 zh-cn / zh-tw
        'en': '/en/',
        'ja': '/ja/',
        'ko': '/ko/',
        'de': '/de/'
    };

    var target = urlMap[lang] || '/en/'; // 預設英文
    window.location.replace(target);
})();
</script>

優點:可偵測更精確的語言偏好、可結合 Cookie 記住使用者選擇。
缺點:需啟用 JavaScript、搜尋引擎可能不追蹤導向。

進階建議:混合策略

  1. PHP 端預設導向(SEO 友善)
  2. 頁面載入後 JS 偵測語言,若與目前頁面不符,提示使用者切換(而非強制導向)
  3. 提供語言選單並寫入 Cookie/Session 記住偏好
  4. 後續請求優先讀取 Cookie/Session,再 fallback 到 Header

語言代碼對照表

代碼語言地區變體
zh中文zh-cn (簡體), zh-tw (繁體), zh-hk (香港)
en英文en-us, en-gb, en-au
ja日文ja-jp
ko韓文ko-kr
de德文de-de
fr法文fr-fr
es西班牙文es-es, es-mx

注意事項

  • HTTP_ACCEPT_LANGUAGE 格式:zh-CN,zh;q=0.9,en;q=0.8,解析時需考慮權重 (q值)
  • PHP 可用 locale_accept_from_http() (intl 擴充套件) 正確解析
  • 避免使用 Meta Refresh 導向(<meta http-equiv="refresh">),體驗較差且 SEO 不友善
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved