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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
python模块导入的细节详解
2018/12/10 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
高级Java程序员面试要点
2013/08/02 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
结婚典礼证婚词
2014/01/08 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
房屋出租协议书
2014/04/10 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python