18

現在、Symfony 2.0 でトランスレーターを有効にしようとしています。Symfony は Accept-Language ヘッダー変数を無視し、default_locale を使用しています (それが定義されていない場合はフォールバック)。

私のリクエストは次のようになります。

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

しかし、同じ要求で$this->getRequest()->getLocale();私を取得します。en

誰かが何が間違っているのか教えてもらえますか?

はい、キャッシュをクリアして、Cookie を削除しようとしました (omnomnom) :)

4

1 に答える 1

26

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

Symfony 2 The Book - 翻訳 - ロケールと URL

しかし、このアドバイスを無視して Accept 言語ヘッダーを使用したい場合は、コントローラーで次のコードを使用できます。

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

$session->setLocale($request->getPreferredLanguage(array('de', 'en')));
于 2012-08-27T10:36:50.460 に答える