這篇文章將為大家詳細講解有關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 多語言優化擴展包的安裝方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。