【问题标题】:Laravel 5.5 Localization in RouteLaravel 5.5 路线本地化
【发布时间】:2019-01-28 13:36:16
【问题描述】:

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

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

现在我们希望有所有语言的直接链接:

  • example.com/**en**/hotelA/
  • example.com/**tr**/hotelA/

我们这样解决了页面按钮中的切换器:

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();
});

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

【问题讨论】:

  • {locale}/{slug} 有点危险,因为间接地整个 URI 文本变得随机。 skdljfjk/asjkdsjd 之类的文字也会被您的路线捕获。
  • 没错,我们就是在问这个问题:)

标签: laravel laravel-5 routing laravel-5.5


【解决方案1】:

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

如果您想使用已在会话中设置的语言环境,您可以在您的网站上添加一个middleware,从会话中获取语言环境并使用App::setLocale() 为当前请求设置它。

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2018-06-21
    • 2021-01-09
    • 2019-06-24
    • 2011-03-11
    • 2017-01-08
    相关资源
    最近更新 更多