我的laravel Web应用程序以两种不同的语言运行,我正在使用一种设置它的路径,如下所示:
Route::get('/br', function (Illuminate\Http\Request $request) {
return Redirect::to('/')->withCookie(cookie()->forever('locale', "pt-br"));
});
这很有效,但不适用于网站上的所有页面,仅适用于路线本身(myapp.com/br)
我想发送用户的语言链接,使用url字符串定义,然后将用户重定向到页面本身,可以是任何页面,例如:
http://www.myapp.com/pt/pricing
这会将语言设置为葡萄牙语,然后将其重定向到网站上具有/ pt的网站上的定价或任何其他页面。
基本上我需要通配符检查“/ pt”是否在URL中,最好是通过路由。
我知道我可以使用url字符串执行此操作,如下所示:
http://www.myapp.com/pricing?lang=pt
但似乎有点偏离我的发展模式。
所以,我需要这样的东西:
Route::get('/br/%anything', function (Illuminate\Http\Request $request) {
return Redirect::to('/%anything')->withCookie(cookie()->forever('locale', "pt-br"));
});
有没有办法用laravel中的路线来做?
答案 0 :(得分:1)
首先尝试注册您的语言:
Route::bind('lang', function($lang){
$langs = [
'br' => 'pt-br',
'pt' => 'pt-pt',
];
return $langs[$lang];
});
然后为您网页的标识符添加模式:
Route::pattern('page', '[a-z]+');
现在,根据lang/page
url:
Route::get('{lang}/{page}', function($lang, $page){
return redirect()
->route($page)
->withCookie(cookie()->forever('locale', $lang));
});
结果:
pt
)br
)