我经常看到缩写“en-US”,它与ISO639-1中标准化的2字符语言代码相对应。我也理解语言标签的格式通常由主要语言(子标签)代码组成,后跟一系列由短划线分隔的其他子标签,如http://tools.ietf.org/html/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?)
为什么我要选择一个而不是另一个? (对于OS平台或编程框架兼容性?)
答案 0 :(得分:3)
Bcp47是用于识别语言的行业最佳实践标准。您应该使用这些语言标签。 Bcp47规定,如果可以使用2个字母或3个字母的标签识别语言,则应使用2个字母的标签。
文化和语言环境与语言标签的区别在于它们如何构思区域信息。语言标签中的区域信息标识特定方言的来源(en-US是美国英语或源自美国的各种英语),区域中的区域信息标识信息相关的位置。由于大多数美国英语使用者也住在美国,因此在提供诸如拼写单词或格式化日期或数字等信息时,区别并不重要。
Windows正在逐渐从语言环境或文化的概念转向更具表现力的语言和区域概念(单独识别),这使我们能够识别出居住在英国的美国英语说话者等情况。
请注意,在某些情况下,Windows仍然使用早于此标准的旧名称,并且根据您对操作系统的依赖程度,您可能需要在标准兼容名称和旧名称之间进行映射。