3

我经常看到缩写“en-US”,它对应于 ISO639-1 中标准化的 2 字符语言代码。我也了解语言标签的格式通常由一个主要语言(子标签)代码组成,然后是一系列用破折号分隔的其他子标签,如https://www.rfc-editor.org/rfc/rfc5646中所述。

该链接提到在 ISO639-2、ISO639-3 和 ISO639-5 中还定义了 3 个字母的语言代码。

尽管如此,这里仍然为 Windows/.NET 定义了更多代码:http: //msdn.microsoft.com/en-us/goglobal/bb896001.aspx。这些将语言标签称为“文化名称”,并为“语言名称”使用不同的 3 字符代码。因此,“文化名称”似乎是 2 个字符的语言代码,尽管我不确定它们为什么在 Windows 版本之间有所不同,或者它们遵循标准语言代码的程度如何。“en-US”真的是“语言代码”还是“文化名称”?

如果我正在开发使用语言代码的软件,我应该使用哪个标准?(2 字符代码还是 3 字符代码?如果是 3 字符,那么 ISO639-2、3 或 5?)

为什么我要选择一个而不是另一个?(对于操作系统平台或编程框架的兼容性?)

4

1 回答 1

3

Bcp47是识别语言的行业最佳实践标准。您应该使用这些语言标签。Bcp47 规定,如果可以使用 2 字母或 3 字母标签来识别语言,则应使用 2 字母标签。

文化和语言环境与语言标签在它们如何构思区域信息方面是不同的。语言标签中的地区信息标识特定方言的来源(en-US 是美国英语或起源于美国的各种英语),区域设置中的地区信息标识信息相关的位置。由于大多数美国英语使用者也居住在美国,因此在提供诸如如何拼写单词或格式化日期或数字等信息时,这种区别并不重要。

Windows 正在从区域设置或文化的概念转向更具表现力的语言和区域概念(单独标识),这使我们能够识别居住在英国的美式英语使用者等情况。

请注意,在某些情况下,Windows 仍然使用早于该标准的旧名称,并且根据您依赖操作系统的方式,您可能需要在标准兼容名称和旧名称之间进行映射。

于 2013-01-17T19:11:17.203 回答