srclang必须是合法bcp 47语言标签,如zh-hans、en-us,写chinese或english无效;同一video内各track的srclang值须唯一且大小写敏感,格式错误会导致轨道被静默忽略。

srclang必须是BCP 47语言标签,不是自然语言名
浏览器靠srclang自动匹配系统语言或用户选择,但只认标准码,写Chinese或english完全无效。它不查词典,只做字符串精确比对。
-
zh、en、ja、ko、es等 ISO 639-1 两字母码可用,但不够精确 - 推荐用更细粒度的 BCP 47 格式:
zh-Hans(简体中文)、zh-Hant(繁体中文)、en-US、en-GB、ja-JP - 同一
<video></video>内所有srclang值必须互不相同;重复会导致后出现的轨道被忽略 - 空值、
srclang=""或缺失该属性 → 该<track></track>不会出现在字幕菜单中
多国字幕必须每个语言一个独立track,且srclang不能混用
别试图用一个<track></track>塞中英双语——WebVTT 不支持多语言混合,浏览器也只按srclang单值识别。多语言 = 多个<track></track> + 各自唯一的srclang。
- 正确:
<track kind="subtitles" srclang="zh-Hans" src="cn.vtt" label="简体中文"></track><track kind="subtitles" srclang="en" src="en.vtt" label="English"></track> - 错误:
<track kind="subtitles" srclang="zh,en" src="bilingual.vtt"></track>→ 浏览器直接跳过 - 错误:
<track kind="subtitles" srclang="zh" src="cn.vtt"></track>和<track kind="subtitles" srclang="zh" src="hk.vtt"></track>→ 第二个被静默丢弃
srclang大小写敏感,且不能带空格或多余符号
srclang值必须严格符合规范:全小写、无空格、无下划线、无括号。写成zh_CN或ZH-HANS或zh- hant都会失效。
- ✅ 正确:
srclang="zh-Hans"、srclang="pt-BR"、srclang="ar" - ❌ 失效:
srclang="ZH-HANS"(大写)、srclang="zh_hans"(下划线)、srclang="zh-Hans "(末尾空格) - 注意:
zh-CN虽常见,但zh-Hans更通用(覆盖大陆、新加坡、马来西亚等简体区),zh-Hant同理优于zh-TW
浏览器自动启用逻辑依赖srclang,但default属性只管首次加载
Chrome/Firefox 会根据操作系统语言,尝试启用srclang匹配的轨道——前提是该轨道存在且未被禁用。但这和default无关,default仅决定页面首次加载时哪个轨道为showing状态。
- 用户切换语言后,浏览器不再理会
default,只记住用户上次选择 - 若系统设为英文,但HTML里只有
srclang="zh-Hans",则无自动启用,菜单里仍显示“简体中文”,但默认关闭 - JavaScript 切换时,应通过
textTracks[i].mode = 'showing'控制,而非改srclang——后者不可写
实际生效的关键不在“怎么写”,而在“写完之后浏览器能不能把它当真”。srclang一旦拼错或格式不对,整个<track></track>就从菜单里消失,连控制台都不会报错——这才是最常被卡住的地方。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











