我的本地工作在我的网站上无处不在,但我无法告诉应用程序设置应用程序根目录的正确本地。
如果我的网站是http://mycompany.com,我希望这样,当我输入此地址时,应用程序猜测我的本地是什么,并将其设置在网址的末尾
http://mycompany.com/en如果本地存在于我的应用程序中。这是en
或fr
,如果不是默认en
现在当我去主页时,我总是得到英文版,但我的浏览器是用法语设置的
_welcome:
pattern: /{_locale}
defaults: { _controller: MyBundle:Default:landing, _locale: en }
requirements:
_locale: en|fr
答案 0 :(得分:1)
几天前查看此question并查看语言监听器中的第一个方法。它完全符合您的需求。并在config.yml
中处理正确的设置答案 1 :(得分:1)
在与locale和symfony2相关的许多其他问题的帮助下,我终于得到了我想要的东西!我想这不是完美的答案,但至少它有效!
我的登陆操作在我的路由中定义为_welcome
路由。当我转到url的根目录时,会加载此操作。
/**
* @Route("/landing")
* @Template()
*/
public function landingAction() {
$localeAvailable = array('en', 'fr');
//user language
$localeUser = substr($this->getRequest()->getPreferredLanguage(), 0, 2);
//application language
$localeApp = $this->getRequest()->attributes->get('_locale');
//Redirect to the good locale page
//only if the locale user is on our manager locale and it is not the current locale of the application
if(in_array($localeUser, $localeAvailable) && $localeApp!=$localeUser){
return $this->redirect($this->generateUrl("_welcome", array('_locale' => $localeUser)));
}
return array();
}