Drupal 7始终重定向到默认语言

时间:2014-04-01 16:50:48

标签: drupal-7

我有一个Drupal 7安装,其中包含的模块数量超出了我的可能列表,但大多数都是I18N和SEO。现在,当我转到http:/my-site.com时,即使浏览器区域设置设置为另一种受支持的语言(在http:/my-site.com/en中配置),我也会被重定向到admin/config/regional/language/configure,这是默认设置。无论出于何种原因,如果具有已定义语言的用户登录,它将起作用,只有浏览器检测似乎关闭。

我试过禁用可能是罪魁祸首的模块,比如翻译重定向和全局重定向,但无济于事。如果我禁用URL语言检测,我不会被重定向,但我失去了通过URL指定语言的能力。我想要的只是要么被重定向到正确的语言,要么根本不被重定向。

之前有没有人见过这种行为并知道如何处理它?谁能告诉我如何调试问题?

1 个答案:

答案 0 :(得分:2)

您可能会受到Drupal核心中的错误的影响。我有一段时间遇到同样的问题,最后找到原因并找到解决方法。

它是这样的:

  1. 将此代码添加到自定义模块(将“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']);
    }
    
  2. 清除所有缓存(例如“drush cc all”)

  3. 转到admin / config / regional / language / configure并按“保存设置”一次 (这将重建变量'language_negotiation_language')。

  4. 现在浏览器语言检测应该正常工作。

    我也在寻找一个真正的解决方案,但由于bug的性质,这需要事先对核心进行更改并进行一些讨论。我在这里打开了一个问题:Browser language detection for anonymous requests is broken