首頁 >php框架 >ThinkPHP >ThinkPHP 6.0 多語言最佳化擴充套件的安裝與使用

ThinkPHP 6.0 多語言最佳化擴充套件的安裝與使用

藏色散人
藏色散人轉載
2020-06-23 13:50:364134瀏覽

下面由thinkphp框架教學專欄為大家介紹ThinkPHP 6.0 多國語言優化擴充包,希望對需要的朋友有幫助!

ThinkPHP 6.0 多語言最佳化擴充套件的安裝與使用

#think-lang

#ThinkPHP 6.0 多語言最佳化擴充包

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

特色

  1. #支援透過如mywebsite.com/zh-hans/ 的二級目錄存取對應語言頁面。
  2. 支援每種語言的語言包單獨成目錄,目錄下可設有二級目錄。

安裝

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 即可。

TODO

  • 整合路由定義方法。
  • 整合重寫url參數。
#

以上是ThinkPHP 6.0 多語言最佳化擴充套件的安裝與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除