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

PHP 實作用戶瀏覽語言偵測與設定類別

     編輯:PHP 相關知識

在開發多語系網站時,如何根據用戶偏好或瀏覽器設定自動顯示對應語言版本,是常見的需求。本文介紹一個實用的 PHP 類別 UserLang,能夠自動偵測用戶的語言偏好,並支援手動切換語言,預設支援英文、簡體中文與繁體中文三種語言。

核心功能

  • 自動偵測:若用戶未手動設定語言,類別會讀取 HTTP 標頭中的 Accept-Language 進行判斷。
  • 支援 Cookie 持久化:用戶選擇的語言會寫入 Cookie,預設有效期 30 天,下次造訪自動套用。
  • 語言代碼對應:en(英文)、sc(簡體中文)、tc(繁體中文)。

類別結構說明

<?php
class UserLang {
    private $name = 'userlang';      // Cookie 名稱
    private $expire = 2592000;       // Cookie 過期時間(秒),預設 30 天

    public function __construct($name = '', $expire = null) {
        if ($name !== '') $this->name = $name;
        if (is_numeric($expire) && $expire > 0) $this->expire = intval($expire);
    }

    // 取得目前語言
    public function get() {
        if (isset($_COOKIE[$this->name])) {
            return $_COOKIE[$this->name];
        }
        return $this->getAcceptLanguage();
    }

    // 設定語言
    public function set($lang = '') {
        $lang = strtolower($lang);
        if (in_array($lang, ['en', 'sc', 'tc'])) {
            setcookie($this->name, $lang, time() + $this->expire);
        }
    }

    // 解析 Accept-Language 標頭
    private function getAcceptLanguage() {
        $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '');
        if (in_array(substr($lang, 0, 5), ['zh-tw', 'zh_hk'])) return 'tc';
        if (in_array(substr($lang, 0, 5), ['zh-cn', 'zh-sg'])) return 'sc';
        return 'en';
    }
}
?>

使用範例

<?php
require 'UserLang.class.php';
$obj = new UserLang('sitelang', 3600); // Cookie 名稱 sitelang,有效期 1 小時
echo $obj->get() . '<br>'; // 輸出目前語言代碼
?>

應用場景

此類別適合用於多語系網站的語言自動偵測與切換功能,例如:

  • 首次造訪者根據瀏覽器語言自動導向對應語言版本。
  • 提供語言選單讓用戶手動切換,並記住偏好。
  • 搭配語言包檔案實現介面文字的動態載入。

透過封裝 Cookie 讀寫與 HTTP 標頭解析邏輯,UserLang 讓多語系語言處理變得簡潔易維護,是 PHP 開發多語系網站的實用工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved