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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
php5 图片验证码实现代码
Dec 11 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
pytorch梯度剪裁方式
2020/02/04 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
总经理岗位职责范本
2014/02/02 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
物业接待员岗位职责
2015/04/15 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
Go 语言结构实例分析
2021/07/04 Golang