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 相关文章推荐
php一些公用函数的集合
Mar 27 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
php对微信支付回调处理的方法
Aug 23 PHP
PHP数据对象映射模式实例分析
Mar 29 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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/12/06 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
PHP 类与构造函数解析
2017/02/06 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
了解一下python内建模块collections
2020/09/07 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
公职人员索取回扣检举信
2014/04/04 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
学校就业保障协议书
2019/06/24 职场文书
公开致歉信
2019/06/24 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis