Laravel блейд-переключатель языка для многоязычного сайта - PullRequest
0 голосов
/ 22 января 2020

Я ищу простой способ переключения языка в моем веб-приложении.

У меня есть блейд-заголовок с языковыми ссылками. Когда пользователь нажимает на ссылку, я хочу, чтобы страница обновлялась sh на правильном языке:

<ul>
    @foreach (config('app.available_locales') as $locale)
       <li>
           <a class="simple-link" href="?????" >{{ strtoupper($locale) }}</a>
       </li>
    @endforeach
</ul>

Моя проблема в том, что я не знаю, что использовать в href. Я довольно новичок в блейде (обычно я использую VueJS с Laravel)

Вот как работает мой проект.

Все мои ссылки структурированы таким образом:

www.domain.com/language/page

Итак, все мои маршруты выглядят так:

fr.home.index
fr.offers.index

и так далее. Вот мой веб-сайт. php класс маршрутов:

Route::domain(config('app.url'))->group(function () {

Route::redirect('/', '/' . Loc::current(), 301);  

Route::locales(function() {

    // Home
    Route::get(__('routes.home.index'), 'Home\HomeController@index')->name('home.index');
    Route::get(__('routes.home.faq'), 'Home\HomeController@faq')->name('home.faq');
    Route::get(__('routes.home.about'), 'Home\HomeController@about')->name('home.about');
    Route::get(__('routes.home.terms'), 'Home\HomeController@terms')->name('home.terms');
    .
    .
    .
    .
   });

});

У меня есть промежуточное программное обеспечение для обработки локали для каждого запроса:

class SetLocale
{
   public function handle($request, Closure $next)
   {
       $segment = $request->segment(1) ? $request->segment(1) : Loc::fallback();

       if (!Loc::isSupported($segment)) {
           abort(404, 'Locale is not supported');
       }

       Loc::set($segment);

       return $next($request);
   }
}

Все мои маршруты переведены. У меня есть маршруты. php в каждой ресурсах / lang / папках:

return [
  'home' => [
        'index' => '',
        'faq' => 'frequently-asked-questions',
        'about' => 'who-are-we',
        'terms' => 'terms-and-conditions',
        'legal' => 'legal-notice',
        'label' => 'label',
    ],
    .
    .
    .
    .
    .
]

Может кто-нибудь помочь мне, пожалуйста? Я пытался найти решение гораздо дольше, чем хотелось бы признать!

TIA.

...