没有办法,很多网站会有其它手段,强制按照浏览器的各种综合信息+IP 一起确定你的语言,不接受用户手动设置的 Accept-Language ,也有很多网站的多语言就是用 Accept-Language 实现的(js 发起的请求,通过用户选择的语言,来发起请求,从而请求对应语言的资源)。各个国家的法律一一样,服务器后台会根据的区域和语言下菜。
@mightybruce Chrome 里我已经设置了语言为英文+中文,也查看了网络请求 Accept-Language 确实也是按照规范发的: Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 问题就是大部分网站都不遵守这个规范,而是强制按照 IP 地区来显示语言。
这个其实和“合理”没有关系,商业世界归根结底是成本的关系; 虽然我们访问了一个企业提供的服务,但实际的访问过程是我们发出一个访问请求,dns 解析地址,返回一个服务实际地址,但是为了提供更好的服务,通常企业匹配了 cdn ,尤其是大型服务站点,cdn 地址显然是本地区域化的设计,也就是通过访问者的区域相关性更高; 当然如果在匹配一些缓存机制,显然从访问的机制上来看,默认最大规模来访的服务提供,成本最低、效率最高; 如果总比例过低,确实没有必要增加一层判断机制,反正也提供了基本的转换功能,确实有需求的小部分用户自己切换一下就好了。