濮阳杆衣贸易有限公司

主頁 > 知識庫 > laravel實(shí)現(xiàn)于語言包的完美切換方法

laravel實(shí)現(xiàn)于語言包的完美切換方法

熱門標(biāo)簽:銅川電話機(jī)器人價格 沛縣400電話辦理 辦理重慶400電話 智能電話機(jī)器人好公司門薩維 德陽中江如何申請400開頭電話 聊城電話外呼系統(tǒng)公司 AI電話機(jī)器人OEM貼牌 江蘇電商外呼系統(tǒng)運(yùn)營商 青白江地圖標(biāo)注

需要引入:

use Illuminate\Support\Facades\Session;

use Illuminate\Support\Facades\App;

前言:

App::getLocale();獲取當(dāng)前語言

App::setLocale();設(shè)置語言配置文件

語言配置文件config/app.php

locale 是默認(rèn)語言,fallback_locale為備用語言

語言字符串存放在resources/lang目錄中,Blade模板引擎打印語言行{{ trans('messages.welcome') }}

思路是把當(dāng)前的語言設(shè)定存在Session里頭,然后再寫個Middleware去截Http請求,在截住的請求里用Session里的語言設(shè)定值來設(shè)Locale。

1.創(chuàng)建中間件

在Mideleware中創(chuàng)建一個名為language.php的中間件如下:

2、中間鍵創(chuàng)建完成后需要進(jìn)行注冊中間才能使用哦接下來我們進(jìn)行注冊language中間鍵進(jìn)行注冊,如果還是有不懂的小伙伴可以參考一下官網(wǎng)

http://laravelacademy.org/post/57.html,中間件詳解,這塊比較重要:

8在app下面找到Http/Kernel.php,編輯該文件 找到如下:

 protected $middlewareGroups = [
    'web' => [
      \App\Http\Middleware\EncryptCookies::class,
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
      \Illuminate\Session\Middleware\StartSession::class,
      \Illuminate\View\Middleware\ShareErrorsFromSession::class,
      \App\Http\Middleware\VerifyCsrfToken::class,
      \App\Http\Middleware\Language::class, //語言包中間件注冊。
    ],

3、接下來我們開始書寫路由了:Route::get('demos','IndexController@ins');

4、通過路由訪問對應(yīng)的控制器接下來我們創(chuàng)建一個控制器IndexController

思路:前端頁面通過下拉菜單獲取當(dāng)前用戶選擇的語言包是英文還是簡體。通過ajax請求到當(dāng)前控制器,把通過setLocale進(jìn)行設(shè)置,把語言包存入到session中進(jìn)行返回。返回的同時進(jìn)行刷新頁面

use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\App;
use Illuminate\Http\Response;
public function ins(Request $request){
    if($request->ajax()){
      $data = $request->all();
      App::setLocale($data['language']);
      $res = $request->session()->put('language',$data['language']);      
      return $this->returnCode(200,'',$res);
    }else{
		//刷新后頁面,再去獲取語言包
      $rr = App::getLocale();
	//寫入自己的邏輯存把信息返回到頁面中區(qū)
      return view('welcome')->with('lan',$rr);
    }
  }

5、接下來我們開始編寫前端的代碼:在我們直接一welcome頁面為例子:

div class="container">
      div class="content">
          !--div class="title">a href="/demo/zh_cn" rel="external nofollow" >{{ trans('welcome.message') }}/a>/div>-->
          select οnchange="changelanguage(this.value)">
            option value="en">
               @if(App::getLocale() =='en')
                selected
               @else
               @endif
              English
            /option>
            option value='zh_cn'@if(App::getLocale() == 'zh_cn') selected @else @endif>簡體中文/option>>
             div>{{trans('welcome.message')}}{{$lan}}/div>
          /select>
       
        
      /div>
      script src="{{asset('public/home/js/jquery.min.js')}}">/script>
       script>
         function changelanguage(val){
           $.ajax({
             type :'get',
             url :'demos',
             data:{
              language :val 
             },
             dataType :'json',
             success:function(res){
               
               if(res){
                 window.location.reload();
               }
             }
           })
         }
       /script>
  /body>

中英文切換完成。我這邊在做語言包數(shù)據(jù)切換時,在后臺是直接切換中英數(shù)據(jù)庫來實(shí)現(xiàn)數(shù)據(jù)的切換。這樣看起來不是那么的亂。如果親們還有什么好的方法一定留言

以上這篇laravel實(shí)現(xiàn)于語言包的完美切換方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Laravel框架中擴(kuò)展函數(shù)、擴(kuò)展自定義類的方法
  • 關(guān)于擴(kuò)展 Laravel 默認(rèn) Session 中間件導(dǎo)致的 Session 寫入失效問題分析
  • Laravel中擴(kuò)展Memcached緩存驅(qū)動實(shí)現(xiàn)使用阿里云OCS緩存
  • Laravel Intervention/image圖片處理擴(kuò)展包的安裝、使用與可能遇到的坑詳解
  • Laravel4中的Validator驗(yàn)證擴(kuò)展用法詳解
  • laravel容器延遲加載以及auth擴(kuò)展詳解
  • Laravel中基于Artisan View擴(kuò)展包創(chuàng)建及刪除應(yīng)用視圖文件的方法
  • Laravel框架路由配置總結(jié)、設(shè)置技巧大全
  • 淺析Laravel5中隊(duì)列的配置及使用
  • PHP開發(fā)框架laravel安裝與配置教程
  • PHP框架laravel的.env文件配置教程
  • laravel框架語言包拓展實(shí)現(xiàn)方法分析

標(biāo)簽:南寧 濟(jì)寧 山南 赤峰 三亞 迪慶 烏魯木齊 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《laravel實(shí)現(xiàn)于語言包的完美切換方法》,本文關(guān)鍵詞  laravel,實(shí)現(xiàn),于語言,于,語言,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《laravel實(shí)現(xiàn)于語言包的完美切換方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于laravel實(shí)現(xiàn)于語言包的完美切換方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鄂温| 舟山市| 靖江市| 蒙城县| 额济纳旗| 会宁县| 郁南县| 天峻县| 务川| 兰州市| 镇巴县| 勐海县| 偏关县| 高邮市| 凤台县| 美姑县| 兴业县| 北海市| 江都市| 明水县| 枣强县| 会泽县| 镇坪县| 垦利县| 叶城县| 酉阳| 淮南市| 花垣县| 栾城县| 天等县| 永清县| 十堰市| 太康县| 资兴市| 宜宾县| 凤山市| 潞西市| 大港区| 平果县| 安徽省| 栾城县|