lang="ko"是合法韩语标签,但ko-kr更推荐;必须逐单元格声明,禁用下划线或大写;:lang(ko)生效需根标签合法且子元素显式标注。

lang="ko" 是唯一合法的韩语语言标签
HTML 中标记韩语内容,必须用 ko(ISO 639-1 语言码),不能写 ko-KR、kor、Korean 或 ko_kr。BCP 47 规范要求:语言子标签小写,地区子标签可选但推荐带上,且必须用短横线连接。实际兼容性测试表明:ko 被所有主流屏幕阅读器(NVDA、VoiceOver、JAWS)、Chrome 翻译按钮、Google Search Console 全链路识别;ko-KR 虽合法,但部分旧版 iOS VoiceOver 对地区子标签解析不稳定,可能 fallback 到英文 TTS;ko_kr(下划线)和 Korean(非标准名)会被浏览器静默忽略为 und(未知语言)。
表格里每个 <td> 都得单独加 <code>lang="ko"
给 <table> 或 <code><tr> 加 <code>lang 属性完全无效——读屏软件只检查每个单元格是否显式声明了语言。常见错误是整张表用 <table lang="ko"> 包裹,结果韩文词仍被中文引擎硬读成“사용자 → 撒勇炸”。
<ul>
<li>
<code><th lang="ko">사용자 관리</th> ✅ 显式标注表头
<td lang="ko">로그인 실패</td> ✅ 单元格级控制发音<td>로그인 실패</td> ❌ 无 lang,继承 ,语音错乱<td lang="en">로그인 실패</td> ❌ 语言与文本不匹配,TTS 引擎降级或跳过中韩混排时别整个 <td> 统一设 <code>lang
一个单元格里既有中文说明又有韩文术语(如“点击 로그인 按钮”),不能简单给 <td lang="zh-CN"> 或 <code><td lang="ko">——这会让其中一种语言被错误引擎切音节。正确做法是分层标注:
<ul><li>外层 <code><td lang="zh-CN"> 定义主语言
<li>韩文术语用语义化元素包裹并显式声明:<code><code lang="ko">로그인 或 <span lang="ko">로그인</span>
<div lang="ko"> 这类无语义容器,它干扰 <code>:lang() CSS 匹配且增加可访问性树负担
:lang(ko) 样式生效的前提是根标签合法
CSS 中写 :lang(ko) { font-family: "Malgun Gothic", sans-serif; } 不会自动生效。它依赖两个条件同时满足:
-
(或其他主语言)已正确定义——这是:lang()的锚点 - 目标元素(如
<td lang="ko">)显式声明了 <code>lang="ko",且拼写无空格、无下划线、大小写正确如果样式没生效,优先检查控制台是否报
Failed to parse language tag类警告,再确认 HTML 源码里是不是写了lang="KO"或lang="ko "(末尾空格)——这些都会导致匹配失败。











