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 相关文章推荐
PHP安全配置
Dec 06 PHP
PHP脚本中include文件出错解决方法
Nov 20 PHP
php 无法载入mysql扩展
Mar 12 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 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中文本操作的类
2007/03/17 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
cakephp常见知识点汇总
2017/02/24 PHP
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
C# .NET面试题
2015/11/28 面试题
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
出国留学自荐信模板
2015/03/06 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
话题作文之学会尊重
2019/12/16 职场文书
在js中修改html body的样式
2021/11/11 Javascript
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript
java实现web实时消息推送的七种方案
2022/07/23 Java/Android