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 相关文章推荐
我的论坛源代码(六)
Oct 09 PHP
PHP date函数参数详解
Nov 27 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
php中文验证码实现方法
Jun 18 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
PHP form 表单传参明细研究
2009/07/17 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
教你php如何实现验证码
2016/01/20 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python计算字符宽度的方法
2016/06/14 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
python实现邮件发送功能
2019/08/10 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
市场调查策划方案
2014/06/10 职场文书
本科毕业生求职信
2014/06/15 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
环卫工作汇报材料
2014/10/28 职场文书
公积金贷款承诺书
2015/04/30 职场文书
文艺节目主持词
2015/07/06 职场文书
素质拓展训练感想
2015/08/07 职场文书
聘任合同书
2015/09/21 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技