オブジェクト言語があり、管理ページから言語を追加、削除、および更新できます。
私がやりたいことは、言語スイッチャーを追加することです。このhtml/twigコードを入れます:
{% for language in languages %}
<li><a href="{{ path('evr_footer_switch_language',{'locale': language.code | lower }) }}">{{ language.language | capitalize }} ({{ language.code }})</a></li>
{% endfor %}
the route for the action is evr_footer_switch_languageそして、上記のスイッチャーで使用した action :
public function switchlanguageAction($locale = 'en') {
$this->get('session')->set('_locale', $locale);
$request = $this->getRequest();
$request->setLocale($locale);
return $this->redirect($request->headers->get('referer'));
}
これは、アクション/コントローラー用に定義したルートです switchlanguageAction()
evr_footer_switch_language:
pattern: /language/switch/{locale}
defaults: { _controller: EvrHomeBundle:Footer:switchlanguage, locale: en }
原則として非常に単純に思えます。言語のリンク (データベースから取得) をクリックし、言語のコード (例: 'fr'、'en'、'zh' など) を送信します。アクションを $locale 変数として設定し、セッション/リクエストの Locale をこの値に設定します。
問題は、これが機能せず、言語がまだ「EN」(デフォルト値) であることです。
注:このプロジェクトの要件によると、言語を URL (fr/articles、en/articles など) に記載することはできませんが、同じ URL (/articles/) を別の言語で表示することはできます。事前定義されたスラッグ (_locale) を使用しないでください。
ありがとう