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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
加强版phplib的DB类
Mar 31 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP分页类集锦
Nov 18 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
php封装的验证码类分享
Feb 26 PHP
YII框架http缓存操作示例
Apr 29 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
星际争霸秘籍
2020/03/04 星际争霸
PHP中调用JAVA
2006/10/09 PHP
第八节 访问方式 [8]
2006/10/09 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
用原生js做单页应用
2017/01/17 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
python线程池的实现实例
2013/11/18 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
python文件排序的方法总结
2020/09/13 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
工程造价专业大学生自荐信
2013/10/01 职场文书
学期自我评价
2014/01/27 职场文书
迎新晚会主持词
2014/03/24 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2014年团队工作总结
2014/11/24 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书