ThinkPHP 6.0 多语言优化扩展包的安装与使用

发布时间 - 2020-06-23 00:00:00    点击率:

下面由thinkphp框架教程栏目给大家介绍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参数。


# 多语言  # 重写  # 文档  # 多个  # 给大家  # 请注意  # 跳转  # 如需  # 如在  # 增加了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么在Blade中安全地输出原始HTML内容  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  ,在苏州找工作,上哪个网站比较好?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  javascript中的try catch异常捕获机制用法分析  如何续费美橙建站之星域名及服务?  制作旅游网站html,怎样注册旅游网站?  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何选择PHP开源工具快速搭建网站?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何用y主机助手快速搭建网站?  如何在万网开始建站?分步指南解析  如何利用DOS批处理实现定时关机操作详解  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  LinuxShell函数封装方法_脚本复用设计思路【教程】  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  香港服务器部署网站为何提示未备案?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  高端企业智能建站程序:SEO优化与响应式模板定制开发  教你用AI润色文章,让你的文字表达更专业  Android okhttputils现在进度显示实例代码  微信推文制作网站有哪些,怎么做微信推文,急?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速搭建个人网站并优化SEO?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何快速生成橙子建站落地页链接?  Laravel怎么上传文件_Laravel图片上传及存储配置  如何用西部建站助手快速创建专业网站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  js实现获取鼠标当前的位置  zabbix利用python脚本发送报警邮件的方法  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  开心动漫网站制作软件下载,十分开心动画为何停播?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel如何使用Collections进行数据处理?(实用方法示例)