Locale 多语言软件应使用哪些标准语言代码?

Locale 多语言软件应使用哪些标准语言代码?,locale,multilingual,globalization,Locale,Multilingual,Globalization,我经常看到缩写“en-US”,它与ISO639-1中标准化的2字符语言代码相对应。我还了解到,语言标记的格式通常由一个主语言(subtag)代码组成,后面是一系列由破折号分隔的其他子标记,如中所述 该链接提到ISO639-2、ISO639-3和ISO639-5中也定义了三个字母的语言代码 尽管如此,这里仍为Windows/.NET定义了更多代码:。它们将语言标记称为“文化名称”,并使用不同的3字符代码表示“语言名称”。所以“文化名称”似乎是两个字符的语言代码,尽管我不知道为什么它们在不同的Win

我经常看到缩写“en-US”,它与ISO639-1中标准化的2字符语言代码相对应。我还了解到,语言标记的格式通常由一个主语言(subtag)代码组成,后面是一系列由破折号分隔的其他子标记,如中所述

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

尽管如此,这里仍为Windows/.NET定义了更多代码:。它们将语言标记称为“文化名称”,并使用不同的3字符代码表示“语言名称”。所以“文化名称”似乎是两个字符的语言代码,尽管我不知道为什么它们在不同的Windows版本之间有所不同,或者它们在多大程度上遵循标准语言代码。“en-US”真的是“语言代码”还是“文化名称”

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

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

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

文化和地区在如何理解区域信息方面不同于语言标记。语言标记中的区域信息标识特定方言的起源(en US是美国英语或起源于美国的各种英语),区域设置中的区域信息标识信息相关的位置。由于大多数说美国英语的人也居住在美国,因此在提供诸如如何拼写单词、日期或数字格式等信息时,这种区别其实并不重要

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


请注意,在某些情况下,Windows仍然使用早于此标准的旧名称,并且取决于您对操作系统的依赖程度,您可能需要在符合标准的名称和旧名称之间进行映射。

如果没有定义特定的标准或目的,这看起来像是一次民意测验。这不是一次民意测验,因为我特别问“为什么”应该选择一个而不是另一个。例如,最佳选择可能取决于平台。我不知道。如果是这样的话,那么一个明确的答案,比如“选择取决于平台,对于平台X,应该使用这个方案,因为……”将是一个有效的、非固执己见的答案,来自经验丰富的开发人员。一般来说,使用两个或三个字母的代码可能也有合理的、逻辑上的原因或特定的目的,例如要涵盖的语言范围等。我在寻找事实和逻辑上的原因,而不是观点。我不是问“哪种代码更好,两个或三个字符的代码”,因为这是自以为是的。我在问“我什么时候会使用2个字符和3个字符的代码以及为什么”(引出事实或逻辑信息)。我还对Windows API上下文中的“文化名称”是否实际上只是一个两个字母的“语言代码”感兴趣。最清晰、最全面的回答将被标记为答案。谢谢,这非常有帮助,尤其是最佳实践文档。我有一些孩子在德克萨斯州使用阅读理解软件,他们说“边境西班牙语”。我不确定这种方言到底对应什么,但由于他们居住在靠近墨西哥的“美国”地区,我可能会使用“es US”、“es MX”,或者可能使用自定义/私有标识符,如“x-es-BS”。听起来怎么样?这是使我们的软件支持多种语言的第一步,尽管客户端是基于Flash的,但我们的服务器端代码都是Microsoft产品(C#/.NET/SqlServer)。我会使用es US。如果要使用私有标识符,它将类似于es-x-BS。谢谢。我最终还是利用了我们。