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

ThinkPHP 多語言與多模板無縫切換:配置、語言包、主題目錄結構全攻略

     編輯:PHP 相關知識

多語言支持

1. 核心配置 config.php

'LANG_SWITCH_ON'   => true,          // 開啟多語言
'DEFAULT_LANG'     => 'zh-cn',       // 默認語言
'LANG_AUTO_DETECT' => true,          // 自動偵測(瀏覽器 Accept-Language)
'LANG_LIST'        => 'en-us,zh-cn,zh-tw', // 允許列表,僅這些生效

2. 語言包目錄結構

Home/Lang/
├── zh-cn/common.php
├── en-us/common.php
└── zh-tw/common.php

每個文件返回鍵值陣列:

<?php return [
    'welcome' => '歡迎光臨',
    'lang_name' => '簡體中文',
];

3. 模板中使用

{$Think.lang.welcome} | {$Think.lang.lang_name}
<a href="?l=zh-cn">簡體</a>
<a href="?l=en-us">English</a>
<a href="?l=zh-tw">繁體</a>

控制器動態定義:L('demo', '測試內容'); → 模板 {$Think.lang.demo}。

驗證規則中引用語言包:array('uname','require','%name')(% 開頭表示語言變量)。

多模板(主題)支持

1. 核心配置

'TMPL_SWITCH_ON'      => true,
'TMPL_DETECT_THEME'   => true,        // 支援 ?t=theme 切換
'DEFAULT_THEME'       => 'default',   // 默認主題目錄名

2. 主題目錄結構

Home/Tpl/
├── default/   # 默認主題
│   └── Index/index.html
└── red/       # 紅色主題
    └── Index/index.html

模板切換鏈接:<a href="?t=red">紅色風格</a>

進階:語言與主題聯動

若不同語言需完全不同佈局,可在入口文件或公共控制器 _initialize() 中強制綁定:

if (isset($_GET['l'])) {
    $_GET['t'] = $_GET['l']; // 語言代碼即主題目錄名
}

配合 DEFAULT_THEME 即可實現「切語言即換皮膚」。

最佳實踐建議

  • 語言包拆分:common.php(通用)、user.php(用戶模塊)、admin.php(後台)按模塊載入。
  • 生產環境關閉 LANG_AUTO_DETECT,改用用戶選擇存 Cookie/Session,避免首屏閃爍。
  • 主題目錄命名建議全小寫,避免 Linux 大小寫敏感問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved