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