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 相关文章推荐
mysql时区问题
Mar 26 PHP
php email邮箱正则
Oct 08 PHP
基于php验证码函数的使用示例
May 03 PHP
PHP常用数组函数介绍
Jul 28 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 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
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
python发送伪造的arp请求
2014/01/09 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
Python实现Restful API的例子
2019/08/31 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
学习经验交流会主持词
2014/04/01 职场文书
特教教师先进事迹
2014/05/21 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
中班教师个人总结
2015/02/05 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS