Laravel语言切换器,路由设置

时间:2019-12-11 08:30:02

标签: laravel localization

我想使用英语的路线example.com/en/item,然后致电example.com/no/item 我当前的控制器:

class LocalizationController extends Controller
{
    public function switch($locale)
    {
        App::setLocale($locale);
        session(['locale'=> $locale]);
        return redirect()->back();
    }
}

web.php:

Route::group(['prefix' => app()->getLocale()], function () {
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/threads', 'ThreadsController@index');
});
Route::get('/lang/{locale}','LocalizationController@switch');

如何保持语言环境在网址中显示?

1 个答案:

答案 0 :(得分:0)

    return redirect(url()->previous()."?".http_build_query(['locale'=>$locale]));

    return redirect()->route('home', ['locale' => $locale]);

但是在第二个示例中,您必须为路线创建名称,例如:

Route::get('/lang/{locale}','PagesController@switch')->name('locale');

您将在您的网址中看到以下内容:

  

http://192.168.1.49/test/public/home?locale=en

更新:

在您的.env集内=>

APP_URL=en 
  

内部app \ Providers \ AppServiceProvider.php

设置此

   \URL::forceRootUrl(\Config::get('app.url'));
    if (\Str::contains(\Config::get('app.url'), 'https://')) {
        \URL::forceScheme('https');
    }

返回首页后,您将进入网址

http://192.168.1.49/test/public/home/en