Php Laravel 4.2局部变更

Php Laravel 4.2局部变更,php,laravel,laravel-4,localization,Php,Laravel,Laravel 4,Localization,我正在更新一个使用Laravel4.2构建的站点。 我正在添加多种内容语言,但在更改 当地的交通很顺畅 我希望每个页面都可以选择在其URL中附加一个/local段(/en、/de或/hr),但会消失 我所针对的场景是检查url是否在其末端有一个/local段,以及它是否只是在会话中设置了local并重新加载页面,但在末端没有/local段 也有类似的主题,但是没有什么可以让访问者选择在任何页面上更改语言,并且在不更改URL的情况下仍然可以留在网站上。这个解决方案对我来说是可行的。 我认为还有改进

我正在更新一个使用Laravel4.2构建的站点。 我正在添加多种内容语言,但在更改 当地的交通很顺畅

我希望每个页面都可以选择在其URL中附加一个
/local
段(
/en
/de
/hr
),但会消失

我所针对的场景是检查url是否在其末端有一个
/local
段,以及它是否只是在
会话中设置了local
并重新加载页面,但在末端没有
/local


也有类似的主题,但是没有什么可以让访问者选择在任何页面上更改语言,并且在不更改URL的情况下仍然可以留在网站上。

这个解决方案对我来说是可行的。 我认为还有改进的余地,但效果很好

与其他类似解决方案相比,此解决方案的好处在于,在不修改
routes.php
和 更改语言后,不会将站点重新加载到主页

My filter.php:

// filter.php

App::before(function($request)
{
    // Setting the locale
    $segments = $request->segments();
    $locale = "";
    $index = 0;
    foreach($segments as $segment){
        $index++;
        $locale = $segment;
    }

    // Set the local in Session if it's supported
    if ( $index > 0 && array_key_exists($locale, Config::get('app.locales'))) {
        Session::put('locale', $locale);
        $segments = array_slice($segments,0, $index-1);
        // Reload the site without the ending /language part
        return Redirect::to(implode('/', $segments));
    }
    if(!Session::has('locale'))
    {
        Session::put('locale', $request->getPreferredLanguage( Config::get('app.languages')));
    }

    App::setLocale(Session::get('locale'));

});
这是我的app.php:

//app.php
...
    'locales' => ['en' => 'English', 'hr' => 'Hrvatski'],

    'languages' => ['en', 'hr'],
...

这个解决方案对我来说是可行的。 我认为还有改进的余地,但效果很好

与其他类似解决方案相比,此解决方案的好处在于,在不修改
routes.php
和 更改语言后,不会将站点重新加载到主页

My filter.php:

// filter.php

App::before(function($request)
{
    // Setting the locale
    $segments = $request->segments();
    $locale = "";
    $index = 0;
    foreach($segments as $segment){
        $index++;
        $locale = $segment;
    }

    // Set the local in Session if it's supported
    if ( $index > 0 && array_key_exists($locale, Config::get('app.locales'))) {
        Session::put('locale', $locale);
        $segments = array_slice($segments,0, $index-1);
        // Reload the site without the ending /language part
        return Redirect::to(implode('/', $segments));
    }
    if(!Session::has('locale'))
    {
        Session::put('locale', $request->getPreferredLanguage( Config::get('app.languages')));
    }

    App::setLocale(Session::get('locale'));

});
这是我的app.php:

//app.php
...
    'locales' => ['en' => 'English', 'hr' => 'Hrvatski'],

    'languages' => ['en', 'hr'],
...

请发布你到目前为止的代码(路由文件和任何其他相关的)。我只是为这个做了一个可能的解决方案。我将在几分钟后发布。我没有放置任何代码示例,因为它们与默认的代码相同。请发布您到目前为止的代码(路由文件和其他相关内容)。我只是为此制定了一个可能的解决方案。我将在几分钟后发布。我没有放任何代码示例,因为它们与默认示例相同。