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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
PHP多文件上传类实例
Mar 07 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
PHP attributes()函数讲解
Feb 03 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
php算法实例分享
2015/07/14 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
JS动画效果代码3
2008/04/03 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
Pycharm学习教程(1) 定制外观
2017/05/02 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Django之路由层的实现
2019/09/09 Python
Python Collatz序列实现过程解析
2019/10/12 Python
keras.layer.input()用法说明
2020/06/16 Python
static关键字的用法
2013/10/07 面试题
linux系统都有哪些运行级别
2016/03/26 面试题
2015年七夕爱情寄语
2015/03/24 职场文书