Laravel5.5 动态切换多语言的操作方式
时间:2022-07-27
本文章向大家介绍Laravel5.5 动态切换多语言的操作方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一步: 新建所有的语言包文件 resources/lang
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 AppHttpControllersHome;
use AppHttpControllersController;
use IlluminateHttpRequest;
use IlluminateSupportFacadesApp;
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 AppHttpMiddleware;
use Closure;
use IlluminateSupportFacadesApp;
use IlluminateSupportFacadesConfig;
use IlluminateSupportFacadesSession;
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 动态切换多语言的操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考。
- spark2 sql编程样例:sql操作
- hdu----(1599)最大子矩阵(几何/dp)
- Go语言简单的TCP编程
- hdu---(1054)Strategic Game(最小覆盖边)
- Swagger Starter 1.4.0发布:新增swagger功能开源与全局参数的配置。
- Go语言语法汇总
- 整理的一些模版LCS(连续和非连续)
- 以太坊开发实战(第1部分:智能合约)
- spark2 sql读取数据源编程学习样例2:函数实现详解
- hdu---(4310)Hero(贪心算法)
- 数据库容器化|未来已来
- crontab命令详解
- hdu----(4308)Saving Princess claire_(搜索)
- spark2 sql读取数据源编程学习样例1
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Elasticsearch: Reindex接口
- Android Studio 更新版本之后报错: Cannot access android.arch.lifecycle.ViewModelStoreOwner
- Android各版本查询和开启悬浮窗权限
- RuntimeException: setAudioSource failed异常
- Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
- Android TV 开发之 TV视频播放器
- Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐
- 1小时真正掌握正则表达式
- Android Studio 安装配置教程 - Windows(详细版)
- Android 天气APP(八)城市切换 之 自定义弹窗与使用
- Android 接入udesk SDK实现IM
- Android 天气APP(十二)空气质量、UI优化调整
- Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
- pkl是什么类型的文件?怎么来打开它?
- Python 技术篇-如何查看文本用什么类型的编码,文本编码查看方法