I18n的一个网站:我如何检测语言?

Eri*_*ric 4 browser localization internationalization

我正在开发一个网站,它有一些小的国际化需求(英语,法语和德语),我想知道用户来自哪里,所以我知道要显示哪些.我认为正确的方法是检查"HTTP_ACCEPT_LANGUAGE"标题以找出用户请求的#1语言(并且可以安全地假设德国的所有用户都有默认要求DE的浏览器等) .

那是对的吗?或者我还做了别的事情(希望没有什么太荒谬,比如试图从他们的IP中弄清楚他们的国家)......?

谢谢 - 埃里克

chr*_*yss 9

如果您选择目前最受欢迎的选择 - geoIP - 而无需进一步考虑,那么您的用户就不会受到青睐.

语言和国家不重叠.您打算如何处理来自瑞士IP地址的用户?比利时?加拿大?如果你在每种情况下使用多数语言,你会惹恼那些碰巧属于大型语言少数群体的重复访客:他们每次都会以"错误"的语言受到欢迎,即使该网站可用他们的首选语言.对于外籍人士来说也是如此 - 从经验来看,仅仅因为我碰巧去瑞典旅行而被瑞典人打招呼是极其令人不安的.(甚至大网站也弄错了.前几天我从伦敦到达温哥华机场,谷歌把我转到fr_CA.)不要忘记,很多人都是多国语言或非母语人士,他们的国家使用多数语言居住地.

以下是我遵循的指导原则:

  1. 首先检查用户告诉您他们可能的选择.最简单的方法是:
    • HTTP用户代理字符串中解析语言/文化信息(Firefox的示例).这告诉您一些他们正在运行的操作系统版本,并且是一个非常好的偏好指示.他们当然可能会欺骗用户代理,但如果他们这样做,他们就不会感到惊讶,他们会得到错误的预设.
    • 接受语言 HTTP标头(低优先级,因为你很可能会看到更多的"恩"在这里比实际用户与英语作为OS偏好).
  2. 其次,保存用户的偏好.如果他们登录,请询问他们并将其保存为选项.如果没有,请设置一个cookie(具有合理的到期设置).这样,当他们回来时,他们会惊喜万分.
  3. 仅使用GeoIP作为最后的手段.