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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
PHP 简单日历实现代码
Oct 28 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
PHP文件操作详解
Dec 30 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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
mysql建立外键
2006/11/25 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
php截取视频指定帧为图片
2016/05/16 PHP
FCK调用方法..
2006/12/21 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python中模块的__all__属性详解
2017/10/26 Python
python中的for循环
2018/09/28 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
优秀导游先进事迹材料
2014/01/25 职场文书
总经理司机岗位职责
2014/02/06 职场文书
妇女干部培训方案
2014/05/12 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
解决python3安装pandas出错的问题
2021/05/20 Python
pytorch实现手写数字图片识别
2021/05/20 Python