【发布时间】:2013-01-17 18:18:40
【问题描述】:
我经常看到缩写“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?)
为什么我应该选择一个而不是另一个? (为了操作系统平台或编程框架的兼容性?)
【问题讨论】:
-
没有明确的标准或目的,这看起来像是一次民意调查。
-
这不是民意调查,因为我特别问“为什么”应该选择一个而不是另一个。例如,最佳选择可能取决于平台。我不知道。如果是这种情况,那么一个明确的答案,例如“选择取决于平台,对于平台 X,应该使用这个方案,因为......”将是一个来自经验丰富的开发人员的有效的、非主观的答案。一般来说,使用 2 与 3 字母代码也可能存在有效、合乎逻辑的原因或特定目的,例如要涵盖的语言范围等。我正在寻找事实和逻辑原因,而不是意见。
-
我不是在问“哪个更好,2 个或 3 个字符的代码”,因为那是固执己见。我在问“我什么时候使用 2 和 3 字符代码以及为什么”(引出事实或逻辑信息)。我还对 Windows API 上下文中的“文化名称”是否实际上只是一个 2 个字母的“语言代码”感兴趣。最清晰、最全面的回答将被标记为答案。
标签: locale multilingual globalization