laravel怎样做多语言切换?五个步骤轻松实现
Admin 2021-05-28 群英技术资讯 1865 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
对象输出:__toString()当一个对象被当做字符串进行输出时(echo,print),会调用__toString()方法<?php//输出对象classPerson{//属性public$name;private$age;//方法publicfunction
CodeIgniter 是一个基于 MVC框架 的PHP轻量级框架(开源),它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库,以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注于你的创造性工作。
这篇文章主要介绍了PHP实现微信提现功能,此类功能在微信商城中经常会用到,今天小编通过实例代码给大家讲解,需要的朋友可以参考下
JSON数据格式相比xml的解析难度较低,配合Ajax技术的使用使得前端获取数据,呈现数据非常方便,所以下面这篇文章主要给大家介绍了关于PHP如何将数据库查询结果输出为json格式的相关资料,需要的朋友可以参考下
PHP的常量和变量不同在哪?有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008