lang="en-gb"是合法且推荐的写法,用于声明页面主语言为英式英语,必须写在标签上,混排内容需显式标注,常见错误如en_gb、en-gb、en-uk等均无效。

lang="en-GB" 是合法且推荐的写法,用于声明页面主语言为英式英语。它不是可选项,而是必须项——如果你面向英国用户、内容遵循英式拼写(colour、favour)、日期格式(22/09/2026)或发音习惯,就该用它,而不是 en 或 en-US。
为什么不能只写 en
写 lang="en" 会让浏览器、屏幕阅读器和搜索引擎默认采用美式英语模型处理全文:
- VoiceOver 把 “tomato” 读成 /təˈmeɪ.toʊ/,而非英式的 /təˈmɑː.təʊ/
- Google Search Console 可能将页面归入美国市场,影响英国本地搜索曝光
- 拼写检查器对 “realise” 标红,因它被识别为“非标准美式拼写”
- :lang(en) CSS 规则会匹配所有英文变体,但无法单独针对英式用户定制字体或引号样式
en-GB 必须写在 标签上
这是唯一生效的位置:
- → 完全无效,<title></title> 和 <meta name="description"> 仍按未声明语言处理
- <div lang="en-GB"> → 仅局部语义,不构成文档级语言依据
- JS 动态设置 <code>document.documentElement.lang = "en-GB" → 页面已渲染完成,语音引擎不会重载,Chrome 翻译按钮也不会出现
正确写法只有一种:
混排内容要显式标注,不能依赖继承
即使根元素是 en-GB,以下内容仍需单独加 lang:
- 引用德文句子:<p lang="de">Das ist ein Beispiel.</p>
- 表格中一列是法语产品名:<td lang="fr">Champagne Brut</td>
- 代码块注释是英文:<pre class="brush:php;toolbar:false;" lang="en"># Configure logging level</pre>
- 避免 lang="bash" 这类非法值——BCP 47 不收录 shell 名称,应改用 lang="en" 或留空
常见拼写错误与兼容性陷阱
这些写法看似接近,实则全部失效:
- en_GB → 下划线非法,浏览器静默降级为 und(未知语言)
- EN-GB 或 En-gb → 虽不报错,但部分旧版 EdgeHTML 和 iOS VoiceOver 匹配语音库失败
- en-uk → IANA 未注册,Chrome 会忽略,应始终用 en-GB
- english 或 British → 非 BCP 47 标准标签,直接被静默丢弃
真正关键的不是“能不能写”,而是“写了是否被认”。只要一个字符错,就等于没写。











