lang属性应设为BCP 47标准值,如zh-CN;必须放在标签上;局部多语言内容用内联lang标注;不设会导致屏幕阅读器发音错误、翻译失效、CSS引号不生效、拼写检查失效等问题。
页面语言必须用 lang 属性明确声明,值应遵循 BCP 47 标准,比如中文网页用 zh-CN(简体中文,中国大陆),而不是笼统写 zh 或 cn。浏览器、屏幕阅读器、搜索引擎都依赖这个值做语言相关判断——zh 虽合法,但缺乏区域信息,可能导致拼音排序、日期格式、字体回退不准确。
常见正确写法:
zh-CN:简体中文(中国大陆)zh-TW:繁体中文(中国台湾)en-US:美式英语en-GB:英式英语ja:日语(无地域后缀也可,因日语方言差异小)必须设在 错误示例: 标签上,这是唯一能全局生效的位置。设在 或某个 上只影响其后代元素,且对 SEO 和辅助技术基本无效。
正确写法:
,并确保它出现在文档最开头(紧跟 后)。
主页面语言不变,仅对局部语言不同的内容加 lang。例如英文引文、代码注释、外文人名等,用内联 lang 显式标注:
鲁迅说:
“Hope is a thing with feathers。”
注意:lang 不会自动翻译文本,也不触发浏览器翻译弹窗;它的作用是告诉屏幕阅读器切换发音规则、告诉 CSS 选择器 :lang(en) 匹配样式、告诉 spellcheck 使用对应词典。
容易踩的坑:
lang,导致英文段落里的中文括号被按英文规则断行xml:lang 替代 lang(XHTML 遗留写法,在 HTML5 中无效)lang 属性表面看页面照常显示,但背后已有多个环节失效:
quotes 属性(控制引号样式)默认不生效,需配合 :lang(zh) 手动定义spellcheck="true")直接失效或提示大量误报最隐蔽的问题是:这些缺陷往往只在特定辅助工具或小众浏览器中暴露,开发阶段很难自查。一旦上线,残障用户或海外访问者最先感知到异常。