lang="en"是最简且合规的写法,符合BCP 47标准,被浏览器、屏幕阅读器和搜索引擎直接识别;仅在存在明确地域差异(如拼写、日期格式、术语)时才需细化为en-US等变体。

lang="en" 是最简且合规的写法
HTML 的 lang 属性只要求使用 BCP 47 语言标签,而 en 本身就是一个合法、广泛支持、语义明确的主语言代码。浏览器、屏幕阅读器和搜索引擎都直接识别它,不需要额外修饰。
常见误操作包括加冗余子标签(如 lang="en-US")或拼写错误(如 lang="eng"),前者虽不报错但无必要,后者则不符合标准——BCP 47 规定英语主代码必须是 en,不是 eng 或 english。
什么时候该用 en-US、en-GB 等变体
只有当页面内容存在明确的地域性语言差异时才需要细化。比如:
- 拼写明显不同:页面大量使用 “color”(美式)而非 “colour”(英式)
- 日期/数字格式依赖地区:显示 “12/31/2024” 而非 “31/12/2024”
- 引用本地法规、单位或术语(如 “foot” vs “metre”,“Fahrenheit” vs “Celsius”)
若只是普通英文内容,lang="en" 已足够。强行指定 en-US 可能导致语音合成器(TTS)读出美式口音,而用户期望英式发音,反而降低可访问性。
立即学习“前端免费学习笔记(深入)”;
lang 属性该放在哪一级元素上
最稳妥的做法是直接设在 <html> 根元素上:
<html lang="en">
这样整页默认继承该语言。局部切换语言时再用内联 lang,例如:
<p>The word <span lang="fr">bonjour</span> means “hello”.</p>
注意:lang 不应只加在 <body> 或某个容器上——它必须从根开始声明,否则辅助技术可能无法正确解析文档主语言。
验证是否生效的三个快速检查点
别只靠肉眼确认,实际验证更可靠:
- 用浏览器开发者工具检查
<html>元素是否确实含有lang="en" - 在 VoiceOver(macOS)或 NVDA(Windows)中朗读页面,听语音引擎是否按英语发音规则处理单词
- 用 W3C Markup Validator 提交 HTML,确认无
Bad value “en” for attribute “lang”类报错(若有,说明拼写或格式有误)
最容易被忽略的是:动态生成的 HTML(如 SPA)可能漏掉根节点的 lang,或者服务端渲染时模板未透传语言配置——这时候即使前端写了,实际输出的 HTML 里仍是空的 lang 属性。



















