第一步: 新建所有的語(yǔ)言包文件 resources/lang
messages.php
就是返回一個(gè)數(shù)組 return [] 格式
中文的:
return [
"test" => "這里是測(cè)試",
"test1" => "繼續(xù)測(cè)試",
......
];
英文的:
return [
"test" => "this is a test...",
"test1" => "test again...",
......
];
各種語(yǔ)言中的元素鍵名是對(duì)應(yīng)
第二步:配置文件 app/config/app.php
'locale' => 'zh',
'locales' => ['zh','en','cht'], //包含的語(yǔ)言種類
'fallback_locale' => 'cht',
第三步:處理多語(yǔ)言切換的控制器以及方法
?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{
/**
* 切換語(yǔ)言包
* @param Request $request
*/
public function language(Request $request){
if($request->ajax()) { //Ajax請(qǐng)求訪問(wèn)
$lang = $request->all();
$lang = $lang['lang'];
App::setLocale($lang); //配置默認(rèn)語(yǔ)言
$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(); //重新刷新頁(yè)面
}
}
);
});
/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)切換多語(yǔ)言的操作方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 在laravel中使用with實(shí)現(xiàn)動(dòng)態(tài)添加where條件
- 在Laravel中實(shí)現(xiàn)使用AJAX動(dòng)態(tài)刷新部分頁(yè)面
- 解決Laravel5.5下的toArray問(wèn)題
- laravel 5.5 關(guān)閉token的3種實(shí)現(xiàn)方式