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开发文件系统实例讲解
Oct 09 PHP
多php服务器实现多session并发运行
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
给php新手谈谈我的学习心得
Feb 25 PHP
php 设计模式之 工厂模式
Dec 19 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
php实现分页显示
Nov 03 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 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实现的Timer页面运行时间监测类
2014/09/24 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python中__name__的使用实例
2015/04/14 Python
Python发送email的3种方法
2015/04/28 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
八项规定整改措施
2014/02/12 职场文书
差生评语大全
2014/05/04 职场文书
三严三实对照检查材料
2014/08/25 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
linux目录管理方法介绍
2022/06/01 Servers