当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel 5.4中设置Route::组()内的语言(区域设置)?

拓拔阎宝
2023-03-14

内刀片-welcome.blade.php

 <div class="links">
      <a href="https://laravel.com/docs">{{ __('passwords.reset') }}</a>
 </div>

web内部。php

如果我跑:

Route::get('/', function () {
    return view('welcome');
});

我得到正确的欢迎刀片页面与正确的翻译。

另一条路线:

Route::get('welcome/{lang}', function ($lang) {
//    echo $lang;
//    dd(Lang::getLocale());
    App::setLocale($lang);
    //dd(Lang::getLocale());
    return view('welcome');    
    //
});

如果我运行dd(Lang::getLocale()) 我可以看到URL发送的正确语言http://testapp/welcome/en。在这种情况下,'en'。如果我在评论中加入dd(),我可以在Laravel欢迎页面中看到正确的翻译。

但是当我运行这个代码时:

Route::group(['prefix'=>'welcome'], function (){    
    Route::group(['prefix'=>'{lang}'], function ($lang){
        //echo $lang;
        //dd(Lang::getLocale());
        App::setLocale($lang);
        //dd(Lang::getLocale());
        return view('welcome');            
    });
});

这就是我所拥有的:

回声$lang;在web中为我提供ErrorException。php第30行:Illumb\Routing\Router类的对象无法转换为字符串

dd(朗::getLocale());给我'en'

App::setLocale($lang);给我找不到404

应用程序::setLocale($lang);和返回视图('欢迎');给我404未找到

返回视图(“欢迎”);给我找不到404

当我奔跑

App::setLocale($lang);
dd(Lang::getLocale());
return view('welcome');

我得到一个对象:

Router {#21 ▼
  #events: Dispatcher {#23 ▶}
  #container: Application {#3 ▶}
  #routes: RouteCollection {#25 ▶}
  #current: null
  #currentRequest: null
  #middleware: array:6 [▶]
  #middlewareGroups: array:2 [▶]
  +middlewarePriority: array:6 [▶]
  #binders: []
  #patterns: []
  #groupStack: array:3 [▶]
}

所以,我猜是Route::group(['prefix'=

如何使用Route::group()解决此问题?


共有1个答案

慕皓君
2023-03-14

问题是Route::group只是一个包装器,用于组织和分组其他路由。Route::groupRoute::post/get不一样,所以你不能把逻辑放在Route::group调用中。

你能做的是以下这些

Route::group(['prefix'=>'welcome'], function (){    
    Route::group(['prefix'=>'{lang}'], function (){
        Route::get('/', function ($lang) {
            App::setLocale($lang);
            return view('welcome');
        });            
     });
});
 类似资料:
  • 问题内容: 如何在Playframework 2.2(java)中不仅从用户浏览器设置而且从子域(应该具有更高的优先级)设置语言(i18n)? 以下应该工作: example.com->英语或德语,具体取决于浏览器设置 en.example.com->强制使用英语 de.example.com->强制德语 用户应该能够在子域之间切换而不会丢失会话。 因为我有很多Java控制器,所以如果解决方案在集

  • 在设定期间您可选择用于 M600 的语言。 您可选择以下语言之一: 广东话(香港) 丹麦语 荷兰语 英语(美国、英国) 芬兰语 法语(法国、加拿大) 德语 印度尼西亚语 意大利语 日语 韩语 中文(台湾) 挪威语(巴克摩) 波兰语 葡萄牙语(巴西) 俄语 西班牙语(美国、西班牙、拉美) 瑞典语 泰语 土耳其语 越南语 请注意,您的智能手表最终会将您的语言设定复制到手机。换句话说,即如您在 M600

  • 我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a:

  • 我一直在android中开发语音识别API,发现当语言设置更改时,语音结果会发生变化,有没有办法通过编程进行设置?或者是否打算在语音语言设置屏幕上使用午餐?或者其他什么?注意:我试图使用这个额外的意图: 但这是无效的