Laravel5.5 动态切换多语言的操作方式

 更新时间:2019年10月25日 10:00:18   作者:Gino_tkzzz  
今天小编就为大家分享一篇Laravel5.5 动态切换多语言的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

第一步: 新建所有的语言包文件 resources/lang

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 动态切换多语言的操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PHP获取网站中各文章的第一张图片的代码示例

    PHP获取网站中各文章的第一张图片的代码示例

    调取文章中的第一张图作为列表页缩略图是很流行的做法,WordPress中一般主题默认也是如此,那我们接下来就一起来看看PHP获取网站中各文章的第一张图片的代码示例
    2016-05-05
  • Yii2.0 Basic代码中路由链接被转义的处理方法

    Yii2.0 Basic代码中路由链接被转义的处理方法

    这篇文章主要介绍了Yii2.0 Basic代码中路由链接被转义的处理方法的相关资料,本文图文并茂介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • CI框架数据库查询之join用法分析

    CI框架数据库查询之join用法分析

    这篇文章主要介绍了CI框架数据库查询之join用法,结合实例形式分析了join方法在数据库查询过程中的使用技巧,需要的朋友可以参考下
    2016-05-05
  • php过滤HTML标签、属性等正则表达式汇总

    php过滤HTML标签、属性等正则表达式汇总

    这篇文章主要介绍了php过滤HTML标签、属性等正则表达式汇总,本文使用代码实例给出了过滤HTML内容的正则表达式,具体说明请参阅代码中的注释,本文对使用PHP做采集的朋友有比较大的作用,需要的朋友可以参考下
    2014-09-09
  • PHP 7.0.2 正式版发布

    PHP 7.0.2 正式版发布

    七年以来,PHP一直是第四大最流行的编程语言,驱动全球超过2亿多个网站,全球超过81.7%的公共网站在服务器端采用PHP。PHP在这个星期有了自2004年以来最大的飞跃,因为PHP 7已经发布
    2016-01-01
  • Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解

    Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解

    这篇文章主要介绍了Zend Framework动作助手(Zend_Controller_Action_Helper)用法,详细分析了动作助手Zend_Controller_Action_Helper功能,定义,使用方法与相关实现代码,需要的朋友可以参考下
    2016-03-03
  • Laravel的加密解密与哈希实例讲解

    Laravel的加密解密与哈希实例讲解

    这篇文章主要介绍了Laravel的加密解密与哈希实例讲解,加密解密的知识,对于代码安全还是比较重要的,有感兴趣的同学可以学习下
    2021-03-03
  • php+ajax实现无刷新文件上传功能(ajaxuploadfile)

    php+ajax实现无刷新文件上传功能(ajaxuploadfile)

    这篇文章主要为大家详细介绍了php结合ajaxuploadfile实现无刷新文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • CI框架(CodeIgniter)实现的导入、导出数据操作示例

    CI框架(CodeIgniter)实现的导入、导出数据操作示例

    这篇文章主要介绍了CI框架(CodeIgniter)实现的导入、导出数据操作,结合实例形式分析了CodeIgniter框架libraies中引用PHPExcel实现数据导入导出相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • laravel 如何实现引入自己的函数或类库

    laravel 如何实现引入自己的函数或类库

    laravel 如何实现引入自己的函数或类库?今天小编就为大家解答一下在laravel中引入自己的函数或类库的方法,分享给大家,给大家做个参考,一起过来看看吧
    2019-10-10

最新评论