比如我用的日本梯子,Google 出来的内容很多都是日语,设置里改成英文和中文,也会莫名其妙的失效。 还有其他各类网站,都会提醒甚至强制跳转到网站的日语版本。
我就在想,地区和语言之间的关系。比如操作系统里的地区和语言设置都是分开的,如果我是一个 English native speaker ,生活在日本,在操作系统层面我可以设置地区为日本,语言是英文。
但是在 Web 领域,大家好像默认一个地区就代表了一种语言,我觉得这有点不合理。
不知道有没有一种方式,可以一劳永逸的设置我想要的显示语言是 English ,和我所在的地区无关。
HTTP 标准里是有Accept-Language这个 header 的,Chrome 里也有设置语言的选项,不知道有没有办法在浏览器里设置然后让所有网站都遵守这个规则..
|  |      1iixy      2023-10-12 21:15:10 +08:00 google map 里查酒店的货币显示还和地理位置绑定呢,怎么改自己的区域都没用。简直绝绝子 | 
|  |      2rccoder      2023-10-12 21:15:40 +08:00 | 
|      3shinsekai      2023-10-12 21:18:16 +08:00 不能,因为各个地区的法律是不一样的,就像欧洲 google 会自动跳出 gdpr 而日本就不会。网站的隐私策略与 IP 挂钩可以减少很多成本,假设现在一种语言对应一种隐私策略,按楼主的方案一种语言要对应 N 种隐私策略,一种隐私策略也要对应 N 种语言。 | 
|  |      4zhouhuab      2023-10-12 21:20:18 +08:00 对你可能不合理 | 
|  |      5DIMOJANG      2023-10-12 21:21:55 +08:00 像中国这样只有用别的国家的 IP 才能访问网站的毕竟是少数 | 
|      6fancy2020 OP | 
|      7fancy2020 OP @DIMOJANG 用梯子只是举例,我觉得标题描述的已经很明白了,是“地区”和“语言”的绑定问题 | 
|  |      11docx      2023-10-12 21:39:26 +08:00 via iPhone 确实有困扰到我,但从开发者的角度来说也算说的通。 关键在于,这种情况还是少数人,绝大多数就是 ip 所在地的本地人,所以这样就更加本地化……确实是缺乏对少数人需求的关注。 | 
|      12thinkershare      2023-10-12 21:49:30 +08:00 没有办法,很多网站会有其它手段,强制按照浏览器的各种综合信息+IP 一起确定你的语言,不接受用户手动设置的 Accept-Language ,也有很多网站的多语言就是用 Accept-Language 实现的(js 发起的请求,通过用户选择的语言,来发起请求,从而请求对应语言的资源)。各个国家的法律一一样,服务器后台会根据的区域和语言下菜。 | 
|  |      13mightybruce      2023-10-12 21:52:13 +08:00 你也提到了 Accept-Language, 除非你改变了浏览器和操作系统设置,浏览器发送的头发生了改变,才会显示成另外的语言,默认就是和浏览器设置以及操作系统语言有关的 | 
|  |      14icyalala      2023-10-12 21:53:22 +08:00 一个地区有一个官方或者主流语言,所以默认用这种语言显示,这不是很自然很合理吗。 对于地区和语言不同的人,只要提供选项切换语言就足够了。 | 
|      15fancy2020 OP @mightybruce  Chrome 里我已经设置了语言为英文+中文,也查看了网络请求 Accept-Language 确实也是按照规范发的: Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 问题就是大部分网站都不遵守这个规范,而是强制按照 IP 地区来显示语言。 | 
|  |      16Maxwe11      2023-10-12 21:56:52 +08:00 这个其实和“合理”没有关系,商业世界归根结底是成本的关系; 虽然我们访问了一个企业提供的服务,但实际的访问过程是我们发出一个访问请求,dns 解析地址,返回一个服务实际地址,但是为了提供更好的服务,通常企业匹配了 cdn ,尤其是大型服务站点,cdn 地址显然是本地区域化的设计,也就是通过访问者的区域相关性更高; 当然如果在匹配一些缓存机制,显然从访问的机制上来看,默认最大规模来访的服务提供,成本最低、效率最高; 如果总比例过低,确实没有必要增加一层判断机制,反正也提供了基本的转换功能,确实有需求的小部分用户自己切换一下就好了。 | 
|  |      18crysislinux      2023-10-12 21:59:16 +08:00 via Android 我觉得 16 楼说的对,主要还是成本问题。 | 
|      19fancy2020 OP | 
|  |      20icyalala      2023-10-12 22:17:40 +08:00 @fancy2020 https://caniuse.com/?search=Accept-Language Accept-Language 提得早,但实现的浏览器比例低,比如 iOS 上直到 iOS 17 才支持。 IP 相比之下显然是更通用和准确的手段。 | 
|      21thinkershare      2023-10-12 22:22:46 +08:00 很多网站的设计目的就是不允许你跨区域访问,根据 IP 来限制用户,这是网站后端服务器的功能设计要求。 | 
|      22fancy2020 OP @icyalala  感谢,移动端确实实现的比较晚,不过也基本会 fallback 到操作系统的语言设置。 https://www.w3.org/International/questions/qa-lang-priorities | 
|      23teenight      2023-10-12 22:25:32 +08:00 肯定不合理啊, 但是需求较少 | 
|  |      24yaoyaomoe      2023-10-12 22:38:35 +08:00 via iPhone google 搜索可以設置裡面調整啊⋯⋯ 剩下的⋯⋯很多網站重點在於地域劃分而不是語言劃分,在日本生活的美國人也 1. 需要了解的更即時的東西一般應該根據屬地 2. 各種網站需要遵守在日本的規定和定價 很多網站的策略如果照顧一下外國人,可能是當地語言加英語,比如 netflix 。所以如果你是 English native speaker 一些國際化的網站可能真的直接給妳跳轉英語⋯⋯steam 也會根據情況用相應的語言⋯⋯ | 
|      25gam2046      2023-10-12 22:42:38 +08:00 不合理,但是省事。 人性一点的网站允许用户自己选择语言,不人性的就直接按 IP 归属显示语言。 | 
|  |      26mikewang      2023-10-12 22:58:16 +08:00 真难弄啊。 Google 有适配过,当他有足够数据确信你在中国,即使是日本 IP 也会跳转到中文 Google 的。 然后又会有人来抱怨了,很多功能都用不了。 | 
|      27fancy2020 OP | 
|  |      28deef      2023-10-12 23:04:44 +08:00 因为很多功能都是根据所在地来适配的呀,我不可能做一套符合某地法律但是显示另一套 i18n 的网站,因为可能显示的 UI 样式都是不一样的。 比如国航官网,中文官网就是国企喜闻乐见的那个老样子,其他语言地区的官网就是很正常,很像欧美网站的那个板式。 | 
|      29hefish      2023-10-12 23:07:49 +08:00 google 里面不是可以登录了自己设置位置和语言嘛。 不登录,也得允许人家猜测嘛。 猜错了也不能全怪人家。 | 
|  |      30mikewang      2023-10-12 23:15:43 +08:00 @fancy2020 Google 遵守 Accept-Language ,您可以无痕浏览试试,至少在我这里 Google 的 UI 语言会随之变化。 但是这只是 Accept-Language ,并不是 Accept-Region 。搜索结果很多是基于地区信息提供的,然后是在地区的结果里优先显示指定语言。 总之,Accept-Language 决定了默认的 UI 语言,搜索结果多数基于 IP 地址。 | 
|  |      31agagega      2023-10-12 23:18:35 +08:00 这里有一个问题,就是当我们说起 i18n 时有个假设:翻译的内容属于程序,而不是数据。也就是说可以被翻译的那些内容会保存在网站代码里。如果一个网站是以文字内容为主(不论是站长编辑写的内容还是用户写的内容),那网站程序的一些翻译占比很小,还不如都不翻译。 另外就是如果站长本来就不想一些区域的用户去另一些区域的分站访问,那可能就会主动将语言作为障碍,减少跨区使用(比如价格不同或者数据存放地区等原因)。 而且网站要做 i18n 其实没有想的那么简单,以前总结过要想体验不错得有四层:如果 URL 里有 lang=xxx ,就根据这个来;如果用户已登录且在设置里保存过语言,则读取用户设置的语言;如果请求头有 Accept-Language ,那按照这个来;最后如果什么都没有,就根据用户 IP 默认来。 i18n 显示的不管是不是用户想要的语言,起码内容是没错的。时区可能是一个更多人注意不到的坑。 | 
|  |      32mikewang      2023-10-12 23:24:07 +08:00 另外也不用说英文世界的讨论氛围,因为您的提问是「这合理吗?」,自然有人觉得合理,有人觉得不合理。 如果您是想要解决方案,您可以直接提问。 --- 解决这个问题的方法是: 将您的 Google 收藏地址保存为: https://www.google.com/?hl=en&gl=US 将您的 Chrome 搜索地址设置为: https://www.google.com/search?q=%s&hl=en&gl=US | 
|      33fancy2020 OP @mikewang  不讨论 Google 搜索结果内容的语言,就说 Google 首页的 UI 展示,刚试了下无痕浏览,依然显示的是日语。 Header 为: Accept-Language: en-US,en;q=0.9 比较讽刺的是,Chrome 还在右上角提示我翻译为英文.. | 
|      35fancy2020 OP @mikewang  对,我是想讨论是否合理,我也非常希望听到那些认为合理的看法,但前提是,通过正常的逻辑和信息来源来讨论,而不是阴阳怪气的乱评价。 比如,上边有人提到 Accept-Language 的浏览器支持率的问题,就非常好啊,这样的讨论才能让人拓宽认知。 像上边#4 #9 那种回复,你听了啥感受? | 
|  |      36mikewang      2023-10-12 23:33:17 +08:00 @fancy2020 同样是用 Google 举个例子回应而已。 另外补充一点,大概可以解决您的疑问:因为 en 是“默认”语言,被忽略了,从而采用了可信度更高的 IP 位置。如果 Accept-Language 是 en 以外的,网站会遵守,你可以试试。 不过这确实是一个问题。 | 
|      37fancy2020 OP @mikewang  Google 我知道它网站有“区域”设置和“语言”设置,但那个区域设置总会莫名其妙的被重置成“Current Region”。 不想讨论 Google ,是因为它和大多数网站的行为是不一样的,大部分网站是没有语言设置选项的。 所以讨论这种特例,不太具备普遍性,离我真正想讨论的东西偏离有点远。 | 
|  |      38mikewang      2023-10-13 00:05:46 +08:00 @fancy2020 嗯...确实挺不合理的。不过 Web 的破事不止这些,比如 Content-Type 是带字符集的,<meta charset="utf-8"> 也是带字符集的,配置不统一的网站很多。 V 站自身也不遵守 Accept-Language ,您看右下角有一个 Select Language ,但是始终默认中文。 最有趣的是,就算设置成英文,回的还是 <html lang="zh-CN"> 。 真正遵守标准的人太少,导致服务端、浏览器都在互相猜。服务端觉得浏览器发送的不一定准,浏览器也在怀疑服务端回复的数据是否正确。就导致了这么一种局面。 | 
|  |      39Exp      2023-10-13 07:44:23 +08:00 我个人觉得不合理,并且不理解网站不提供或者不愿意让用户自定义设定的原因。 另外一个问题就是网站自动跳转地区域名的问题,我同样觉得不理解和无法接受。 | 
|      40YassoWithSpeaker      2023-10-13 16:09:57 +08:00 网站还支持国际化呢,有的网站就一种语言, |