这篇文章将为大家详细讲解有关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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。