1

私のローカルは私のウェブサイトのどこでも機能しますが、アプリケーションのルートに適切なローカルを設定するようにアプリケーションに伝えることはできません。

例えば ​​:

私のウェブサイトがhttp://mycompany.comの場合、このアドレスを入力すると、アプリケーションは私のローカルを推測し、ローカルが存在する場合はhttp://mycompany.com/enという URL の末尾に設定し ます。私のアプリケーション。ここenまたはfrデフォルトでない場合en

今のところ、ホームページにアクセスすると常に英語版が表示されますが、ブラウザはフランス語に設定されています

ルーティング.yml:

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

2 に答える 2

1

ロケールと 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 に答える