lang="en"是英文网页的最低要求,必须显式设在<html>标签上;混排内容需就近单独标注lang值,如<span lang="fr">carte blanche</span>;错误值如en-UK或english无效。

lang="en" 是英文网页的最低要求
所有面向英语用户的 HTML 页面,lang 属性必须显式设置为 en(不是 en-US 或 en-GB 除非你真有区域化需求)。浏览器、屏幕阅读器和搜索引擎都依赖这个属性判断语言基准,不写或写错会导致语音合成发音异常、翻译工具误判、SEO 权重稀释。
最稳妥的位置是放在 <html> 标签上:
<html lang="en">
别只在某个段落或 div 里加——那只是局部覆盖,首页根节点不声明,等于没做。
什么时候该用 en-US 而不是 en
en-US、en-GB 这类子标签只在内容存在明确地域差异时才需要,比如拼写(color vs colour)、日期格式、货币单位、甚至法律条款措辞。普通英文博客、企业官网、文档站点基本用不到。
立即学习“前端免费学习笔记(深入)”;
- 用
en-US的典型场景:美国本地服务页、带美元价格和 MM/DD/YYYY 日期的销售页 - 用
en更安全:技术文档、开源项目主页、多国用户共用的 SaaS 界面 - 错误示范:
lang="en-UK"(不存在)、lang="english"(不是标准值)
嵌套非英文内容时怎么处理
页面主体是英文,但某段引用了法语诗句、日文产品名或中文用户评论?必须对那段内容单独加 lang,否则屏幕阅读器仍按英文规则朗读,导致音调/停顿全错。
正确做法是就近标注:
<p>The term <span lang="fr">carte blanche</span> means...</p>
注意两点:
- 不要只靠 CSS 的
direction或字体切换代替lang——它们解决的是显示,不是语义 - 如果嵌套层级深(比如
<blockquote>里含德语引文),优先在最内层容器设lang,避免父级lang意外继承
验证是否生效的三个快速检查点
写了不等于起作用。上线前用这三步确认:
- 右键 → “查看页面源代码”,确认
<html lang="en">存在且拼写准确(区分大小写,但标准值习惯小写) - 用 Chrome 开发者工具,在 Elements 面板选中
<html>,看右侧 Computed 标签页是否有language: en - 用 NVDA 或 VoiceOver 朗读页面,听首段是否用英语语音引擎(而非系统默认语言)
最容易被忽略的是混合脚本场景:比如英文页面里夹了一段阿拉伯文字,却没给那个 <div> 加 lang="ar" 和 dir="rtl",结果文本顺序和朗读方向全乱——lang 不只是告诉“说什么”,还参与渲染逻辑。



















