ThinkPHP 6.0 多語言優(yōu)化擴(kuò)展包的安裝與使用

下面由thinkphp框架教程欄目給大家介紹thinkphp 6.0 多語言優(yōu)化擴(kuò)展包,希望對需要的朋友有所幫助!

ThinkPHP 6.0 多語言優(yōu)化擴(kuò)展包的安裝與使用

think-lang

ThinkPHP 6.0 多語言優(yōu)化擴(kuò)展包

https://github.com/TLingC/think-lang

特色

  1. 支持通過如 mywebsite.com/zh-hans/ 的二級目錄訪問對應(yīng)語言頁面。
  2. 支持每種語言的語言包單獨(dú)成目錄,目錄下可設(shè)有二級目錄。

安裝

composer require tlingc/think-lang

使用

基礎(chǔ)配置

請參照 官方文檔(https://www.kancloud.cn/manual/thinkphp6_0/1037637) 進(jìn)行相關(guān)配置。同時注意如下與官方文檔的不同點(diǎn)。

開啟和加載語言包

中間件名稱為:

'tlingclangmiddlewareLoadLangPack',

由于多語言通過二級目錄訪問,使用Cookie保存語言 功能無效。

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

語言文件定義

自動加載的應(yīng)用語言文件:

// 單應(yīng)用模式applang當(dāng)前語言.php applang當(dāng)前語言*.php applang當(dāng)前語言**.php// 多應(yīng)用模式app應(yīng)用lang當(dāng)前語言.php app應(yīng)用lang當(dāng)前語言*.php app應(yīng)用lang當(dāng)前語言**.php

請注意此擴(kuò)展包沒有對語言包解析行為進(jìn)行修改,語言文件的文件名不會影響語言分組,在多個文件中存在相同定義時會導(dǎo)致被覆蓋。

路由設(shè)置

使用二級目錄訪問對應(yīng)語言頁面,必須使用路由定義,同時建議開啟 強(qiáng)制路由 模式。

use thinkfacadeConfig;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 助手函數(shù)

在應(yīng)用公共文件 common.php 中加入。

use thinkfacadeRequest;use thinkfacadeLang;use thinkfacadeRoute;use thinkrouteUrl 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);}

對比官方提供的助手函數(shù),增加了 $lang 及 $replace 參數(shù)。

普通跳轉(zhuǎn),生成url時會自動帶上前方的語言名稱。

url('/welcome')

如需僅替換url中的語言名稱(如在語言選擇器中使用),把 $replace 參數(shù)置為 true 即可。

TODO

  • 整合路由定義方法。
  • 整合重寫url參數(shù)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享