2016-10-29 1 views
0

The documentation of laravel говорит:Как реализовать локализацию, когда в URL-адресе имеется несколько динамических значений?

Вы также можете изменить активный язык во время выполнения с помощью метода Setlocale на App фасада:

Route::get('welcome/{locale}', function ($locale) { 
    App::setLocale($locale); 

    // 
}); 

Также он говорит:

по умолчанию язык для вашего приложения хранится в файле конфигурации config/app.php.

Что означает, если не любое значение, которое специфика языка, то Laravel будет использоваться язык по умолчанию (который определяется там).


Хорошо, а как насчет того, когда в URL-адресе присутствует динамическое значение? Я имею в виду, как я могу определить язык, если в URL есть или нет {locale}. Например:

Route::get('post/{locale}/{id}', function ($locale, Request $request) { 
    App::setLocale($locale); 
    $post_id = $request->segment(2); 
    // search in the database based on $post_id 
}); 

Как вы видите, я получил пост идентификатор URL с помощью segment(2). Но он не будет работать все время. Потому что иногда {locale} не будет установлен (и мы ожидаем, что laravel использует язык по умолчанию). В этом случае мне нужно использовать segment(1) для достижения идентификатора сообщения.

В любом случае, как я могу реализовать локализацию , если в URL есть другие динамические значения?

+0

ли опечатка, что 'Route :: получить ('пост/{локали} {идентификатор}' , 'должно быть как' Route :: get ('post/{locale}/{id}', '? –

ответ

1

Вы можете изменить свой маршрут как:

Route::get('post/{id}/{locale?}', function ($id, $locale = null, Request $request) { 
    if(! is_null($locale)) { 
     App::setLocale($locale); 
    } 
    $post_id = $id; 
    // search in the database based on $post_id 
}); 

Docs

его называют Дополнительные параметры

Смежные вопросы