下面由thinkphp框架教學專欄為大家介紹ThinkPHP 6.0 多國語言優化擴充包,希望對需要的朋友有幫助!
#ThinkPHP 6.0 多語言最佳化擴充包
https://github.com/TLingC/think-lang
mywebsite.com/zh-hans/
的二級目錄存取對應語言頁面。 composer require tlingc/think-lang
請參考官方文件(https://www.kancloud.cn/manual/thinkphp6_0 /1037637) 進行相關配置。 同時注意如下與官方文件的不同點。
中間件名稱為:
'tlingc\lang\middleware\LoadLangPack',
由於多語言透過二級目錄訪問,使用Cookie保存語言
功能無效。
自動載入的應用程式語言檔案:
// 单应用模式app\lang\当前语言.php app\lang\当前语言\*.php app\lang\当前语言\*\*.php// 多应用模式app\应用\lang\当前语言.php app\应用\lang\当前语言\*.php app\应用\lang\当前语言\*\*.php
請注意此擴充包沒有對語言包解析行為進行修改,語言檔案的檔案名稱不會影響語言分組,在多個文件中存在相同定義時會導致被覆寫。
使用二級目錄存取對應語言頁面,必須使用路由定義,同時建議開啟 強制路由
模式。
use think\facade\Config;Route::view('/', 'index/index');$langs = Config::get('lang.allow_lang_list');foreach($langs as $lang){ Route::rule($lang . '/', 'index/index'); Route::rule($lang . '/welcome', 'index/welcome');}
url
助手函數在應用程式公用檔案 common.php
中加入。
use think\facade\Request;use think\facade\Lang;use think\facade\Route;use think\route\Url as UrlBuild;function url(string $url = '', array $vars = [], $suffix = true, $domain = false, $lang = true, $replace = false): UrlBuild{ if (!$lang) { if($replace) { $explode = explode('/', Request::url(), 3); $url = $url . $explode[2]; } return Route::buildUrl($url, $vars)->suffix($suffix)->domain($domain); } $lang = Lang::getLangSet(); return Route::buildUrl('/' . $lang . $url, $vars)->suffix($suffix)->domain($domain);}
比較官方提供的助手函數,增加了 $lang
及 $replace
參數。
普通跳轉,產生url時會自動帶上前方的語言名稱。
url('/welcome')
如需只取代url中的語言名稱(如在語言選擇器中使用),把 $replace
參數置為 true
即可。
url
參數。 以上是ThinkPHP 6.0 多語言最佳化擴充套件的安裝與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!