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执行速度全攻略(下)
Oct 09 PHP
也谈 PHP 和 MYSQL
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
pw的一个放后门的方法分析
Oct 08 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
php利用事务处理转账问题
Apr 22 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
php session和cookie使用说明
2010/04/07 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
浅谈django orm 优化
2018/08/18 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
Python实现打印实心和空心菱形
2019/11/23 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
医学院学生求职简历的自我评价
2013/10/24 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
学习经验交流会总结
2015/11/02 职场文书
2016开学第一课心得体会
2016/01/23 职场文书