0

だから私はユーザーの言語を設定するために言語検出/クッキーメソッドを使用しています:

  1. ユーザーがページに到着
  2. ユーザーにCookieuser_langが設定されているかどうかを確認します
  3. 設定されている場合は、その言語を使用します
  4. 設定されていない場合は、言語検出機能を使用してCookieを設定してください

言語切り替え:

  1. ユーザーは/change/ language/[languageshortcode]に移動します

  2. 言語のショートコードが有効であることを確認し、以前のCookieを削除/変更して、新しい言語で更新します

  3. ページを読み込む

問題は、user_lang cookieが実際にENからFRに変更されたことがわかりますが、実際の言語の切り替えは、ページを手動で更新した場合にのみ発生することです。

ローカルセットアップでは変更はすぐに行われ、リモートサーバーでは更新する必要があります。

私がこれを引き起こしたと思ったのを変えたと思います:

  • すべての形式のページキャッシュを無効にしました
  • htaccessを使用してサーバーサイドのVarnishCacheを無効にしました
  • クッキーを変更するだけでなく、実際にクッキーを削除して新しいものを設定してください

助言がありますか?

4

1 に答える 1

1

コードが投稿されていないので、いくつか考えてみます。1つの解決策は、JSページのリロードを追加することですが、それは何らかの条件が真である場合に限られます。ただし、より良い解決策は、ユーザーが言語を変更した場合に、そのページの読み込みの言語を検出するためにCookieを読み取らないようにすることです(スクリプトが完了するまで完全に設定されないため)。ユーザーが変更を加えた場合は、Cookieの設定に使用された値を使用し、Cookieを無視します。変更が行われなかった場合は、Cookieを検出するだけです。それは理にかなっていますか?

于 2012-05-17T17:46:20.693 に答える