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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。