Php laravel上的本地化URL问题
我对路线有些疑问 我在我的应用程序中为相同的页面设置了本地化URL,例如 “domain.com/en/giveway” “domain.com/es/sorteo” 我的lang.routes文件如下 朗恩航线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
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文件,始终返回默认区域设置。有没有一种方法可以在进程路由之前运行中间件?但是您在您的视图中使用了这个函数,对吗?当一切准备就绪,所有路线都设置好,等等。它应该在视图中工作。