javascript 无法修改操作系统语言偏好,只能读取只读的浏览器语言设置:navigator.language 获取主语言(如"zh-cn"),navigator.languages?.[0] || navigator.language 获取首选语言,intl.datetimeformat().resolvedoptions().locale 辅助验证,最终应以服务端 accept-language 头为准。

JavaScript 中无法“操作”操作系统的语言偏好,只能读取浏览器提供的语言设置信息。这些信息来自用户在操作系统或浏览器中配置的语言列表,属于只读属性,JS 不能修改它。
用 navigator.language 获取主语言
这是最常用、兼容性最好的方式,返回浏览器 UI 的首选语言(如 "zh-CN" 或 "en-US"),格式符合 IETF BCP 47 标准:
- 直接访问:
navigator.language(现代浏览器支持) - 兼容旧版 IE 可加回退:
navigator.language || navigator.userLanguage - 注意:该值由系统/浏览器设置决定,与网页当前语言无关
用 navigator.languages 获取完整偏好列表
navigator.languages 返回一个字符串数组,按用户设置的优先级排序(如 ["zh-CN", "zh", "en-US", "en"]),比 language 更全面:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 推荐写法:
navigator.languages?.[0] || navigator.language - IE 不支持该属性,需做存在性判断
- 可用于精细化国际化匹配,比如优先加载
zh-CN, fallback 到zh
用 Intl API 辅助验证
借助 Intl.DateTimeFormat().resolvedOptions().locale 可获得运行时实际生效的本地化语言,受操作系统区域设置影响更大:
- 执行:
Intl.DateTimeFormat().resolvedOptions().locale - 结果更贴近系统级语言环境,但依赖 JS 国际化支持
- 可作为
navigator属性的补充参考,不建议单独依赖
服务端配合 Accept-Language 头
前端语言检测有局限,真正可靠的判断需结合 HTTP 请求头 Accept-Language:
- 该字段由浏览器自动发送,顺序反映用户真实偏好
- 服务端解析后可动态返回对应语言版本页面或资源
- 当 JS 被禁用、或用户手动切换语言时,这是兜底方案
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










