主頁(yè) > 知識(shí)庫(kù) > Laravel5.5 動(dòng)態(tài)切換多語(yǔ)言的操作方式

Laravel5.5 動(dòng)態(tài)切換多語(yǔ)言的操作方式

熱門標(biāo)簽:江門回?fù)芡夂粝到y(tǒng) 電銷機(jī)器人沒(méi)有效果怎么樣 泊頭在哪里辦理400電話 江西電銷機(jī)器人收費(fèi) 高德地圖標(biāo)注店鋪收費(fèi)嗎 欣思維地圖標(biāo)注 杭州語(yǔ)音電銷機(jī)器人 天潤(rùn)融通外呼系統(tǒng)好嗎 高德地圖標(biāo)注位置怎么標(biāo)注

第一步: 新建所有的語(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)方式

標(biāo)簽:內(nèi)江 深圳 雙鴨山 石嘴山 大同 駐馬店 江門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel5.5 動(dòng)態(tài)切換多語(yǔ)言的操作方式》,本文關(guān)鍵詞  Laravel5.5,動(dòng)態(tài),切換,多,語(yǔ)言,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel5.5 動(dòng)態(tài)切換多語(yǔ)言的操作方式》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Laravel5.5 動(dòng)態(tài)切換多語(yǔ)言的操作方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章