3

私は持っている

config.yml

#Here locale is en
translator:      { fallback: %locale% }
...
session:
    default_locale: %locale%

ルーティング.yml

AcmeDemoBundle_homepage:
    pattern:  /{_locale}/index
    defaults: { _controller: AcmeDemoBundle:Default:index, _locale: de}
    requirements:
    _locale: en|de

したがって、ここで手動で URL を入力すると /en/index、英語と/de/indexドイツ語が表示されます。

ブラウザの Accept 言語が de_DE または de(ドイツ語) の場合、自動的にドイツ語に移行し、それ以外の場合は英語 (他のすべてのブラウザの Accept 言語) に移行するにはどうすればよいでしょうか?

4

2 に答える 2

5

基本的にあなたはそのようなことをすることができます

$this->get('session')->setLocale(
    $request->getPreferredLanguage(array('en', 'de'))
);

そしてそれはうまくいくはずです。しかし、ええ、すべてのアクションに追加するのは難しい場合があります...それが、独自のカーネルイベントリスナーを作成できる理由です。

これらのリンクは役立つと思います:

Symfony2 間違ったロケール検出?

http://symfony.com/doc/current/cookbook/service_container/event_listener.html

于 2012-07-10T12:16:13.080 に答える
3

URL のロケールを自動的に処理するJMSI18nRoutingBundleを使用しています。デフォルトの URL では、オプションで優先ロケールが使用されます。

カーネル イベント リスナは、ドキュメントで情報を見つけることができる適切なオプションです。ただし、ユーザーがサイトを表示する言語を手動で選択できるようにするために、新しいセッションでのみトリガーする必要があることに注意してください。

于 2012-07-10T12:48:17.697 に答える