在Symfony 2.1网站上更改区域设置时遇到了一些问题。
我找不到一种方法,可以在不在每个路由中使用_locale
的情况下更改语言。我知道这违反了基本规则,但是此内容例如仅限会员访问,因此不会被引擎索引。
通常,我想要一种简单的方法来能够在请求(自版本2.1起)或会话中轻松地更改区域设置,但是无法顺利地做到这一点。 我也想避免使用Listener。
config.yml文件:
framework:
translator: { fallback: %locale% }
session:
routing.yml文件:
route_change_lang:
pattern: /changelang/{newlang}
defaults: { _controller: AcmeCoreBundle:Default:switchLanguage, newlang: en }
requirements:
newlang: en|fr|de
更新路由器语言环境的简单操作:
public function switchLanguageAction($newlang)
{
$request = $this->getRequest();
$request->setLocale($newlang);
$referer_url = $this->get('request')->headers->get('referer');
if ($referer_url != null) {
return $this->redirect($referer_url);
} else {
return $this->redirect($this->generateUrl('route_home'));
}
}
什么是问题?我猜测它与主配置文件中设置的default_locale有关,但文档并不是很清楚,需要帮助/提示。