
HTML 的 <html lang="..."> 属性必须遵循 BCP 47 语言标签标准,使用短横线(-)而非下划线(_)分隔语言和区域子标签,例如 es-ES;仅指定语言时推荐用 es,兼顾可访问性、SEO 与国际化最佳实践。
html 的 `` 属性必须遵循 bcp 47 语言标签标准,使用短横线(`-`)而非下划线(`_`)分隔语言和区域子标签,例如 `es-es`;仅指定语言时推荐用 `es`,兼顾可访问性、seo 与国际化最佳实践。
在构建符合无障碍(a11y)与现代 Web 标准的网站时,<html> 标签中的 lang 属性绝非可有可无的装饰——它是屏幕阅读器准确识别语音语调、浏览器优化字体回退、搜索引擎理解内容地域属性的关键信号。然而,一个常见却极易被忽视的错误是:误用下划线(_)代替短横线(-)书写语言标签。
例如,以下写法是无效且不合规的:
<html lang="es_ES"> <!-- ❌ 错误:使用下划线 --> <html lang="es_es"> <!-- ❌ 错误:大小写不规范 + 下划线 -->
根据 BCP 47(IETF 发布的语言标签标准),正确的格式应为:
✅ 小写字母表示语言子标签(primary language subtag),
✅ 大写字母表示区域/国家子标签(region subtag),
✅ 二者之间严格使用 ASCII 短横线 - 连接。
因此,西班牙(Spain)的西班牙语应写作:
立即学习“前端免费学习笔记(深入)”;
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
<html lang="es-ES"> <!-- ✅ 推荐:语言小写 + 区域大写 + 短横线 -->
该写法完全通过 Lighthouse、PageSpeed Insights 及 axe 等主流可访问性审计工具检测(如你遇到的 PageSpeed 报错“element does not have a valid value for its [lang] attribute”即源于此)。
? 补充说明:虽然 lang="es-es"(全小写)在技术上也被多数浏览器接受并能通过部分校验,但es-ES 是 W3C 和 IETF 明确推荐的规范形式,有利于长期一致性与专业性表达。
更优实践:优先考虑语言广度,而非过度本地化
除非你的网站内容明确且专门面向西班牙本土用户(例如包含西班牙法定货币、CE 标准、本地法律条款、西班牙时区事件等),否则建议优先使用简明语言标签:
<html lang="es"> <!-- ✅ 推荐默认值:覆盖所有西班牙语使用者 -->
理由如下:
- ✅ 更强的兼容性:避免因区域变体(如 es-MX、es-AR、es-CO)导致的语义割裂;
- ✅ 更好的可维护性:无需为每种西语变体维护不同版本;
- ✅ 符合 WCAG 2.1 指导原则:lang="es" 已足以支持屏幕阅读器选择合适的西班牙语语音引擎;
- ✅ SEO 友好:Google 明确表示,通用语言标签(如 es)比过度细化的区域标签(如 es-ES)更利于多地区西班牙语用户的自然检索。
注意事项与检查清单
- ? 永远不用下划线 _:en_US、fr_FR、zh_CN 均为错误写法,正确形式是 en-US、fr-FR、zh-CN;
- ? 区域子标签非必需:lang="en" 比 lang="en-US" 更通用;仅当内容存在显著地域差异(如拼写、单位、日期格式)时才添加;
- ? 验证工具推荐:使用 W3C Markup Validation Service 或 Chrome DevTools 的 Accessibility 面板实时检查 lang 属性有效性;
- ? HTML5 规范原文依据:HTML Standard § 3.2.5.3 The lang attribute 明确要求“must be a valid BCP 47 language tag”。
遵循这一规范,不仅解决 PageSpeed 的警告,更是对全球用户——尤其是残障人士——的一次切实尊重与技术承诺。


















