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 addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 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/10/09 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python ATM功能实现代码实例
2020/03/19 Python
html5的localstorage详解
2017/05/09 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
高中自我鉴定
2013/12/20 职场文书
2015年企业新年寄语
2014/12/08 职场文书
大学生个人学习总结
2015/02/15 职场文书
大学生实习证明
2015/06/16 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
Redis的字符串是如何实现的
2021/10/24 Redis
深入理解pytorch库的dockerfile
2022/06/10 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android