Laravel5.5 動(dòng)態(tài)切換多語言的操作方式
第一步: 新建所有的語言包文件 resources/lang
messages.php
就是返回一個(gè)數(shù)組 return [] 格式
中文的:
return [ "test" => "這里是測(cè)試", "test1" => "繼續(xù)測(cè)試", ...... ];
英文的:
return [ "test" => "this is a test...", "test1" => "test again...", ...... ];
各種語言中的元素鍵名是對(duì)應(yīng)
第二步:配置文件 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請(qǐng)求訪問 $lang = $request->all(); $lang = $lang['lang']; App::setLocale($lang); //配置默認(rèn)語言 $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>
第五步: 中間件的設(shè)置-middleware(每一次請(qǐng)求,每個(gè)中間件都會(huì)執(zhí)行) app/http/middleware下添加Language.php 內(nèi)容如下
<?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
基本上就是這樣了,試試看,希望可以對(duì)你有幫助。告辭!
以上這篇Laravel5.5 動(dòng)態(tài)切換多語言的操作方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義的處理方法
這篇文章主要介紹了Yii2.0 Basic代碼中路由鏈接被轉(zhuǎn)義的處理方法的相關(guān)資料,本文圖文并茂介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09php過濾HTML標(biāo)簽、屬性等正則表達(dá)式匯總
這篇文章主要介紹了php過濾HTML標(biāo)簽、屬性等正則表達(dá)式匯總,本文使用代碼實(shí)例給出了過濾HTML內(nèi)容的正則表達(dá)式,具體說明請(qǐng)參閱代碼中的注釋,本文對(duì)使用PHP做采集的朋友有比較大的作用,需要的朋友可以參考下2014-09-09Zend Framework動(dòng)作助手(Zend_Controller_Action_Helper)用法詳解
這篇文章主要介紹了Zend Framework動(dòng)作助手(Zend_Controller_Action_Helper)用法,詳細(xì)分析了動(dòng)作助手Zend_Controller_Action_Helper功能,定義,使用方法與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-03-03php+ajax實(shí)現(xiàn)無刷新文件上傳功能(ajaxuploadfile)
這篇文章主要為大家詳細(xì)介紹了php結(jié)合ajaxuploadfile實(shí)現(xiàn)無刷新文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02CI框架(CodeIgniter)實(shí)現(xiàn)的導(dǎo)入、導(dǎo)出數(shù)據(jù)操作示例
這篇文章主要介紹了CI框架(CodeIgniter)實(shí)現(xiàn)的導(dǎo)入、導(dǎo)出數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了CodeIgniter框架libraies中引用PHPExcel實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入導(dǎo)出相關(guān)操作技巧,需要的朋友可以參考下2018-05-05laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫?今天小編就為大家解答一下在laravel中引入自己的函數(shù)或類庫的方法,分享給大家,給大家做個(gè)參考,一起過來看看吧2019-10-10