浏览器语言是一种偏好,不是一条命令
首次访问可以跟随浏览器语言,但自动判断不应覆盖访客亲手做出的选择。把检测、回退与记忆分开,语言设置才真正可预测。
向下阅读
第一次打开一个网站时,访客还没有机会告诉它自己喜欢哪种语言。浏览器已经提供了一个线索:navigator.languages 按优先级列出用户配置的语言。网站可以据此选择一个合适的初始版本,让中文浏览器看到中文,让英文浏览器看到英文。
但这个线索只是默认值,不是永久命令。浏览器语言可能来自系统设置、工作设备或临时环境,并不总等于访客对某个网站的选择。语言切换一旦被手动使用,它就应该拥有更高优先级。
把判断顺序说清楚
一种稳定的顺序是:先读访客明确保存的选择,再查看浏览器偏好,最后使用站点的回退语言。这个顺序把“我已经选好了”和“你可以替我猜一次”区分开来。
浏览器返回的语言标签也不只有两个值。zh-CN、zh-TW 都属于中文;en-US、en-GB 都属于英文。首版只提供中文和英文时,可以把相同语言家族映射到同一个界面。遇到暂不支持的语言,就选择明确的回退方案,而不是显示一个空页面。
只记住明确选择
还有一个容易忽略的细节:自动检测出的语言,不应当立即写成“访客手动选择”的记录。如果每次访问都把默认语言存进偏好,下次浏览器语言变更时,旧值就会一直压住新偏好。
更清晰的做法是让两种状态各司其职:自动结果只决定这一次的初始界面;只有点击语言切换,才写入持久偏好。访客之后仍然可以再次切换,新的选择继续覆盖旧选择。
页面何时知道语言
在客户端读取浏览器设置很简单,但服务端首屏可能先按照默认语言生成内容,页面加载后再切换。这会带来短暂的文案变化。若网站需要从第一帧就输出正确语言,就需要让服务端也能读取选择,例如用语言 Cookie,并将它纳入页面渲染策略。
这项优化有自己的代价:读取每位访客的偏好可能让原本可缓存的页面变成按请求渲染。内容站点应当先权衡首屏体验、缓存方式和实现复杂度,再决定是否需要这一步。
语言默认值最终不是“猜对一次”这么简单。它还要承认猜测有可能不对,并且让访客的明确选择始终容易找到、容易改变。