您现在的位置是:网站首页 > PHP>Laravel 配置多语言包,实现中英文网站切换
Laravel 配置多语言包,实现中英文网站切换
- PHP
- 2020-02-11
- 1883人已阅读
简介中英文语言切换成网站开发中是个很常见的功能,那么 Laravel 中怎么配置语言包,前段时间刚好开发一个双语言项目,研究了一下,以下是 Laravel 的多语言配置方式
中英文语言切换成网站开发中是个很常见的功能,那么 Laravel 中怎么配置语言包,前段时间刚好开发一个双语言项目,研究了一下,以下是 Laravel 的多语言配置方式:
网站效果:http://www.xn--igtx4tw3s59e.com/
1、创建语言包目录
Laravel 的语言包配置目录在 resources/lang 在下面分别创建不同语言对应的目录 zh-CN(中文),en(英文) 并创建语言包文件如:
# 中文文件
zh-CN/lan.php
# 代码
return [
'home' => '首页',
'operation' => '操作',
];
# 中文文件
en/lan.php
# 代码
return [
'home' => 'Home',
'operation' => 'Operation',
];
2、创建语言包中间件
# 创建中间件
app/Http/Middleware/SwitchLanguage.php
# 代码如下
namespace App\Http\Middleware;
use Closure;
use Session;
use App;
class SwitchLanguage
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Session::has('locale') && in_array(Session::get('locale'), ['en', 'zh-CN'])) {
App::setLocale(Session::get('locale'));
} else {
App::setLocale('zh-CN');
}
return $next($request);
}
}
注:这里是设置标记在 session 中通过判断实现调用不同语言包文件
3、在 app/Http/Kernel.php 中注册中间件
protected $routeMiddleware = [
.
.
.
'switchLan' => \App\Http\Middleware\SwitchLanguage::class,
];
4、配置路由中使用定义的中间件
Route::group(['middleware' => ['switchLan'], 'namespace'=>'Front'], function () {
Route::get('/', 'IndexController@index')->name('home');
});
5、在控制器中创建语言切换方法
app/Http/Controllers/Front/IndexController.php
.
.
.
// 语言切换方法
public function changeLocale($lang)
{
session(['locale'=>$lang]);
return back();
}
.
.
.
添加路由
Route::get('/changeLocale/{locale}', 'Front\IndexController@changeLocale');
6、视图页面中使用
{{ trans('lan.home') }}
小知识:Laravel 如何判断语言包是否存在?
if (file_exists(resource_path("lang/$locale"))) {
// Locale directory exists
}
版权声明:本文为博主原创文章,欢迎大家转载。 https://itxwzj.com/technology/33
最新评论
站长大王来回复你了,长点心吧!