跳转到主要内容
sina_-hit 提交于 21 August 2015

drupal网站多语言的问题原来还不止一个,之前发过一篇: drupal支持多语言网站的浏览器自动识别繁体中文

本以为完美了,谁知最近又有客户反应浏览器响应的语言不对。经公司测试人员多次测试,终于可以重现这个BUG。

--问题描述:一般用户访问网站会自动跟据浏览器语言响应网站语言,一般都没问题。但当用户自己设置过语言偏好,有不止两种语言选择的时候,例如三四种。就有可能出现这个bug. 具体是因为drupal内核读了语言列表底下的语言优先级,覆盖了语言列表顶部的选择。

如图,浏览器这样的设置,网站最终响应的是中文:p1_1.png

 

--解决办法:由于drupal内核里实现根据什么来决定网站语言的方式,用的是一种提供者模式。我们只需要开发另一个类似的模块,替换了内核相应的模块就行了。类似这样:

pic_2.png

在自定义模块里,将内核里的该方法copy出来放进去,只加了一行:

85行:

//We should not overlay the qvalue, when there is a higher qvalue in this langcode before.(added by hit,2015.08.21)       if(isset($browser_langcodes[$langcode]) && ($browser_langcodes[$langcode] > ((int) ($qvalue * 1000)))){         continue;       }

装上这个模块,再测试,暂时这个问题解决了。

 

标签
Drupal 版本