2012-08-27 5 views
14

私は現在、Symfony 2.0でトランスレータを有効にしようとしています。 symfonyはAccept-Language Header変数を無視しており、default_localeを使用しています(フォールバックが定義されていない場合)。Symfonyがブラウザのロケール設定(HTTP-Request Accept-Language Header)を無視するのはなぜですか?

私の要求は、次のようになります。

Accept-Language de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3 

が、その同じ要求を私に$this->getRequest()->getLocale();en取得します。

誰かが間違っているかもしれないことを教えてもらえますか?

はい、私はキャッシュをクリアしようとしていて、私のクッキー(omnomnom):)

答えて

19

を削除これは正常な動作です。 symfonyはデフォルトでAccept Languageヘッダを使用せず、ロケール設定のためにsymfonyの設定に依存します。実際には、それは異なるロケールのコンテンツに同じURLを使用しないことをお勧めされて、このドキュメントを参照してください。

Symfony 2 The Book - Translations - The Locale and the URL

しかし、あなたは、このアドバイスを無視して、受け入れ言語ヘッダーを使用したい場合、あなたはそれを行うことができます

$request = $this->getRequest(); 
$session = $this->get('session'); 

$session->setLocale($request->getPreferredLanguage(array('de', 'en'))); 
+2

実際にすべてのコントローラーに書き込まずに、すべてのコントローラーでそのコードを実行する可能性はありますか?私は一度だけ書くことを意味しますか? – Senad

+1

kernel.requestイベントのリスナーを作成してそれを実行できます。 –

+0

ありがとうございました...私はすでにそれを持っています:) – Senad

関連する問題