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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
实用函数5
Nov 08 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
PHP Google的translate API代码
Dec 10 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
php实现文件下载功能的几个代码分享
May 10 PHP
php实现根据url自动生成缩略图的方法
Sep 23 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
隐性调用php程序的方法
Jun 13 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 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集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
JavaScript脚本库编写的方法
2015/12/09 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Pycharm调试程序技巧小结
2020/08/08 Python
什么是唯一索引
2015/07/05 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
音乐表演专业毕业生求职信
2013/10/14 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
社会工作专业求职信
2014/07/15 职场文书
单位工作证明
2014/10/07 职场文书
国庆横幅标语
2014/10/08 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
信仰纪录片观后感
2015/06/08 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python