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 05 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php表单提交问题的解决方法
Apr 12 PHP
PHP之数组学习
May 29 PHP
php导入导出excel实例
Oct 25 PHP
PHP常用数组函数介绍
Jul 28 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
各种快递查询--Api接口
Apr 26 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
laravel框架创建授权策略实例分析
Nov 22 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP文件与目录操作示例
2016/12/24 PHP
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python查找第k小元素代码分享
2013/12/18 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
说出一些常用的类,包,接口
2014/09/22 面试题
几个判断型的面试题
2012/07/03 面试题
外企财务年会演讲稿
2014/01/03 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
安全保证书
2015/01/16 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
付款证明格式范文
2015/06/19 职场文书
老人节主持词
2015/07/04 职场文书
如何做好工作总结!
2019/04/10 职场文书