lang属性必须写在标签上,否则完全失效;改或的lang仅影响局部,无法触发整页翻译、seo识别、字体回退及正确语音朗读。

lang 属性必须写在 标签上,否则浏览器、屏幕阅读器和搜索引擎基本当它不存在——这不是“效果不好”,是直接失效。
为什么只改 document.body.lang 不行
浏览器和辅助技术只扫描根元素的 lang 值来判断整页语言基调。改 或某个 <div> 的 <code>lang,对 SEO、自动翻译提示、字体 fallback 几乎没影响。
- 常见错误现象:
SPA切换语言后只更新了document.body.lang,VoiceOver 仍用旧语种朗读 - Chrome 自动翻译按钮不出现,或点了之后把中文翻成英文再翻回中文,语义错乱
- 中英混排时英文引号 “” 和中文引号「」间距异常,因为浏览器没识别出语言切换
- 实操建议:SPA 页面语言切换时必须执行
document.documentElement.lang = "ja-JP",不是body,也不是只改 state
hreflang 必须成对互指,且与 lang 完全无关
hreflang 是给搜索引擎看的链接关系,lang 是给浏览器和辅助技术看的内容语言——两者不互通、不替代、不继承。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 典型翻车场景:英文页
,但嵌入一段中文说明没加<p lang="zh-CN"></p>→ 屏幕阅读器用英语念中文词 - 中文页写了
hreflang="en"指向英文版,但英文版仍为lang="zh-CN"→ 搜索引擎收了hreflang,浏览器却当它是中文页渲染 - 所有
href必须是绝对 URL;每个hreflang值必须符合 BCP 47(如zh-Hans可用,zh_cn或Chinese无效) - 每个语言版本页面的
中都要列出全部互指关系(含自己),漏掉任意一个都会导致搜索引擎无法建立语言闭环
局部多语言内容必须显式声明 lang,不能靠继承
浏览器和 NVDA/JAWS 在 DOM 解析初期就固化每个节点的语言上下文,之后改根节点毫无作用。
- 中英文混排段落里,英文术语需单独包裹:
<span lang="en">useState</span> - 法语引文:
<blockquote lang="fr">Je suis français.</blockquote> -
<pre class="brush:php;toolbar:false;"></pre>标签里写lang="bash"是错的——bash不是合法 BCP 47 语言码,应写lang="en"或lang="zh",再靠class控制语法高亮 - 别给
<code>写模糊值如lang="zh":简体(zh-Hans)和繁体(zh-Hant)触发的语音引擎、拼音标注逻辑不同
最容易被忽略的点是:服务端返回的 lang 值若带下划线(如 zh_ch)或大小写混杂(如 ZH-CN),前端不做标准化转换就直接赋给 document.documentElement.lang,等于白设——浏览器和爬虫只接受小写字母 + 连字符 + 地区码的标准格式。










