时区、语言与 Locale

浏览器会按一套地区设置工作:现在是哪个时区、页面优先用什么语言、日期和数字按哪套格式写。网站可以读到这些设置。它们描述的是这台浏览器的区域环境,不是户籍,也不是网络出口的官方位置。

学习目标

阅读本文后,您将能够:

  • 分开时区、语言和 Locale 三件事
  • 解释语言、时区为什么可以和 IP 国家不同
  • 避免把地区不一致直接看成异常身份

这三项各是什么

三项都来自浏览器的区域设置,问的问题并不相同。

时区回答「现在按哪里的钟点计算」。出差、远程、系统里手动改过时区,都会让它和人当时所在的城市不同。

语言回答「页面优先显示哪种语言,备选是什么」。一个人可以在国外上网,浏览器仍然使用自己的语言。

Locale 回答「日期、数字、排序按哪套地区习惯」。它常常跟着语言走,但也可以单独设置。

它们和 IP 所在地

IP 说的是这次请求从哪条网络出来。时区和语言说的是浏览器怎么设置。两套信息不必相同。

语言和 IP 国家不同很常见:人在海外,界面仍是中文。只凭这一点,看不出更多身份。

时区和网络出口有时会被放在一起看,因为两边都带「地点」的意味。人移动了、出口换了、或者只是改了系统时区,都会让两边暂时对不上。对不上本身只说明两套位置信号不一致。

为什么后面还要反复用到它们?

账号环境里,浏览器地区和网络出口是不是一套,是后续判断的一部分。先分清这三项各自回答什么,才不会把「语言不是出口国家」读成一个单独的结论。

不一致说明什么

  • 语言和 IP 国家不同,可以只是界面语言,不是异常。
  • 时区和网络位置不同,只说明两套地点信号对不上。
  • 这些设置用户可以自己改,所以它们不是固定身份。
  • 区域信号要和浏览器、网络方面的其他信息一起看,不能单用。

常见问题

网站能从时区知道我住在哪条街吗?

不能。时区通常只到一个时区名,例如某个城市或地区,不是街道地址。

把系统语言改成英语,指纹会整个换掉吗?

语言和相关格式会变。屏幕、渲染、浏览器声明不会因此全部改变。

Locale 和语言是同一个字段吗?

不是。语言决定优先显示哪种文字。Locale 决定日期、数字这类格式按哪里的习惯。