【问题标题】:Match browsers set to Scandinavian languages based on "Accept-Language"根据“Accept-Language”匹配设置为斯堪的纳维亚语言的浏览器
【发布时间】:2013-08-30 20:45:23
【问题描述】:

问题

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

我的正则表达式是:

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

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

用于

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

【问题讨论】:

    标签: regex http-accept-language


    【解决方案1】:

    根据您使用的语言,可能有一些代码可以用来轻松解析,例如这个帖子:Parse Accept-Language header in Java

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

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

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

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

    【讨论】:

    • 我正在考虑解析整个字符串,因为我们可能会遇到浏览器/用户没有首选斯堪的纳维亚语言但更喜欢英语的场景(例如说/读斯堪的纳维亚语的芬兰人/冰岛人语言不错)。但不确定是否有必要,因为链接非常明显且易于关闭/“退出”。
    • 我的建议是保持简单,然后跟踪您的用户如何与之交互以及他们的接受语言标题在您的日志中是什么。将为您提供关于您的大多数用户希望网站采取何种行动的非常好的画面。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我只测试字符串的开头。第一个问题发生的可能性有多大(字符串中的第一种语言不是首选语言)?根据[ISO-639-1],缩写不应匹配任何“官方”语言代码,但由于我必须添加“se”和“dk”,它们可以作为开始标签出现,它可能是具有类似子的其他语言-标签首先出现 (en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
    • 我已经浏览了浏览器的网络统计数据,但看不到任何非斯堪的纳维亚语的首选语言代码匹配(除了“nb-de”,访问量约为 0.00002%) .
    猜你喜欢
    • 2016-04-10
    • 2018-11-14
    • 1970-01-01
    • 2014-06-10
    • 2018-08-14
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多