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 得到根目录的 __FILE__ 常量
Jul 23 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
Linux编译升级php的详细方法
Nov 04 PHP
将php数组输出html表格的方法
Feb 24 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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/01/10 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Django学习之文件上传与下载
2019/10/06 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python实现对变位词的判断方法
2020/04/05 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
大学活动总结格式
2014/04/29 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
大学生毕业求职信
2014/06/12 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书