代码之家  ›  专栏  ›  技术社区  ›  Mark

网站应该如何处理本地化设置?(来自__什么是常见的用户界面误解和烦恼?艾尔)

  •  14
  • Mark  · 技术社区  · 15 年前

    我选择把这个问题本身当作一个问题,因为它在 original post .

    有意思的是,很多这样的人(他们是开发人员)并没有得到本地化。这里是我对它应该如何工作的看法:

    在我研究过的所有浏览器中(以及其他.NET开发人员),当您研究用户的区域性首选项时,它的格式如下: 语言文化。

    所以我们有:

    • 英语-英语-英国文化
    • 英语-英语-美国文化
    • 英语语言-不变的文化。
    • fr fr_“法语”_“法语文化”
    • 法语“瑞士文化”
    • 德钦“德语”瑞士文化
    • 德德“德语”德文“德文文化”

    MSDN 获取.NET框架支持的完整列表。

    当我访问一个网站时,它知道我想要英语部分的语言,它知道我对它倾斜到英国(数字格式、日期格式)感兴趣。因此,当我访问google.com并转到google.de(因为我的IP地址)时,如果google.de以英语显示所有内容,那就完全没问题了,但完全错误,因为google.de是德语。我对我的IP地址几乎没有控制权,但对我的语言和文化设置有完全的控制权。如果您对微软的新搜索引擎(bing.com)感兴趣,请正确处理。希望微软能像谷歌一样学会搜索,或者谷歌也能像微软一样学会本地化;)

    MSDN 这里有另一篇好文章了解更多信息

    那么,对于站点应该如何处理本地化,您有什么建议呢?

    8 回复  |  直到 10 年前
        1
  •  13
  •   NotMe    10 年前

    这里的解决方案是如此简单,开发人员做任何其他事情都很烦人。

    1. 尊重浏览器设置。如果它说英语,那么上帝说它是英语。

    2. 如果你必须这样做,那么只需在顶部添加一个按钮来选择其他东西。然后,并且只有在那时,才重写浏览器。

    3. 如果你认为你的方法更好。停下来,有人打你。不是这样。必要时重复。

    4. 摆脱那些要求某人国家的网页。只需根据浏览器默认值显示您的普通页面,并参见上面的第2项。 我还没有遇到一个真正重要的网站。 更新: 几年后,现在有了这样做的理由。2013年,英国针对cookie制定了相关政策,网站运营商需要尊重在该国为该国访问者提供页面的网站。所以要注意你所在国家的法律。

    5. 如果您碰巧拥有一个真正由多个国家/地区的多个服务器提供服务的站点,那么您可能可以检测到哪一个服务器更接近于提供服务。如果你做不到,那就停止疯狂的重定向,然后不要试图为他们做决定。

        2
  •  4
  •   Dave Sherohman    15 年前

    如果本地化设置可用(包括但不限于HTTP接受语言头),那么网站绝对应该尊重它们。

    反对这一观点的常见论据是,“普通用户”不够聪明,无法找到语言设置并将其配置为与自己的偏好匹配,因此这些设置往往是不正确的(除非用户恰好在美国境内)。

    这是错误的解决方案。

    如果用户群体中有相当一部分找不到(或无法费心找到)浏览器的语言设置,则正确的回答是 让他们更容易找到 ,而不是让网站忽略设置的内容。也许可以直接从程序的顶级菜单访问语言设置,而不是将其隐藏在过于复杂的“首选项”对话框中。可能在程序第一次运行时要求语言首选项。也许可以使用操作系统的本地化设置。或者可能是完全不同的东西,如果这是需要的,使它接近确定浏览器将发送关于用户首选项的正确信息。但不要只是举手,说“这是无用的,不能修复!”,忽略它。

    其他的答案也提到了让用户在他们的站点配置文件中选择一种语言或区域设置,这一点也很重要,绝对应该是标准的,但这只是为了提供一个特定于站点的覆盖,以覆盖用户的正常设置。但是,如果用户没有在站点上覆盖此项,则正确的操作是默认为浏览器设置中指定的最首选的可用语言/区域设置,而不是基于其IP地址的地理位置。

        3
  •  3
  •   John Saunders KB22    15 年前

    在我的职业生涯中,我曾经维护过部分TCP/IP堆栈。这使我处于一个非常了解IP地址不应该被用作网络层地址以外的任何其他地址的罕见位置。IP地址和位置之间的任何关联都是巧合——这是地址分布方式的产物,而不是IP地址的任何基本部分。

    (它们也不能作为计算机的唯一标识符,但情况不同)

    我建议把地理位置排除在外。HTTP标准包括浏览器或其他用户代理在每个请求中包含用户区域性首选项的方法(记住,它是加权首选项列表,不一定只有一种区域性)。因为浏览器比您更接近用户,所以您应该遵守这个请求,至少作为默认请求。

    然后允许用户临时或永久地更改他们对您站点的偏好是可以的。甚至可以允许用户选择使用不同的区域性设置查看不同的内容。一个很好的例子就是一个同时包含政治新闻和技术信息的网站。有人希望新闻用他们的“自然”语言,而技术信息用英语,这是很合理的。

    最后,有一个回退模式是可以的。例如,如果您有一个根据用户所在地区为其提供服务的网站(例如,经销商),那么日本内容可能只存在于您的亚洲区域子网站上。一个说日语的用户访问您的EMEA网站可能只是停留在看英语内容,这很可能是他最后的选择。

        4
  •  3
  •   deceze    15 年前

    在我创建的站点上,我通常遵循以下模式:

    • 每个页面都有一个唯一的URL,其中包含某种语言,通常类似 /en/page 或其他(子)域
    • 如果用户打开的URL使用未指定的语言,如 /page 我开始猜测:
      • 上一个会话的cookie是否可用?
      • 如果不是,是 Accept-Language 可用,我可以将其映射到网站上可用的语言吗?
      • 如果没有,如果有可能,我能通过IP猜出吗?
      • 如果没有,则默认为网站的默认语言。
    • 我用猜测的语言设置了一个cookie,并将用户重定向到一个具有适当URL的站点。
    • 我在每一页上都加了一个语言开关,所以 /E/PAGE 可以很容易地切换到 /xx/page
      • 如果用户切换到其他页面,cookie将得到更新

    理想情况下,我只需要猜测一次,然后使用用户的cookie,或者用户直接访问所需的页面。

        5
  •  2
  •   Drew Freyling    15 年前

    我同意,让用户有机会在你的应用程序中使用用户首选项覆盖它们。这对于诸如时区本地化问题等您无法从浏览器设置中获得的问题特别方便。

        6
  •  1
  •   Community Egal    7 年前

    我冒着被认为不礼貌的风险,但我认为 post on this topic 将有更多的信息性的答案,主要是因为我的职位真的是一个问题。很抱歉,我以前没有找到那篇文章。

        7
  •  1
  •   Anirvan    15 年前

    智能默认值和用户覆盖它们的能力之间存在差异。在我工作过的大型应用程序中,我从浏览器设置、地理位置等方面假设了用户的区域设置——但始终为用户提供了轻松切换的方法。

    我不知道还有人会怎么做。不给用户纠正假设的机会是一个严重的问题,因为有时你会出错。

    添加:

    我认为您的问题在于,虽然您可以编辑您的区域设置,但如果它们看起来基本上与默认设置相同,那么应用程序开发人员就无法判断您是有意保留它,还是因为您不知道如何或为什么更改它。

    我建议尊重用户的本地化设置, 除了 如果设置是压倒性的默认值,则用户可能不会更改。例如,我相信绝大多数(90+%)的用户 en-us 在越南设置地理位置几乎总是能更好地看到越南的内容,而不是美国英语的内容,只要有一个简单的方法来切换地方。另一方面,如果一个位于美国的地理位置的用户有越南语设置,一定要给他或她的越南语内容。

    这会不会刺激越南的美国英语用户?当然。但它也对大多数人来说是最大的好处,有助于确保普通非技术用户获得最佳的真实体验。在我们能拿枪对着用户的头,强迫他们在打开电脑之前诚实地声明他们的语言/文化偏好之前,我们需要这样的启发式方法。

        8
  •  0
  •   Ian Ringrose    15 年前

    我从客户那里看到了足够有力的bug报告,当调查发现其中一个用户的浏览器文化设置错误时,我们现在让客户用配置设置覆盖浏览器。浏览器的文化设置经常出错,这对大多数最终用户来说不是很有用,也很难找到或更改它。