首页 > 解决方案 > laravel 上的本地化 URL 问题

问题描述

我有一些关于路线的问题。

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

“domain.com/en/giveaway”

“domain.com/es/sorteo”

我的 lang.routes 文件就像

lang.en.routes

return [
         'giveaway' => 'giveaway'
       ]

lang.es.routes

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

到这里没问题。

但我的问题是;

我如何显示谷歌备用hreflang?

当应用程序区域设置为 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')}}"/>      

标签: phplaravelrouteslocalization

解决方案


抱歉之前的评论,我误解了这个问题。尝试这样的事情:

在 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("giveaway").


推荐阅读