每种 Unicode 区域标识符格式的正式名称是什么?

每种 Unicode 区域标识符格式的正式名称是什么?

Unicode 区域设置标识符可以采用不同的格式en-usen_US和 来书写enUS,每种格式的官方名称是什么?

经过搜索,我发现该格式en-us叫做BCP47格式,但是其他格式呢?

答案1

en-us是 BCP47 语言标签,它可以有其他子标签、脚本和 -t- 或 -u- 扩展名,例如th-TH-u-ca-buddhist-nu-thai。BCP47 和 -t- 和 -u- 扩展名用于Unicode 区域设置标识符. Microsoft 文档将其称为比较语言环境 ID

en_US是 POSIX 区域设置标识符。格式为[language[_territory][.codeset][@modifier]],因此更复杂的示例为th_TH.UTF-8@calendar=buddhist。可以包含多个修饰符,修饰符之间用分号分隔。

例如,在 ICU4C 和 ICU4J 中,您会发现同时使用了基于 BCP47 的标识符和 POSIX 标识符。

我不确定是否有使用 的标准enUS,但我可能错了。我通常将其视为语言环境对象变量的命名约定。您还可以看到微软对语言(地域)字符串和数字语言环境标识符的使用,微软将其称为Windows 语言代码标识符 (LCID)或者文化标识符,尽管现代版本的 Windows 已经采用了基于 BCP 47 的区域设置标识符。

答案2

en-us仅在某种意义上被称为BCP47这是使用标签和子标签指定命名约定的标准的名称。

您可以在维基百科文章中找到详细信息 IETF 语言标签

总而言之,en-us是一个语言标签,由两个子标签组成:

  • en是主要语言子标签,基于多项 ISO 标准
  • us是区域子标签,在本例中是国家代码(但也可以是地理区域代码)。

请注意,这BCP47只是关于子标签、主要子标签和次要子标签格式的通用格式。它指出了子标签存在多种标准,但并未强加任何标准。它不规定大写或小写字母或分隔符(此处以破折号和下划线为主)。

开发人员可以自由地从任何一项或多项已知标准中选择子标签,或者发挥创造力。BCP47只要符合所述框架,他所做的一切都会得到称呼。(我不确定有多少开发人员知道这些标准的存在。)

相关内容