Laravel Многоязычные маршруты без префикса - PullRequest
0 голосов
/ 30 апреля 2019

В настоящее время моя система использует 2 языка - английский и немецкий. Моя цель состоит в том, чтобы просматривать следующие маршруты, переключаясь между указанным языком -

base-url/contact - for english
base-url/kontakte - for german

В настоящее время у меня есть требуемый файл маршрутов в папке ресурсов, куда я поместил необходимые переведенные слова

resources/lang/en/routes.php
resources/lang/de/routes.php

В web.php у меня сейчас -

Route::get(r('contact'), 'TestController@index')->name('contact');

с помощью вспомогательной функции r () Я получаю активное переведенное слово.

В моей пользовательской таблице есть колонка локали, в которой я храню активный язык при обновлении языка из профиля пользователя -

\Session::put('locale', $request->input('locale'));

Я создал промежуточное программное обеспечение Localization, где я в настоящее время -

public function handle($request, Closure $next)
    {
        if ( \Session::has('locale')) {
            \App::setLocale(\Session::get('locale'));
            Carbon::setLocale(\Session::get('locale'));
        }

        return $next($request);
    }

В настоящее время код отлично работает для переведенного слова. но переведенные маршруты не работают. всякий раз, когда я переключаюсь и посещаю любой маршрут, это выдает ошибку 404. но если я перезапущу сервер с помощью PHP artisan serve, он будет работать с измененным языком.

Так как решить проблему?

1 Ответ

0 голосов
/ 30 апреля 2019

:) Попробуйте поставить \App::setLocale(\Session::get('locale') в начале файла маршрутов (rout.php или web.php / api.php)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...