加入收藏 | 设为首页 | 会员中心 | 我要投稿 濮阳站长网 (https://www.0393zz.cn/)- 专属主机、数据湖、操作系统、媒体智能、数据分析!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

laravel怎样做多语言切换?五个步骤轻松实现

发布时间:2022-03-21 14:23:26 所属栏目:语言 来源:互联网
导读:laravel怎样实现多语言切换?一些朋友想要实现中文和英文的切换效果,其实实现多语言切换并不困难,下面是具体的操作步骤以及实现代码,需要的朋友可以参考。 第一步: 新建所有的语言包文件 resources/lang messages.php 就是返回一个数组 return [] 格式 中
      laravel怎样实现多语言切换?一些朋友想要实现中文和英文的切换效果,其实实现多语言切换并不困难,下面是具体的操作步骤以及实现代码,需要的朋友可以参考。
 
       第一步: 新建所有的语言包文件 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
 
 
 
       基本上就是这样了,试试看,希望可以对你有帮助。告辞!

(编辑:濮阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读