1

问题

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

我的正则表达式是:

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

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

用于

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

4

2 回答 2

0

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

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

  • 一种预期的语言不能出现在标题的开头,而是出现在之后。
  • 一些预期的语言缩写可能会显示为完全不同语言的限定词。
于 2013-08-30T20:57:37.070 回答
0

根据您使用的语言,可能有代码可以用来轻松解析,例如这篇文章:Parse Accept-Language header in Java <-- Also provides a good code example

此外 - 您确定要将您的正则表达式限制在字符串的开头,因为可以提供几种语言(第一种是“我更喜欢 x 但也接受以下内容”):http://www.w3 .org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4

否则,根据您的要求,您的正则表达式应该可以正常工作,这里是所有浏览器语言代码的列表:http ://www.metamodpro.com/browser-language-codes

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

我更喜欢英语,但对更改此设置知之甚少,而且以前从未有过这样做的理由,因为很少有网站使用它。

于 2013-08-30T20:58:55.317 回答