假设我在网站上有3个(或更多语言)。英语,意大利语,法语。英语是默认的。
我希望主页网址为:
我的路线目前正在
Route::get('/{locale}', 'HomeController@index')->name('home');
这适用于法语,意大利语,但显然不是英语只是mysite.com /
我不想要像
这样的其他路线Route::get('/', 'HomeController@index')
因为那样我就不能用任何语言简单地回家了
{{ route('home', $locale) }}
什么是最好的解决方案?
答案 0 :(得分:3)
我的旧解决方案之一,但仍应该工作: 在routes.php的开头
$locale = Request::segment(1);
if(in_array($locale, ['en','fr','it'])){
app()->setLocale($locale);
}else{
app()->setLocale('en');
$locale = '';
}
然后
Route::group([
'prefix' => $locale
], function(){ ... })
重要提示:在这种情况下,您应始终使用命名路由。
答案 1 :(得分:1)
Laravel允许路由定义中的可选参数,因此您可以将local
路由参数设置为可选的用途:
Route::get('/{locale?}', 'HomeController@index')->name('home');
在 HomeController 中,检查参数以了解区域设置是否存在
public function index(Request $request, $locale = null) {
if (empty($locale)) {
$locale = 'en'; // english by default
}
...
}
希望它对你有帮助:)。