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 相关文章推荐
真正的ZIP文件操作类(php)
Jul 21 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP多线程类及用法实例
Dec 03 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
php实现水印文字和缩略图的方法示例
Dec 29 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python实现的一个简单LRU cache
2014/09/26 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
外语专业毕业生自我评价分享
2013/10/05 职场文书
工商技校毕业生自荐信
2013/11/15 职场文书
财务管理专业推荐信
2013/11/19 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
学生保证书范文
2014/04/28 职场文书
司法局火灾防控方案
2014/06/05 职场文书
会计试用期自我评价
2014/09/19 职场文书
天坛导游词
2015/02/02 职场文书
应聘教师求职信范文
2015/03/20 职场文书
九年级化学教学反思
2016/02/22 职场文书
JS ES6异步解决方案
2021/04/29 Javascript