我正在更新使用laravel 4.2构建的网站。 我正在添加多种内容语言,我遇到了更改问题的问题 当地顺利。
我希望每个网页都可以选择将/local
段(/en
,/de
或/hr
附加到其网址上,但会消失。
我的目标是检查网址末尾是否有/local
段,是否只在Session
设置了本地,并重新加载了/local
的网页1}}最后一段。
有类似的主题here,here和here,但没有任何内容可以让访问者选择更改任何网页上的语言,但仍然让他留在网站上更改网址。
答案 0 :(得分:0)
这个解决方案对我有用。 我认为还有改进的余地但工作正常。
与其他类似解决方案相比,此解决方案的优势在于,无需修改routes.php
即可为每个链接进行本地化。
更改语言后,它不会将网站重新加载到主页。
我的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'],
...