我想创建laravel(5.6)本地化路径,例如:mysite.com/about - mysite.com/fr/sur
Route -> Web.php
foreach (config('app.locales') as $locale){ //config('app.locales') = ['en','fr']
$pref = ($locale != 'fr') ? ['prefix'=>$locale,'middleware'=>'LanguageCheck'] : ['middleware'=>'LanguageCheck'];
Route::group($pref,function (){
Route::get('/','HomeController@index');
Route::get('/'.__('urlabout').'','HomeController@about');
});
}
Middleware -> LanguageCheck
public function handle($request, Closure $next)
{
if($request->segment(1)){
session(['locale'=>$request->segment(1)]);
app()->setLocale($request->segment(1));
}else{
session(['locale'=>'fr']);
app()->setLocale('fr');
}
return $next($request);
}
这种方式可以在mysite.com/about上运行,mysite.com / fr / about但是当我尝试访问mysite.com/fr/sur时,我收到了无法找到页面的错误。
对没有任何包裹的本地化路线的任何建议。
感谢您的建议。
答案 0 :(得分:0)
如果您不一定通过URL传输本地化,那么最好的解决方案是使用Headers Accept-Language传输本地化。您可以在中间件中获取标头,并根据您提供的内容显示控制器中的内容