言語を切り替えて同じページに戻るための小さなアイコンを実装しましたが、新しい Symfony2.2 の_locale
動作に行き詰まります。
<a class="lang" href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">
<img src="{{ asset('bundles/fuzlayout/images2/locale_fr.png') }}" title="Français" alt="Français" />
</a>
<a class="lang" href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">
<img src="{{ asset('bundles/fuzlayout/images2/locale_en.png') }}" title="English" alt="English" />
</a>
これは以下を表示します:
Web サイトのどこでもロケールをクリックすると、すべてのルートが有名な引数を取るため、これは_locale
問題ありません。たとえば、次のページにいる場合です。
fuz_home_test:
pattern: /{_locale}/test
defaults: { _controller: FuzHomeBundle:Default:test }
requirements:
_locale: fr|en
次のルートで生成される URL は/fr/test
またはになります/en/test
。
_locale
しかし、私のホームページにはパラメータを含めることができません:
fuz_home:
pattern: /
defaults: { _controller: FuzHomeBundle:Default:index }
次のようなデフォルトの引数を入れた場合:
fuz_home:
pattern: /{_locale}
defaults: { _controller: FuzHomeBundle:Default:index, _locale: %locale% }
requirements:
_locale: fr|en
デフォルトでは、Symfony はユーザーのオリジナルのロケールではなくフォールバック ロケールを使用します。
だから私の質問は: 多言語ホームページを作成する方法?