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编写PDF文档生成器
Oct 09 PHP
用PHP编程开发“虚拟域名”系统
Oct 09 PHP
php 随机排序广告的实现代码
May 09 PHP
php构造函数实例讲解
Nov 13 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
php获取根域名方法汇总
2014/10/28 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
python双向链表实现实例代码
2013/11/21 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
详解Python字符串切片
2019/05/20 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
计算机开发个人求职信范文
2013/09/26 职场文书
总结表彰大会主持词
2014/03/26 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书