Przekierowanie na tą samą stronę po zmianie języka

0

Cześć, z tego co sprawdzałem w necie jest trochę odpowiedzi na ten temat jednak nie znalazłem rozwiązania.
Mam stronę w dwóch językach, używam https://github.com/mcamara/laravel-localization i ogólnie spoko tylko za każdym razem po zmianie języka przenosi na stronę główną.

Zmiana języka

<li id="" class="nav-item dropdown nav-mt-desktop" style="margin-left: 20px!important">
    <a class="nav-link dropdown-toggle custom-user-nav" href="#" id="navbarDropdownLang" role="button"
       data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        {{ App::getLocale() }}
    </a>
    <div class="dropdown-menu" aria-labelledby="navbarDropdownLang">
        @foreach($setting['languages'] as $key => $lang)
            <a href="/{{$key}}"
               class="dropdown-item custom-user-nav">{{ $lang }}</a>
        @endforeach
    </div>
</li>

middleware w web.php

Route::prefix(LaravelLocalization::setLocale())->middleware(['localeSessionRedirect','localizationRedirect'])->group(function () {

o ile z stronami statycznymi jakoś bym dał radę aby kierowało z /pl/strona na /en/page np tworząc jakiś dodatkowy middleware i przekazując jako parametr nazwę trasy a później na to kierując to mam problem z trasami dynamicznymi gdzie zwracane są powiedzmy jakieś produkty i każdy produkt ma indywidualny adres np /produkty/testowy-produkt | /en/products/test-product - tutaj nie przekażę nazwy trasy bo potrzebne są parametry. Jak można to ogarnąć?

1

A nie możesz pobrać danych z Route w kontrolerze po kliknieciu zmiany jezyka ? ze

$routeCurrent = Route::getCurrentRoute();
$routeName = $routeCurrent->getName();
$routeParameters = $routeCurrent->parameters;
$url = route($routeName, array_merge($parameters, ['locale' => 'pl']);
0

W routes,php mam taki kod obsługi langów

Route::get('/language/{locale}', function ($locale) {
    app()->setLocale($locale);
    session()->put('locale', $locale);
    return redirect()->back();
});

redirect()->back() zwraca cię w miejsce, skąd kliknąłeś zmianę języka

0

ale jak robisz setLocale() to juz nie musiz dawac session->put()

Route::get('/{locale?}', function ($locale = null) {
    if (isset($locale) && in_array($locale, config('app.available_locales'))) {
        app()->setLocale($locale);
    }
    
    return redirect()->back();
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1