Php laravel上的本地化URL问题

Php laravel上的本地化URL问题,php,laravel,routes,localization,Php,Laravel,Routes,Localization,我对路线有些疑问 我在我的应用程序中为相同的页面设置了本地化URL,例如 “domain.com/en/giveway” “domain.com/es/sorteo” 我的lang.routes文件如下 朗恩航线 return [ 'giveaway' => 'giveaway' ] 朗斯路线 return [ 'giveaway' => 'sorteo' ] 我的路线也是这样 $l = app()->getL

我对路线有些疑问

我在我的应用程序中为相同的页面设置了本地化URL,例如

“domain.com/en/giveway”

“domain.com/es/sorteo”

我的lang.routes文件如下

朗恩航线

return [
         'giveaway' => 'giveaway'
       ]
朗斯路线

return [
         'giveaway' => 'sorteo'
       ]
我的路线也是这样

$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
没问题,thorugh

但我的问题是

我怎样才能展示谷歌替代品

当应用程序区域设置为en时,如何访问domain.com/es/sorteo url

有什么想法吗

我想像刀锋一样做这件事

<link rel="alternate" hreflang="en"
                  href="{{route(Request::route()->getName())->getLocalized('en')}}"/>  

  <link rel="alternate" hreflang="es"
                  href="{{route(Request::route()->getName())->getLocalized('es')}}"/>      

很抱歉前面的评论,我误解了这个问题。试着这样做:

if(!function_exists("localroute")){
   function localroute($name, $locale){
       $old_locale = app()->getLocale();
       app()->setlocale($locale);
       $route = route($name);
       app()->setlocale($old_locale);
       return $route;
   }
}
创建一个帮助文件并在composer.json中自动加载,其中包含以下内容:

if(!function_exists("localroute")){
   function localroute($name, $locale){
       $old_locale = app()->getLocale();
       app()->setlocale($locale);
       $route = route($name);
       app()->setlocale($old_locale);
       return $route;
   }
}

然后只需呼叫
localroute(“giveway”)

谢谢塔哈,我会尝试并向您简要介绍,实际上我在blade中尝试过这种方式,但不起作用。塔哈,它不起作用。因为我正在根据第一个url段更改routes.web文件中的区域设置。但是,如果我在任何中间件中设置了区域设置,您的答案应该是正确的,但是如果我在中间件中设置了区域设置,它不会影响routes.web文件,始终返回默认区域设置。有没有一种方法可以在进程路由之前运行中间件?但是您在您的视图中使用了这个函数,对吗?当一切准备就绪,所有路线都设置好,等等。它应该在视图中工作。