@autumn_parker
Для реализации перенаправления на страницу на соответствующем языке в Laravel 5 можно использовать Middleware, который будет проверять язык браузера пользователя и перенаправлять на соответствующую страницу.
Вот пример Middleware для проверки языка браузера и перенаправления на соответствующую страницу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; use IlluminateSupportFacadesRedirect; class CheckLanguage { public function handle(Request $request, Closure $next) { $supportedLanguages = ['en', 'fr', 'es']; // список поддерживаемых языков $language = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2); // получаем язык браузера пользователя if (!in_array($language, $supportedLanguages)) { // если язык не поддерживается, перенаправляем на страницу по умолчанию return Redirect::to('/en'); } // иначе перенаправляем на соответствующую страницу return Redirect::to('/' . $language); } } |
Затем, чтобы использовать Middleware в Laravel 5, нужно зарегистрировать его в файле app/Http/Kernel.php
:
1 2 3 4 |
protected $routeMiddleware = [ // ... 'check.language' => AppHttpMiddlewareCheckLanguage::class, ]; |
И наконец, чтобы применить Middleware к нужным маршрутам, можно использовать следующий код:
1 2 3 |
Route::group(['middleware' => ['check.language']], function () { // здесь описываем маршруты для всех языков }); |
Это группа маршрутов, к которой будет применяться Middleware CheckLanguage
. Если пользователь заходит на любой маршрут в этой группе, он будет автоматически перенаправлен на соответствующую страницу в зависимости от языка его браузера.