lang属性是多语言seo的准入门槛而非加分项;必须全局显式声明,确保hreflang与lang严格一致,各节点(含shadow dom、动态组件、第三方内容)均需独立设置,避免混用模糊码。

lang属性本身不参与排名计算,但写错或缺失会让整套多语言SEO策略失效——它不是加分项,而是准入门槛。
为什么只在html>上设lang="zh-CN"还不够
搜索引擎和屏幕阅读器只认这个根声明,但仅靠它撑不起真实场景:
- 已渲染的 DOM 节点(比如服务端吐出的
、
)不会自动继承新 lang 值,切换语言后仍按旧语种解析- 富文本编辑器插入的外文引用、第三方评论插件加载的内容,默认无 lang,会被当成主语言处理
- Shadow DOM 内部不继承外部 lang,必须在每个 shadow root 里单独设置
- React/Vue 组件动态挂载时,若没显式传入 lang prop 或 patch DOM,节点就裸奔
hreflang 和 lang 必须完全一致,否则静默失效
Google 不会报错,但只要一个地方写错,整组 hreflang 就被丢弃:
-
html lang="zh-CN"对应link rel="alternate" hreflang="zh-CN"—— 严格大小写+连字符,不能是zh-cn、zh_cn、ZH-CN - 末尾空格也算错:
zh-CN≠zh-CN - 在英文页里把
hreflang="zh-CN"指向自己,等于告诉 Google “我是英文页,也是中文页”,触发矛盾信号 - 验证方式:用 Google Search Console 的「URL 检查」工具,看「国际化」标签页是否列出有效对应关系
局部多语言内容必须显式声明lang,不能靠继承
CSS 的
:lang(zh)可以继承,但搜索引擎和辅助技术只扫描显式声明的节点:- 中文页面里嵌法语引文:
<blockquote lang="fr">Je suis français.</blockquote> - 技术文档夹英文术语:
<code lang="en">useState,可触发 IDE 英文高亮 -
<pre class="brush:php;toolbar:false;" lang="bash">curl -X POST</pre>,虽然bash不是标准 BCP 47 语言码,但语法高亮工具认它 - 主
lang="en"却放大段中文描述,且没加p lang="zh-CN",Google 可能判定“语言混杂、质量存疑”,尤其打压长尾词权重
简体中文该选 zh-CN 还是 zh-Hans
没有绝对正确,只有场景适配:
- 优先用
zh-CN:兼容性最稳,Safari 对纯zh的语音支持不稳定,zh-Hans在部分旧版 TTS 引擎中识别率低 -
zh-Hans更适合港澳台简体场景(不绑定国家),但需确认 CMS、翻译 API、i18n 框架是否真正支持 -
zh太模糊:浏览器无法区分简繁,拼音标注、标点间距、字体 fallback 都可能出错 - 别用
Chinese、zh_ch、cn——这些全被浏览器和爬虫忽略,等于没写
真正难的不是写对一行
lang="zh-CN",而是让每段文本——从 SSR 渲染的首屏、到用户粘贴进富文本的外文、再到第三方组件注入的 HTML——都带着准确、可验证、可同步的语言标识。这个细节没报错,但一上线就影响 SEO 收录和无障碍合规。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











