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 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
建立动态的WML站点(一)
Oct 09 PHP
处理单名多值表单的详解
Jun 08 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
php中memcache 基本操作实例
May 17 PHP
PHP魔术方法的使用示例
Jun 23 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
PHP中header用法小结
May 23 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
PHP7下协程的实现方法详解
Dec 17 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新手上路(九)
2006/10/09 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
javascript解析json实例详解
2014/11/05 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
用实例解释Python中的继承和多态的概念
2015/04/27 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
自考生自我鉴定范文
2013/10/01 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
场地使用证明模板
2014/10/25 职场文书
幼儿园见习报告
2014/10/30 职场文书
酒店前台岗位职责
2015/04/16 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
Redis keys命令的具体使用
2022/06/05 Redis