この順序で2つのメソッド検出をアクティブにしています。
1- URL
2-ブラウザ
問題は、「admin/config/development/performance」で「匿名ユーザーのページをキャッシュする」がチェックされている場合、メソッド「ブラウザ」がまったく機能しないことです。 デフォルトの言語は、ブラウザの言語に関係なく常に読み込まれます。
「匿名ユーザーのページをキャッシュする」のチェックを外すと問題なく動作します。
キャプチャを参照してください。
あなたは見て、試しましたか:
https://stackoverflow.com/questions/22792062/drupal-7-always-redirecting-to-default-language
Drupalコアのバグの影響を受けている可能性があります。しばらく同じ問題が発生し、最終的に原因と回避策を見つけました。
こんなふうになります:
このコードをカスタムモジュールに追加します(「mymodule」をモジュールの名前に変更します)。
/** * Implements hook_language_negotiation_info_alter(). * * Remove the 'cache' setting from LOCALE_LANGUAGE_NEGOTIATION_BROWSER since * the code that utilizes this setting will in fact prevent browser negotiation. */ function mymodule_language_negotiation_info_alter(&$negotiation_info) { unset($negotiation_info[LOCALE_LANGUAGE_NEGOTIATION_BROWSER]['cache']); }
すべてのキャッシュをクリアします(「drush cc all」など)
Admin/config/regional/language/configureに移動し、「設定の保存」を1回押します(これにより、変数「language_negotiation_language」が再構築されます)。
これで、ブラウザの言語検出が正しく機能するはずです。
私も実際の解決策を探していますが、これにはコアの変更が必要であり、バグの性質上、おそらく事前にいくつかの議論が必要です。私はここに問題をオープンしました: 匿名リクエストのブラウザ言語検出が壊れています
今はBerdirからのパッチがあります
あなたはローカル言語を設定解除するためにカスタムモジュールを書く必要があります、そしてそれはあなたの問題を整理します