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
ajax缓存问题解决途径
Dec 06 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
用phpmyadmin更改mysql5.0登录密码
Mar 25 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php使用curl模拟登录后采集页面的例子
Nov 04 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
PHP常用处理静态操作类
Apr 03 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 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 cache类代码(php数据缓存类)
2010/04/15 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
js图片自动切换效果处理代码
2013/05/07 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JQuery球队选择实例
2015/05/18 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
python基础教程之自定义函数介绍
2014/08/29 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
毕业生教师求职信
2013/10/20 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
单位实习鉴定评语
2015/01/04 职场文书
军训结束新闻稿
2015/07/17 职场文书
大学入学感言
2015/08/01 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript