Laravel本地化路线

时间:2018-04-17 13:30:44

标签: laravel

我想创建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时,我收到了无法找到页面的错误。

对没有任何包裹的本地化路线的任何建议。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

如果您不一定通过URL传输本地化,那么最好的解决方案是使用Headers Accept-Language传输本地化。您可以在中间件中获取标头,并根据您提供的内容显示控制器中的内容