Как установить разные локали для одного приложения Laravel, указывающего на два разных домена?

В моем приложении laravel у меня есть два языка: English and French.

есть два домена для моего приложения

test.site for French language
test.live for English language

Теперь, если пользователь обращается к test.site, приложение должно быть загружено на французском языке.

Но, если пользователь обращается к test.live, приложение должно быть загружено на английском языке.

Язык моего приложения по умолчанию установлен на EN.

Теперь мой вопрос:

Как установить разные локали для разных доменов? ИЛИ ЖЕ

Как загрузить английский для одного домена и французский для другого, используя одно и то же приложение laravel


person Volka Dimitrev    schedule 10.09.2020    source источник


Ответы (1)


Вы можете установить языковой стандарт с помощью: App::setLocale($locale);

Чтобы получить домен или хост, запросы Laravel предоставляют метод getHost(), который должен возвращать test.site или test.live.

Если вы хотите сделать это для всех или большинства ваших маршрутов, вероятно, проще всего создать пользовательское промежуточное ПО. и либо зарегистрируйте его глобально, либо сгруппируйте маршруты, к которым вы хотите его применить (подробности о регистрации см. в документации).

Тогда ваше промежуточное ПО может выглядеть примерно так:

public function handle($request, Closure $next)
{
    $locale = $request->getHost() == 'test.site' ? 'fr' : 'en';
    App::setLocale($locale);

    return $next($request);
}
person Fitzi    schedule 10.09.2020