Laravel5.5动态切换多语言运行模式
第一步:创建所有语言包文件resources/lang
![]()
messages.php
就是返回一个数组return[]格式
中文:
return [ "test" => "这里是测试", "test1" => "继续测试", ...... ];
英文:
return [ "test" => "this is a test...", "test1" => "test again...", ...... ];
不同语言的元素键名对应
第2步:配置文件app/config/
'locale' => 'zh', 'locales' => ['zh','en','cht'], //包含的语言种类 'fallback_locale' => 'cht',
第3步:处理多语言切换的控件和方法:表单模板
<meta name="csrf-token" content="{{ csrf_token() }}">
<select name="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){
(d);
(); //重新刷新页面
}
}
);
});
</script>第五步:中间件设置-中间件(每个请求都会执行每个中间件)在app/http/middleware
<?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::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(''));
}
return $next($request);
}
}/middleware-app/http下添加以下内容并添加语言
![]()
基本上就是这样,尝试一下,希望对你有用。再见!
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
