Php Laravel 4.2局部变更
我正在更新一个使用Laravel4.2构建的站点。 我正在添加多种内容语言,但在更改 当地的交通很顺畅 我希望每个页面都可以选择在其URL中附加一个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的情况下仍然可以留在网站上。这个解决方案对我来说是可行的。 我认为还有改进
/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'],
...
请发布你到目前为止的代码(路由文件和任何其他相关的)。我只是为这个做了一个可能的解决方案。我将在几分钟后发布。我没有放置任何代码示例,因为它们与默认的代码相同。请发布您到目前为止的代码(路由文件和其他相关内容)。我只是为此制定了一个可能的解决方案。我将在几分钟后发布。我没有放任何代码示例,因为它们与默认示例相同。