必须在标签用lang属性声明语言,因在html5中已被弃用,浏览器忽略、屏幕阅读器不识别;正确值需符合bcp 47规范,如zh或zh-cn;多语言内容应通过元素级lang属性标注,而非js动态修改的lang。

必须在 标签上用 lang 属性声明语言,而不是靠 <meta> 标签。
为什么 <meta http-equiv="content-language"> 已被弃用
这个 <meta> 写法在 HTML5 中已不推荐,浏览器基本忽略它;屏幕阅读器、搜索引擎、翻译工具都只认 。你写了 <meta> 却没写 lang,等于没声明。
- HTML5 规范明确将
http-equiv="content-language"标记为“不鼓励使用” -
<meta>声明的是文档的“预期受众语言”,不是实际内容语言,语义错位 - Chrome、Firefox、Safari 对该
<meta>完全不解析,仅部分旧版 IE 曾尝试支持
lang 属性该写什么值:常见错误和正确写法
值不是随便填的,要符合 BCP 47 规范,且优先用简写。中文最常用的是 zh 和 zh-CN,但二者含义不同。
-
zh:泛指所有中文变体(含繁体、粤语、闽南语等),适合内容无地域倾向的通用站点 -
zh-CN:特指中国大陆简体中文,带地域子标签,适合面向大陆用户的页面 -
zh-TW、zh-HK同理,但注意:不要写zh-cht或zh-hant—— 这是旧式写法,现代浏览器虽兼容但非标准 - 避免写
zh-CN-zh或叠加多个语言码,无效且可能触发解析异常
多语言页面怎么处理:lang 能不能动态换
可以,但只能换到元素级,不能靠 JS 动态改 的 lang——改了也没用,浏览器只读取初始 HTML 解析时的值。
立即学习“前端免费学习笔记(深入)”;
- 主语言仍需固定写在
- 局部外语内容(如英文引文、代码注释)用
<span lang="en"></span>或<p lang="ja"></p>包裹 - 不要用 JS 改
document.documentElement.lang来“切换语言”,屏幕阅读器不会响应这种运行时变更 - 真正的多语言站点应服务端输出不同
lang值的 HTML,或用<link rel="alternate" hreflang="...">做语言版本关联
最容易被忽略的一点:即使你用了 lang="zh",如果页面里混着大量未标注的英文术语、代码块或 SVG 文本,辅助技术仍可能误判语种。真正有效的语言声明,得配合语义化标记一起用。











