必须用 id。印尼语的 iso 639-1 代码是 id,in 已弃用;正确写法为 ,需小写、无空格;地区子标签如 id-id 仅在内容明确本地化时可选;子元素仅在语言真正切换时才单独设 lang。

HTML lang 属性该用 id 还是 in?
必须用 id。印尼语的 ISO 639-1 语言代码是 id,不是 in(in 已被弃用,自 1990 年代起就不再有效)。浏览器、屏幕阅读器和搜索引擎都只认 id,用 in 会导致语言识别失败,影响可访问性和 SEO。
怎么在 标签里正确设置?
直接写在根元素上,不要加多余空格或大小写混用:
常见错误包括:
-
lang="ID"或lang="Id"—— 虽然部分浏览器能容错,但规范要求小写,大写可能触发某些校验工具报错 -
lang="ind"—— 这是 ISO 639-2 三字母码,HTML 中不接受,仅支持两字母的 ISO 639-1 -
lang="id-ID"—— 地区子标签(如ID)可选,但仅当页面内容明确限定于印度尼西亚本地变体(比如含本地货币符号、特定日期格式)时才建议加;普通印尼语页面用id就够了
要不要给子元素单独设 lang?
只在内容语言真正切换时才需要。比如页面主体是印尼语,但引用了一句英文原文或嵌入了英语按钮文案:
<p>Ini adalah kutipan berbahasa Inggris: <span lang="en">Hello world</span>.</p>
否则,所有子元素默认继承 ,重复设置不仅冗余,还可能因疏忽导致嵌套语言错乱(例如某段落误设成 lang="ms" 却没意识到马来语和印尼语虽相近但属不同语言)。
验证是否生效的最快方式
打开浏览器开发者工具(F12),在 Elements 面板中检查 标签是否带 lang="id";再用屏幕阅读器朗读一段文字,听发音是否匹配印尼语语音引擎(如 NVDA + eSpeak 默认会切到印尼语语音规则)。更准的验证是跑一次 Lighthouse 的「Accessibility」审计,它会明确提示 lang 是否缺失或无效。
最容易被忽略的是:很多人改完 HTML 就以为万事大吉,却忘了静态资源(比如通过 fetch 加载的 JSON 内容)若含文本,其语言仍需靠 JavaScript 手动控制 element.lang 或 CSS 的 :lang(id) 伪类来适配——这部分不在 HTML 层面自动继承。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











