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中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP eval函数使用介绍
Dec 08 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 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
网友原创的PHP模板类代码
2008/09/07 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
JavaScript 中的事件教程
2007/04/05 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
js倒计时抢购实例
2015/12/20 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
js实现常用排序算法
2016/08/09 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
vuejs指令详解
2017/02/07 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Django框架安装方法图文详解
2019/11/04 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
工厂采购员岗位职责
2014/04/08 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
拖欠货款起诉状
2015/05/20 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
js前端图片加载异常兜底方案
2022/06/21 Javascript