Laravel 5.4中的多语言网站

时间:2017-02-24 21:46:14

标签: laravel laravel-5.4

出于搜索引擎优化的目的,我想在网址中加入我的Laravel项目页面的区域设置,例如http://localhost/enhttp://localhost/nl/about

在尝试实现这一目标时,我找到了一些教程和软件包,但我对它们并不完全满意。最流行的建议是mcamara的laravel-localization包,但创建URL需要很长的函数调用。其他软件包可以用于较旧的Laravel版本,也可以提供许多我不需要的功能,这只会使我的代码和数据库变得混乱。

Marwelln's tutorial似乎很完美:它以我想要的方式修改URL,使用默认的URL帮助程序,如action(),url()和route(),并且不会创建不必要的数据库表。但是,本教程似乎适用于Laravel 5.0并且与Laravel 5.4不兼容。任何人都可以帮助我以最基本的方式在最新的Laravel版本中实现这样的URL修改吗?

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

在你的RouteServiceProvider.php中,在map()方法的beginnig中添加以下行:

    $locale = $request->segment(1);
    if($locale) {
        $this->app->setLocale($locale);
        $this->prefix = $locale;
    }

mapWebRoutes()方法应如下所示:

protected function mapWebRoutes()
{
    $parameters = [
        'middleware' => 'web',
        'namespace' => $this->namespace,
    ];
    if ($this->prefix) {
        $parameters['prefix'] = $this->prefix;
    }

    Route::group($parameters, function ($router) {
        require base_path('routes/web.php');
    });
}

然后按照您提供的示例链接中的其余说明进行操作。我猜应该是全部。

注意:行$ this-> app-> setLocale($ locale)没有多大意义,因为你在中间件上这样做。