laravel实现于语言包的完美切换方法


Posted in PHP onSeptember 29, 2019

需要引入:

use Illuminate\Support\Facades\Session;

use Illuminate\Support\Facades\App;

前言:

App::getLocale();获取当前语言

App::setLocale();设置语言配置文件

语言配置文件config/app.php

locale 是默认语言,fallback_locale为备用语言

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

思路是把当前的语言设定存在Session里头,然后再写个Middleware去截Http请求,在截住的请求里用Session里的语言设定值来设Locale。

1.创建中间件

在Mideleware中创建一个名为language.php的中间件如下:

2、中间键创建完成后需要进行注册中间才能使用哦接下来我们进行注册language中间键进行注册,如果还是有不懂的小伙伴可以参考一下官网

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、通过路由访问对应的控制器接下来我们创建一个控制器IndexController

思路:前端页面通过下拉菜单获取当前用户选择的语言包是英文还是简体。通过ajax请求到当前控制器,把通过setLocale进行设置,把语言包存入到session中进行返回。返回的同时进行刷新页面

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();
//写入自己的逻辑存把信息返回到页面中区
      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>

中英文切换完成。我这边在做语言包数据切换时,在后台是直接切换中英数据库来实现数据的切换。这样看起来不是那么的乱。如果亲们还有什么好的方法一定留言

以上这篇laravel实现于语言包的完美切换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php 批量替换html标签的实例代码
Nov 26 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
php一个解析字符串排列数组的方法
May 12 PHP
php实现简单的MVC框架实例
Sep 23 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
PHP中16个高危函数整理
Sep 19 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 #PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 #PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 #PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 #PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 #PHP
laravel Validator ajax返回错误信息的方法
Sep 29 #PHP
Laravel框架实现文件上传的方法分析
Sep 29 #PHP
You might like
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php实现每日签到功能
2018/11/29 PHP
lib.utf.js
2007/08/21 Javascript
javascript各种复制代码收集
2008/09/20 Javascript
js 判断 enter 事件
2009/02/12 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python zip文件 压缩
2008/12/24 Python
python发送arp欺骗攻击代码分析
2014/01/16 Python
Python之eval()函数危险性浅析
2014/07/03 Python
Python中input和raw_input的一点区别
2014/10/21 Python
Python字符串处理函数简明总结
2015/04/13 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python for循环及基础用法详解
2019/11/08 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
利用python 下载bilibili视频
2020/11/13 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
介绍一下gcc特性
2015/10/31 面试题
微博营销计划书
2014/01/10 职场文书
商场消防演习方案
2014/02/12 职场文书
三严三实对照检查材料
2014/08/25 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
郭明义电影观后感
2015/06/08 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS