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实现图象锐化代码
Jun 14 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
基于swoole实现多人聊天室
Jun 14 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
laravel框架创建授权策略实例分析
Nov 22 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
解析argc argv在php中的应用
2013/06/24 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
微信小程序自定义组件
2017/08/16 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
微信小程序progress组件使用详解
2018/01/31 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
Python使用filetype精确判断文件类型
2017/07/02 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
pandas中的series数据类型详解
2019/07/06 Python
python中的itertools的使用详解
2020/01/13 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
毕业典礼主持词
2015/06/29 职场文书
小学思品教学反思
2016/02/20 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
详解Redis复制原理
2021/06/04 Redis
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python