Laravel5.5 动态切换多语言的操作方式


Posted in PHP onOctober 25, 2019

第一步: 新建所有的语言包文件 resources/lang

Laravel5.5 动态切换多语言的操作方式

messages.php

就是返回一个数组 return [] 格式

中文的:

return [
 "test" => "这里是测试",
 "test1" => "继续测试",
 ......
];

英文的:

return [
 "test" => "this is a test...",
 "test1" => "test again...",
 ......
];

各种语言中的元素键名是对应

第二步:配置文件 app/config/app.php

'locale' => 'zh',
'locales' => ['zh','en','cht'], //包含的语言种类
'fallback_locale' => 'cht',

第三步:处理多语言切换的控制器以及方法

<?php
namespace App\Http\Controllers\Home;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Session;
class LangController extends Controller{
 /**
  * 切换语言包
  * @param Request $request
  */
 public function language(Request $request){
  if($request->ajax()) { //Ajax请求访问
   $lang = $request->all();
   $lang = $lang['lang'];
   App::setLocale($lang); //配置默认语言
   $request->session()->put('language',$lang); //存到session
   return App::getLocale();
  }else{
   if($request->session()->has('language')){
    $res = $request->session()->get('language'); //获取session
    return $res;
   }
 
  }
 }
}

第四步:blade模板

<meta name="csrf-token" content="{{ csrf_token() }}">
<select name="lang" id="lang">
 <option value="zh" @if(Session::get('language') == 'zh') selected @endif>中文</option>
 <option value="cht" @if(Session::get('language') == 'cht') selected @endif>繁体</option>
 <option value="en" @if(Session::get('language') == 'en') selected @endif>English</option>
</select>

js部分

<script>
 $("#lang").change(function(){
  $.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}});
  $.post(
    "{{url('lang')}}",
    {
     lang:$("#lang").val()
    },
    function(d){
     if(d){
      console.log(d);
      location.reload(); //重新刷新页面
     }
    }
  );
 });
</script>

第五步: 中间件的设置-middleware(每一次请求,每个中间件都会执行) app/http/middleware下添加Language.php 内容如下

<?php
namespace App\Http\Middleware;
 
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Session;
 
class Language
{
 /**
  * @param $request
  * @param Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
  if (Session::has('language') AND in_array(Session::get('language'), Config::get('app.locales'))) {
   App::setLocale(Session::get('language'));
  }
  else { // This is optional as Laravel will automatically set the fallback language if there is none specified
   App::setLocale(Config::get('app.locale'));
  }
  return $next($request);
 }
 
}

配置app/http/middleware/kernel.php 添加Language

Laravel5.5 动态切换多语言的操作方式

基本上就是这样了,试试看,希望可以对你有帮助。告辞!

以上这篇Laravel5.5 动态切换多语言的操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
PHP执行速率优化技巧小结
Mar 15 PHP
php基础学习之变量的使用
Jun 09 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
PDO::_construct讲解
Jan 27 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 PHP
解决php扩展安装不生效问题
Oct 25 #PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 #PHP
laravel 解决Validator使用中出现的问题
Oct 25 #PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 #PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 #PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 #PHP
Laravel validate error处理,ajax,json示例
Oct 25 #PHP
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
php 可变函数使用小结
2018/06/12 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
Python 中导入csv数据的三种方法
2018/11/01 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
python with语句的原理与用法详解
2020/03/30 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
银行实习自我鉴定
2013/10/12 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
团支部推优材料
2014/05/21 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
个人求职自荐信范文
2014/06/20 职场文书
2015年班干部工作总结
2015/04/29 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
深度学习详解之初试机器学习
2021/04/14 Python