1

我的本地在我的网站上随处可见,但我不能告诉应用程序在应用程序的根目录上设置正确的本地。

举个例子 :

如果我的网站是http://mycompany.com我想要那个,当我输入此地址时,应用程序猜测我的本地地址是什么,并将其设置在 url http://mycompany.com/en的末尾,如果本地存在我的应用程序。这里enfr如果不是默认值en

现在,当我进入主页时,我总是得到英文版,但我的浏览器设置为法文

路由.yml:

_welcome:
    pattern:  /{_locale}
    defaults: { _controller: MyBundle:Default:landing, _locale: en }
    requirements:
        _locale: en|fr
4

2 回答 2

1

看到前几天问的这个问题,看一下语言监听器中的第一种方法。它完全符合您的需要。并注意 config.yml 中的正确设置

于 2013-05-08T18:44:52.070 回答
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();
    }
于 2013-05-08T23:18:57.567 回答