首页 > 解决方案 > Laravel 5.5 路线本地化

问题描述

我们正在尝试路由到不同的语言,但目前效果不佳。我们使用语言文件夹。

我们目前有:( example.com/hotelA如果有人访问它,它会根据 IP 自动更改语言)。

现在我们想要所有语言的直接链接:

我们解决了页面按钮中的切换器,如下所示:

Route::get('language/{locale}', function ($locale)
{
    App::setLocale($locale);
    Session::put('locale',$locale);
    Session::put('custlocale',$locale);

    return back();
});

但这仅在某些触发按钮时才有效。所以我们尝试了:

Route::get('/{locale}/{slug}/', 'frontEnd\HotelController@showHotel'), function ($locale)
{
    App::setLocale($locale);
    Session::put('locale',$locale);
    Session::put('custlocale',$locale);

    return back();
});

真的不行 所以我们尝试了很多其他的事情,但我们无法正确解决它。知道如何正确解决这个问题吗?也许是最佳实践?

标签: laravellaravel-5routinglaravel-5.5

解决方案


App::setLocale($locale)只会改变当前请求的语言环境,在会话中设置语言环境不会改变 Laravel 使用的语言环境。

如果您想使用会话中设置的语言环境,您可以向您的网站添加一个中间件App::setLocale(),该中间件从会话中获取语言环境并使用.


推荐阅读