Как написать проверку страны, чтоб перенаправить по умолчанию на страницу на соответствующем языке в laravel 5?

Пользователь

от autumn_parker , в категории: PHP , год назад

Как написать проверку страны, чтоб перенаправить по умолчанию на страницу на соответствующем языке в laravel 5?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от stephon , год назад

@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. Если пользователь заходит на любой маршрут в этой группе, он будет автоматически перенаправлен на соответствующую страницу в зависимости от языка его браузера.