"<html lang="en">"和"<html lang="en-US">"有什么区别?"

119

<html lang="en"><html lang="en-US">之间有什么区别?破折号后面可以跟哪些其他值?

根据w3.org的说法,“任何两个字母的子代码都被理解为[ISO3166]国家代码。”那么这是否意味着在 alpha-2 代码下列出的所有值都是可接受的值?


您可以在规范中链接的RFC中找到更多细节。 - James Allardice
1
你对浏览器之间的差异还是理论(规范)感兴趣? - Aprillion
@deathApril 都可以。我的意思是,这样做是否能进一步帮助浏览器显示页面? - Celeritas
6个回答

135

<html lang="en">
<html lang="en-US">

第一个lang标签只指定了一个语言代码。第二个标签则指定了一个语言和国家代码。

破折号后面还可以跟哪些值?根据w3.org的说法:"任何两字母子码均被视为[ISO3166]国家代码"这是否意味着列在alpha-2 code下的任何值都是可接受的值?

是的,然而这个值可能没有任何实际意义。

<html lang="en-US">基本上意味着“这个页面使用美式英语”。同样地,<html lang="en-GB">表示“这个页面使用英国式英语”。

如果你真的想要指定一个无效的组合,那也是可以的。按照规范的理解,<html lang="en-ES">是有效的。然而,由于英语在西班牙并不普遍使用,该语言/国家组合并没有什么作用。

我是说这会帮助浏览器更好地显示页面吗?

这不会帮助浏览器显示页面,但对于搜索引擎、屏幕阅读器和其他解析页面的工具(除了人类使用)而言,这是有用的。


37
值得一提的是,乌干达的官方语言实际上是英语和斯瓦希里语。 - Muhammad Alkarouri
43
哈,说得好。真是太美国化了。:( 我把例子改成了西班牙,并且这次做了一些功课,确保英语也不是那里的官方语言。谢谢你的提示。 - Jeremy Wiggins
@JeremyWiggins,关于你在回答中的最后两行,以“它不会帮助浏览器……”开头。如果网站是国际化的,是否仍需要设置语言标签? - Yustme
5
关于最后两行——如果页面使用 CSS 的断字功能(hyphens: auto),则需要使用 lang 属性,以便允许浏览器选择适当的规则集。 - RobertT
1
不仅搜索引擎或屏幕阅读器的语言设置可以通过正确的语言设置得到帮助,还有排版效果。例如,简单的引号 <q></q> 只有在正确的语言设置下才能被正确解释,例如区分 de-DE、de-CH、fr 和 fr-CH。 - theking2

8
这应该会有所帮助: http://www.w3.org/International/articles/language-tags/ 创建语言标签的黄金法则是尽可能保持标签简短。除非它们添加有用的区分信息,否则避免使用区域、脚本或其他子标签。例如,使用ja表示日语,而不是ja-JP,除非你需要说明这是在日本讲的日语,而不是其他地方的日语。
下面列出了可用的各种子标签类型。我们将在接下来的部分中逐个介绍它们以及如何使用它们。 语言-扩展语言-脚本-区域-变体-扩展-私有使用

1
当选择通用英语选项时,一些软件应用程序默认使用美式拼写和本地化,例如Windows在英语语言包中就是这样做的。 https://technet.microsoft.com/en-us/library/cc766191(v=ws.10).aspxWindows(不太有帮助)为一些说多种语言的国家只提供一个语言包,比如荷兰(荷兰语,而不是法语),但为西班牙提供了四个语言包(加泰罗尼亚语,加利西亚语,巴斯克语,西班牙语)。比利时没有任何语言包,可能是因为多种国家的主要语言都是它的国家语言。 - Mousey

8
你可以使用任何国家代码,但这并不意味着浏览器或其他软件将承认它或因此做出任何不同的反应。例如,如果屏幕阅读器只支持美式英语口音,则其可能会对“en-US”和“en-GB”进行相同的处理。但是,如果另一个具有两个不同语音的软件存在,则可以根据国家代码进行调整。

链接已失效,如果您找到替代品,请标记此项以进行恢复。 - Taryn

2

RFC 3066详细说明了允许的值(已加粗和添加链接):

所有2字母子标记都被解释为来自[ISO 3166]ISO 3166 alpha-2国家代码,或由ISO 3166维护机构或主管标准化机构随后分配,表示该语言变体所涉及的区域。

我的理解是任何有效的(根据ISO 3166)2字母代码都可以作为子标记。RFC继续声明:

第二个子标记为3到8个字母的标记可以根据本文档第5章的规则向IANA注册。

顺便说一下,那看起来像是一个错别字,因为第3章似乎与注册过程有关,而不是第5章。

快速搜索IANA注册表会显示非常长的列表,列出了所有可用的语言子标记。以下是列表中的一个示例(将用作en-scouse):

类型: 变体

子标记: scouse

描述: Scouse

添加: 2006-09-18

前缀: en

注释: 英语利物浦方言称为“Scouse”

有各种各样的子标记可用; 快速滚动已经显示了fr-1694acad(17世纪的法语)。


对于设计用于在浏览器中显示的文档,某些(我会说绝大多数)标记的实用性是有限的。 W3C国际化规范仅说明:

浏览器和其他应用程序可以使用有关内容语言的信息向用户提供最合适的信息,或以最合适的方式向用户呈现信息。内容被标记并正确标记得越多,这类应用程序就越有用且普及。

我很难找到关于浏览器遇到不同语言标记时如何行事的详细信息,但它们很可能会为那些使用屏幕阅读器的用户提供一些好处,后者可以使用标记来确定呈现内容的语言/方言/口音。


0

XML Schema 要求在使用 xml:lang(以及其他 xml 命名空间值)之前声明和导入 xml 命名空间。 RELAX NG 预先声明了 xml 命名空间,就像 XML 一样,因此不需要额外的声明。


-1

首先,第一个问题很容易。有许多种英语,但(大多数情况下)只有一种美式英语。人们会猜测有en-CNen-GBen-AU等等。猜测可能甚至还有奥地利英语,但这更多的是“你可以”而不是“确实存在”。


6
EN-UK是en-gb的ISO语言代码,这里提供了一个很好的英语变种列表,包括10种不同的英语。 - Codemwnci
1
但是只有一个祖鲁!:o) - Codemwnci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接