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 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
PHP 引用是个坏习惯
Mar 12 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
浅析php原型模式
Nov 25 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php的4种常用运行方式详解
Dec 22 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
php 中phar包的使用教程详解
Oct 26 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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桌面中心(三) 修改数据库
2007/03/11 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
python的id()函数介绍
2013/02/10 Python
Python常用知识点汇总
2016/05/08 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
override和overload的区别
2016/03/09 面试题
获奖的大学生创业计划书
2014/01/05 职场文书
《颐和园》教学反思
2014/02/26 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
教师评语大全
2014/04/28 职场文书
颐和园导游词
2015/01/30 职场文书
期中考试后的感想
2015/08/07 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python