根据“Accept-Language”匹配设置为斯堪的纳维亚语言的浏览器

时间:2013-08-30 20:45:24

标签: regex http-accept-language

问题

我正在尝试将基于HTTP标头“Accept-Language”的浏览器设置为斯堪的纳维亚语言。

我的正则表达式是:

^(nb|nn|no|sv|se|da|dk).*

我的问题是,这是否足够,如果有人知道任何其他奇怪的斯堪的纳维亚(但“有效”)语言代码或模糊导致误报的浏览器错误?

用于

正则表达式用于显示挪威网页顶部的英文链接(主要语言和域和子域的根目录),可以将您带到英文网页(辅助语言和文件夹)当根浏览器语言不是斯堪的纳维亚语时。如果用户不想再次看到链接,则可以使用存储在JavaScript localStorage中的哈希来关闭/“选择退出”链接。由于实施时间有限,我们决定不使用IP地理位置。

2 个答案:

答案 0 :(得分:0)

如果您单独测试accept-language中的每个项目,那么正则表达式就足够了。

如果不是单独的,则有2个问题:

  • 其中一种预期的语言不能出现在标题的开头,而是出现在。
  • 之后
  • 某些预期语言缩写可能会显示为完全不同语言的限定符。

答案 1 :(得分:0)

根据您使用的语言,您可以使用以下代码轻松解析此问题,例如:这篇文章:Parse Accept-Language header in Java< - 还提供了一个很好的代码示例

此外 - 你确定要将正则表达式限制在字符串的开头,因为可以提供几个语言(第一个用于“我更喜欢x但也接受以下内容”):{{3} }

否则你的正则表达式应该根据你的要求正常工作,这里是所有浏览器语言代码的列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4

我也会 - 在你的鞋子里,让所有用户轻松找到“切换到X语言”链接,直到他们选择不再看到它为止。我希望很多人可能在他们的浏览器中默认设置了偏好设置,但发现实际使用它的网站是意外的,例如用户体验:

我更喜欢英语但不知道改变这个设置并且之前从未有过理由,因为很少有网站使用它。