【问题标题】:Which standard language codes should I use for multilingual software?我应该为多语言软件使用哪些标准语言代码?
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,这很有帮助,尤其是最佳实践文档。我有一些孩子在德克萨斯州使用一些阅读理解软件,他们会说“边境西班牙语”。我不确定该方言到底对应什么,但由于他们生活在靠近墨西哥的“美国”地区,我可能会使用“es-US”、“es-MX”,或者可能是自定义/私人标识符,例如“x-es-BS”。听起来怎么样?这是让我们的软件支持多种语言的第一步,虽然客户端是基于 Flash 的,但我们的服务器端代码都是微软的产品(C#/.NET/SqlServer)。
  • 我会使用 es-US。如果您要使用私有标识符,它将类似于 es-x-BS。
  • 谢谢。我确实最终使用了 es-US。
猜你喜欢
  • 2016-08-23
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多