У меня есть проблема с маршрутами.
В моем приложении локализованы URL-адреса для тех же страниц, что и для примера,
"domain.com/en/giveaway"
"domain.com/es/sorteo"
Мои файлы lang.routes похожи на
lang.en.routes
return [
'giveaway' => 'giveaway'
]
lang.es.routes
return [
'giveaway' => 'sorteo'
]
Также мой файл route.web похож на
$locale = Request::segment(1);
if (in_array($locale, config('app.languages'))) {
app()->setLocale($locale);
} else {
app()->setLocale('en');
$locale = '';
}
$l = app()->getLocale();
$lang = [
'giveaway' => __('routes.giveaway', [], $l),
];
Route::group(['prefix' => $locale], function () use ($lang) {
Route::get($lang['giveaway'], "Auth\GiveawayController@index")->name('giveaway');
});
это будет правильно работать на моем клинке. Когда я звоню
route('giveaway')
//if app Locale is en returns domain.com/en/giveaway
//if app Locale is es returns domain.com/es/sorteo
Здесь нет проблем.
Но моя проблема в том,
Как мне показать альтернативный hreflang от Google?
Как получить доступ к URL-адресу domain.com/es/sorteo, если локаль приложения en?
Есть идея?
Я хочу сделать это в клинке, как
route(Request::route()->getName(),[],'es'); //domain.com/es/sorteo
route(Request::route()->getName(),[],'es'); //domain.com/en/giveaway
Я пробовал это
$oldLocale = app()->getLocale();
app()->setLocale('en');
route(Request::route()->getName(),[],'es');
app()->setLocale($oldLocale);
но не работает ...
Я думаю, что маршруты, обработанные до загрузки страницы, и языковой стандарт изменились в файле rout.web.
Если я изменю локаль приложения в промежуточном программном обеспечении вместо файла rout.web, то это не влияет на маршруты. Маршруты всегда возвращают язык по умолчанию.
Я стек ..... Есть ли способ ??????