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 相关文章推荐
一个分页的论坛
Oct 09 PHP
实用函数4
Nov 08 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
PHP版自动生成文章摘要
Jul 23 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
php传值和传引用的区别点总结
Nov 19 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
python匿名函数用法实例分析
2019/08/03 Python
python写一个随机点名软件的实例
2019/11/28 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
中层干部岗位职责
2013/12/18 职场文书
体育馆的标语
2014/06/24 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript