Проблемы с локализованными маршрутами в Laravel? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть проблема с маршрутами.

В моем приложении локализованы 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, то это не влияет на маршруты. Маршруты всегда возвращают язык по умолчанию.

Я стек ..... Есть ли способ ??????

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