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

ECShop 多語言切換機制實作教學

     編輯:更多程式設計知識

實作目標

在 ECShop 系統中實現前台使用者可自由切換繁體中文、簡體中文、英文三種語言介面,並透過 Session 記住使用者偏好。

核心修改步驟

1. 修改 `includes/init.php` 初始化邏輯

找到約第 200 行 if (!defined('INIT_NO_USERS')) 之前,插入語言偵測與設定代碼:

// 1. 接收 URL 參數切換語言
if (!empty($_REQUEST['lang'])) {
    $_SESSION['lang'] = $_REQUEST['lang'];
}

// 2. 根據 Session 設定系統語言配置
if (!empty($_SESSION['lang'])) {
    switch ($_SESSION['lang']) {
        case 'zh_cn':
            $_CFG['lang'] = 'zh_cn';
            break;
        case 'zh_tw':
            $_CFG['lang'] = 'zh_tw';
            break;
        case 'en_us':
            $_CFG['lang'] = 'en_us';
            break;
    }
}

// 3. 載入對應語言包並註冊到 Smarty
require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php');
$smarty->assign('lang', $_LANG);

重要: 必須刪除原本文件中重複的語言包載入代碼 (通常在下方),避免覆蓋此處設定。

2. 前台模板調用語言切換連結

在頁面適當位置 (如頁首) 放置切換連結:

<a href="?lang=zh_cn">簡體中文</a> |
<a href="?lang=zh_tw">繁體中文</a> |
<a href="?lang=en_us">English</a>

運作原理解析

  1. 使用者點擊連結,帶入 lang 參數。
  2. init.php 攔截參數,寫入 $_SESSION['lang']。
  3. 後續請求直接讀取 Session,自動載入對應語言包。
  4. Smarty 模板透過 {$lang.xxx} 變數輸出多語言文字。

常見問題與注意事項

  • 語言包完整性: 確保 languages/zh_cn, zh_tw, en_us 目錄下皆有完整的 common.php 及各模組語言檔。
  • 編碼一致性: 所有語言檔建議統一使用 UTF-8 編碼儲存,避免亂碼。
  • 後台語言: 此修改僅影響前台,後台語言通常在後台設定中獨立配置。
  • 靜態快取: 若開啟模板快取,切換語言後需清除快取或重新編譯模板才能見效。

擴充建議

若需支援更多語言,只需在 switch 中增加 case,並補齊對應語言包目錄即可,架構具備良好擴充性。

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