HTML5 页面语言声明必须且仅在 <html> 根标签中设置,如 <html lang="zh-CN">;子元素 lang 仅用于局部语言切换;团队强制要求根 lang 存在、值符合 BCP 47 规范(小写、无下划线)、禁止冗余或错误写法。

HTML5 中页面语言声明必须写在 <html> 根标签上,且仅在此处设置,这是团队代码标准的硬性要求,不是可选项。
lang 属性必须出现在 <html> 开始标签内
所有 HTML 文件第一行是 <!DOCTYPE html>,第二行必须是 <html lang="zh-CN">(或其他合法 BCP 47 值)。不能省略,不能写成 <html> 后再补,也不能放在 <body> 或任意子元素里——这些位置的 lang 对整页语言识别完全无效。
- 屏幕阅读器、搜索引擎、翻译插件只读取这一处值
- 团队统一使用
zh-CN,不接受zh、zh-Hans、zh-cmn-Hans等已废弃或非标准写法 - 繁体地区项目按实际部署地选用
zh-HK、zh-TW等,但需提前在项目配置文档中明确
子元素 lang 仅用于局部语言切换
当页面中出现非主语言内容时(如英文引用、日文术语、嵌入的外文 API 响应),才在对应元素上单独加 lang。例如:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
<p lang="en">The term “semantic HTML” means...</p><blockquote lang="ja">HTML5 はウェブ標準です。</blockquote>- 这种写法不影响根
lang,也不替代它
团队落地执行要点
把语言声明纳入代码审查清单和模板脚手架中,避免人工遗漏:
立即学习“前端免费学习笔记(深入)”;
- 新建 HTML 文件模板强制包含:
<!DOCTYPE html><html lang="zh-CN"> - CI 流水线增加检查规则:扫描所有 .html 文件,若缺失根
lang或值不符合 BCP 47(如含下划线错误、大小写混用、过时标签),自动报错 - 前端组件库中所有可复用的布局组件(如
<PageLayout>)默认继承根lang,禁止在内部硬编码lang
常见误写与修正对照
团队培训中重点强调以下错误写法,统一替换为标准形式:
- ✘ <html> → ✔ <html lang="zh-CN">
- ✘ <html lang="zh"> → ✔ <html lang="zh-CN">
- ✘ <html lang="ZH-CN"> → ✔ <html lang="zh-CN">(小写优先)
-
✘ <body lang="zh-CN"> → 删除该属性,确保只在
<html>上存在


















