Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 应用程序:setLocale()不';不要在拉威尔上翻译_Laravel - Fatal编程技术网

Laravel 应用程序:setLocale()不';不要在拉威尔上翻译

Laravel 应用程序:setLocale()不';不要在拉威尔上翻译,laravel,Laravel,试图做一个语言转换,但它不起作用。帮帮我,问题出在哪里?切换后它不会转换 Route::get('/locale', function () { $locale = App::getLocale(); $locale = ($locale == 'ro') ? 'ru' : 'ro'; App::setLocale($locale); return redirect('/'); }); 因为您在设置区域设置后正在重定向 因此,您正在发出一个新请求,并且将设置默认的语言环境 您应

试图做一个语言转换,但它不起作用。帮帮我,问题出在哪里?切换后它不会转换

Route::get('/locale', function () {
  $locale = App::getLocale();
  $locale = ($locale == 'ro') ? 'ru' : 'ro';
  App::setLocale($locale);
  return redirect('/');
});

因为您在设置区域设置后正在重定向

因此,您正在发出一个新请求,并且将设置默认的语言环境


您应该将该逻辑移动到中间件。

设置区域设置后,您将重定向,Laravel将再次从设置中获取默认区域设置

我想您需要的是在会话中保存设置。
这一点已在以下章节中得到解答:


另一种方法是在URL中使用该语言(
ro.example.com/home
example.com/ru/home

这也不起作用<代码>路由::get('/locale',函数(){$locale=App::isLocale('ru')?'ro':'ru';App::setLocale('locale);返回重定向('/');})所以我需要使用所有带有语言前缀的URL?比如example.com/en/controller/action?或者我可以做一些类似switcher的事情吗?你们可以创建一个语言中间件,只要你们把那个定位片段放进去就行了。并将该中间件连接到所需的路由。