平台

浏览器语言与应用本地化

把浏览器语言偏好作为本地化提示,但不要把它当作身份或位置证明,也不要取代用户的明确选择。

文档中心

想直接进入 平台 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

浏览器语言偏好可以帮助应用选择第一种翻译,但它只是提示。navigator.language 表示主要语言,navigator.languages 可能返回有序偏好列表。它们都不能证明用户住在哪里、属于哪个国家,或用户在每项任务中想用哪种语言。可靠的应用应协商受支持的 locale,提供语言选择器,并在资源缺失时保留可读的回退体验。

Navigator 接口公开浏览器或用户设置的语言偏好。MDN Navigator.language 说明主要语言标签,WHATWG Navigator.languages 说明有序偏好列表。fr-CA 表示内容的语言和地区偏好,不表示用户的实际地理位置。

列表可能为空、只有一个值,也可能在浏览器设置改变后更新。应把它当作选择过程的输入,而不是永久画像。文档的 lang 属性承担不同职责:它帮助屏幕阅读器选择发音规则,并且在可见语言改变时必须同步更新。

协商受支持的 locale

先列出应用真正完成翻译的 locale。规范化语言标签,先尝试最具体的地区形式,再回退到父语言。若支持 fr-CA、fr 和 en,加拿大法语请求可使用 fr-CA,其他法语请求使用 fr,剩余请求使用 en。不要编造翻译,也不要把不同地区当成完全相同。

可以使用这样的顺序:已保存的明确选择、navigator.languages 中第一个受支持值、列表不可用时的 navigator.language,最后是稳定的产品默认语言。这一顺序也适用于只能提供较少信息的内嵌网页。默认语言必须是完整体验,不能显示未翻译的键名。

国际化要区分语言、文字和地区。W3C Internationalization 说明这些标签部分不能互相替代。缺少某个变体时,应说明采用了哪种回退,并让用户能在选择器中切换其他语言。

让明确选择保持优先

自动选择适合首次访问,但不能让用户困在看不懂的界面。选择器应显示已翻译的语言名称,有明确的当前值,并支持键盘操作。只有在用户明确选择后才保存 locale;再次访问时,先恢复该选择,再读取已变化的浏览器偏好。说明选择影响当前页面、账户还是后续访问。

切换时保留内容、焦点、表单和草稿。如果资源加载失败,保留上一个可读语言并提供重试。语言偏好不是推广消息、数据传输或法律决定的同意。语言协商只改变呈现方式,不能改变功能的隐私政策。

加载资源而不破坏内容

对翻译资源做版本管理,并验证每个页面需要的键都存在。过渡期间显示原来的文字或上一版本,而不是内部键名。不要把独立短语拼接成句子,因为语序和复数规则会随语言变化。日期、数字和列表应使用 Intl 格式化;存储数据保持规范形式,不能用语言推断税务国家或支付方式。

更新文档 lang、标题、描述、alternate 链接和文字方向。测试长译文、从右到左文字、数字与代码混排、缩放和大字体。多语言 URL 应保持相同内容意图;缺少翻译时不能把有效 URL 重定向到无关首页。

测试偏好、fallback 与无障碍

测试空偏好列表、不支持的地区、带文字系统的标签,以及只提供 navigator.language 的浏览器。先做明确选择,再改变浏览器偏好,确认应用选择仍然优先;清除应用选择后,确认协商再次可预测。

测试慢网、请求中断和过期缓存。保留用户输入,提供进度说明和可恢复的重试。用键盘操作选择器,验证语言切换后的焦点,并让屏幕阅读器读到新的 lang 和标签。检查复数、十进制分隔符、文本扩展和放大显示。

隐私与边界

语言偏好与其他值组合时,可能增加浏览器配置的可识别性。如果应用只需要一个 locale,就不要把完整列表发送到分析系统。不能据此推断居住地、国籍或敏感属性。如果提供远程翻译,要说明接收文本的服务、保留期限以及启动传输的明确操作。缺少本地资源时,绝不能静默上传私密内容。

公开说明哪些 locale 完整、哪些使用语言回退,并始终保留可访问的默认路径。存储、同步或资源打包发生变化时重新检查控制边界。

日期和数字的显示应把 locale 决策与存储数据分开,可参考 Intl 格式化指南。还可以阅读浏览器隐私选择来检查数据边界。

通知、生成文件和支持记录也应遵循相同边界:改变标签,不改变数据或权限。

说明每个选择器的作用范围,并在资源缺失时显示清晰的回退选项。

语言标签可能包含文字系统和地区,协商时应保留这些区别。

协商应保持确定性,以便支持人员复现结果,同时不必保存完整的浏览器列表。

即使选择的资源包尚未加载,登录和恢复流程也应保持可理解。

服务器渲染和客户端渲染都应让已保存的明确选择保持相同优先级。

本地化质量包括标题、标签、提示、替代文本和复数规则,而不只是翻译词语。

缺少某个 locale 时,应提供其他语言、默认语言或重新加载的选择。

隐私控制、内嵌网页行为或国际化数据改变后,应重新检查协商路径。

默认语言必须让用户完成任务,而不是等待新的资源下载。

切换语言不能删除已输入的数据或已经授予的权限。

错误消息同样需要翻译,或提供用户能理解的回退。

存储的日期和金额含义不能因为显示 locale 改变。

文字方向与文档 lang 都属于无障碍支持。

浏览器偏好不能替代用户对内容传输的明确决定。

浏览器偏好与受支持资源协商,用户的明确选择优先于回退。

让每种 locale 的选择都易于理解,并说明如何在移动设备和桌面设备返回默认语言。

相同建议适用于移动和桌面浏览器。

断言与来源对应

公开来源

#Navigator.language#本地化#国际化#无障碍

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。