Php SetLocale()用于所有带有Symfony 2的页面

Php SetLocale()用于所有带有Symfony 2的页面,php,symfony,locale,symfony-2.2,Php,Symfony,Locale,Symfony 2.2,我正在尝试使用symfony 2创建多语言站点,现在的问题是如何使$request->setLocale()适用于所有页面或方法。目前,我需要在每个方法中调用$request->setLocale($newlanguage) 是否有任何方法可以使其全局化,我的意思是对所有页面只调用一次您可以使用一个侦听器为每个请求设置语言环境。关于一些好代码的另一个问题。您的问题只需要使用setLocaleForRunAuthenticatedUser。对于同一个类,您可以将调用移入\u construct()

我正在尝试使用symfony 2创建多语言站点,现在的问题是如何使
$request->setLocale()
适用于所有页面或方法。目前,我需要在每个方法中调用
$request->setLocale($newlanguage)


是否有任何方法可以使其全局化,我的意思是对所有页面只调用一次

您可以使用一个侦听器为每个请求设置语言环境。关于一些好代码的另一个问题。您的问题只需要使用
setLocaleForRunAuthenticatedUser

对于同一个类,您可以将调用移入
\u construct()
;否则,您可以创建一个事件侦听器,并根据会话、请求参数或其他任何内容更改区域设置。我是nowbie,您是否可以更明确地为类中的所有方法更改区域设置,创建一个构造函数并从那里调用以更改区域设置:
public function\uu construct(){$request->setLocale($new_language);}
我像你告诉@Pazi那样做了,但是监听器中的getlocale()是evrytime“en”,他不认识“undefined”,为什么?否则,如果我只写setlocal(…)evr,那么工作正常,但是如果我让条件不起作用。我的错误是什么?你在config.yml中设置了回退吗?您使用哪种symfony版本?我只在最新的2.2版本之前对它们进行了测试。是的,我在config.yml中进行了所有操作,并且我使用了Symfony 2.2.1版本。没有它,是否还有其他可能更改此条件bc代码工作正常您是否删除了每个
$request->setLocale($new_language)行?嗯,令人困惑。它对我有用。不知道错误在哪里。日志里有什么吗?
public function methodAAction()
{
    ...
    $request->setLocale($new_language);
    return $this->render('x');
}

public function methodBAction()
{
     ...
    $request->setLocale($new_language);
    return $this->render('y');
}