laravel怎样做多语言切换?五个步骤轻松实现
Admin 2021-05-28 群英技术资讯 1221 次浏览
laravel怎样实现多语言切换?一些朋友想要实现中文和英文的切换效果,其实实现多语言切换并不困难,下面是具体的操作步骤以及实现代码,需要的朋友可以参考。
第一步: 新建所有的语言包文件 resources/lang
messages.php
就是返回一个数组 return [] 格式
中文的:
return [ "test" => "这里是测试", "test1" => "继续测试", ...... ];
英文的:
return [ "test" => "this is a test...", "test1" => "test again...", ...... ];
各种语言中的元素键名是对应
第二步:配置文件 app/config/app.php
'locale' => 'zh', 'locales' => ['zh','en','cht'], //包含的语言种类 'fallback_locale' => 'cht',
第三步:处理多语言切换的控制器以及方法
<?php namespace App\Http\Controllers\Home; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Session; class LangController extends Controller{ /** * 切换语言包 * @param Request $request */ public function language(Request $request){ if($request->ajax()) { //Ajax请求访问 $lang = $request->all(); $lang = $lang['lang']; App::setLocale($lang); //配置默认语言 $request->session()->put('language',$lang); //存到session return App::getLocale(); }else{ if($request->session()->has('language')){ $res = $request->session()->get('language'); //获取session return $res; } } } }
第四步:blade模板
<meta name="csrf-token" content="{{ csrf_token() }}"> <select name="lang" id="lang"> <option value="zh" @if(Session::get('language') == 'zh') selected @endif>中文</option> <option value="cht" @if(Session::get('language') == 'cht') selected @endif>繁体</option> <option value="en" @if(Session::get('language') == 'en') selected @endif>English</option> </select>
js部分
<script> $("#lang").change(function(){ $.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}}); $.post( "{{url('lang')}}", { lang:$("#lang").val() }, function(d){ if(d){ console.log(d); location.reload(); //重新刷新页面 } } ); }); </script>
第五步: 中间件的设置-middleware(每一次请求,每个中间件都会执行) app/http/middleware下添加Language.php 内容如下
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Session; class Language { /** * @param $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { if (Session::has('language') AND in_array(Session::get('language'), Config::get('app.locales'))) { App::setLocale(Session::get('language')); } else { // This is optional as Laravel will automatically set the fallback language if there is none specified App::setLocale(Config::get('app.locale')); } return $next($request); } }
配置app/http/middleware/kernel.php 添加Language
基本上就是这样了,试试看,希望可以对你有帮助。告辞!
关于laravel多语言切换的操作就分享到这里了,希望以上内容可以对大家有一定的帮助,能有所收获。如果还想要了解更多laravel多语言切换的相关内容,大家能够关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Thinkphp5.0 框架Model模型简单用法,结合实例形式分析了thinkPHP5.0框架模型Model常用方法的简单使用技巧,需要的朋友可以参考下
本文主要介绍了PHP对接抖音开发平台接口的详细教程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在thinkphp中,T方法用于生成模板文件名,语法“T([资源://][模块@][主题/][控制器/]操作,[视图分层])”;该方法的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。
php如何对图片压缩处理?我们在开发时,有些需求需要对图片进行压缩处理,例如展示过大图片时,直接展示那么速度就会很慢,因此需要压缩图片。因此,这篇文章就给大家介绍一下php压缩图片的方法。
PHP实现递归有哪些方法?很多人对PHP实现递归的方法不是很了解,对此,这篇文章就给大家介绍三种PHP实现递归的方法,分别是利用引用做参数、利用全局变量和利用静态变量,有这方面学习需要的朋友可以参考。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008