【问题标题】:Laravel localize url helperLaravel 本地化 url 助手
【发布时间】:2016-07-18 13:13:46
【问题描述】:

我需要本地化我的网站。我正在使用这个包:https://github.com/mcamara/laravel-localization 我的路线组是:

Route::group(['prefix' => LaravelLocalization::setLocale()], function()
{
Route::get('/garage', ['as' => 'garage', 'uses' => 'GarageController@garage']);
//OTHER ROUTES
});

我想本地化到这条路线的链接。如果我正在使用

href="{{ route('garage') }}

一切正常,链接看起来像“www.example.com/locale/garage”。 但如果我使用的是

href="{{ url('/garage') }}

我的本​​地化不起作用,链接看起来像“www.example.com/garage”。 有什么方法可以本地化使用 URL 助手创建的链接吗?

【问题讨论】:

  • href="{{ url(LaravelLocalization::getCurrentLocale().'/garage') }}"
  • @Calin 是的,这会起作用,谢谢,但我在代码中有几百个链接:( 有比这种方式更优雅的吗?
  • 据我所知,并非不使用命名路由。

标签: php laravel localization routes helper


【解决方案1】:

LaravelLocalization 包包含一个中间件对象,用于将所有非本地化路由重定向到相应的“本地化”。

因此,如果用户导航到http://www.example.com/test,并且系统激活了此中间件并将“en”作为该用户的当前语言环境,它会自动将他重定向到http://www.example.com/en/test

要激活此功能,请转到 app/Http/Kernel.php 并将这些类添加到 protected $routeMiddleware = [] 的开头,然后在您的路由文件中进行这些更改:

Route::group([
'prefix' => LaravelLocalization::setLocale(),
'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ]
], function()
{
Route::get('/garage', ['as' => 'garage', 'uses' => 'GarageController@garage']);
//OTHER ROUTES
});

你的问题就解决了。

【讨论】:

    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多