在阅读文档并使用 Google 查找后,我要问你。
我想在 3 种语言之间切换:ca_ES、es_ES 和 en_GB
所以我做了一个这样的控制器:
/**
* @Route("/canviar-idioma/{locale}", name="change_lang")
* @Template()
*
* @return array
*/
public function canviarIdiomaAction($locale){
$request = $this->getRequest();
if ($locale == 'cat'){
$this->get('translator')->setLocale('ca_ES');
return new Response('ca');
} else if ($locale == 'es'){
$this->get('translator')->setLocale('es_ES');
return new Response('es');
} else if ($locale == 'eng'){
$this->get('session')->set('_locale', 'en_GB');
return new Response('en');
}
return new Response(null);
}
当用户单击带有该语言的标志时,该控制器由 ajax 调用。我正确收到“ca”或“es”或“en”,因此控制器以某种方式“工作”。如您所见,我尝试通过会话或获取翻译器来使用它。两种方式结果相同。
但是,我制作了这个控制器来检查我的语言环境是否真的改变了:
/**
* @Route("/quinlocaletinc", name="quinlocaletinc")
* @Template()
*
* @return array
*/
public function quinlocaletincAction(){
$request = $this->getRequest();
return new Response($request->getLocale());
}
这个语言环境总是给出“ca_ES”,因为它是在我的参数文件中定义的:
locale: ca_ES
还有我的 config.yml:
default_locale: %locale%
translator: { fallback: %locale% }