React Intl 使用什么格式的语言环境?

What format of locale does React Intl use?

根据 React Intl 文档,要为您的应用程序添加对特定语言的支持,您需要从 locale-data/ 目录导入相关语言文件并将其传递给名为 addLocaleData()

对于英语或法语等语言,一切都很简单,因为您有 en.jsfr.js,它们遵循熟悉的双字母代码命名约定。但是,locale-data 目录还包括我以前从未遇到过的具有三字母语言代码的整个文件范围,例如:agqguzkkj .

我正在寻找一些文档来帮助我将这些语言代码映射到它们对应的语言。

我需要它的原因是我目前正在尝试查找奥地利德语和巴西葡萄牙语的语言文件,但我根本不知道它们背后隐藏着什么代码。我认为前者可能在 at.js 下可用,但没有这样的文件,而后者 - 在 br.js 下但该文件包含一些其他语言。

有关语言代码,请参阅 ISO 693-3。通常语言变体是根据它们的语言代码和变体来定义的,例如 pt-PT 和 pt-BR。 React Intl 可能不支持所有语言。

TL;DR

它正在使用 ISO 639,具体来说:

  • ISO 639-1(two-letter 代码)用于 ISO 639-1 涵盖的语言,
  • ISO 639-3 ISO 639-1 未涵盖但 ISO 639-3 涵盖的语言

您可以找到所有代码 here。它列出了 ISO 639-1 代码(有一个)和 ISO 639-3 代码(以及 ISO 639-2/T 和 ISO 639-2/B 代码,我认为它们已过时)。


详情:

tag says "Combines react components with FormatJS." A quick search for FormatJS turns up its website, which on its about page 说:

Industry Standards

FormatJS builds on the ECMAScript Internationalization API (ECMA-402), uses locale data from the CLDR, and works with the industry standard ICU Message syntax used by professional translators.

(我的重点)

按照 CLDR link 将您带到 unicode.org 上的 CLDR 页面,其中描述了格式和 link 到 the download page. Kicking around the CLDR site, it mentions ISO 639-3 language codes. Kicking around their "current work" we can find a UTF-8 list of those codes here,其中列出了您提到的所有三个: agq (Aghem),guz(列出两次;Ekegusii 和 Gusii)和 kkj(Kako)。

但是,在,user3775501指出唯一的代码he/she 已检查(对于威尔士语)是 cym,但查看 node_modules/react-intl/locale-data 时,它是 cy。在ISO 639-3中明明是cym,在ISO 639-1中却是cy;很明显,他们将 ISO 639 作为一个整体使用,而不仅仅是 ISO 639-3。 ISO 639 定义了 two-letter 代码 (ISO 639-1) 和 three-letter 代码 (ISO 639-3)(有一个关于 four-letter 代码的提案已被撤销,另外还有一个 ISO 639 -2 显然有两部分,T 和 B,我认为这已经过时了)。 此页面 由 ISO 639-3 的注册机构 SIL International 提供,列出了 two-letter (ISO 639-1) 和 three-letter (ISO 639-3 )代码。在 第一页以 c 开头的代码中,我们找到威尔士语,在 ISO 639-1 中为 cy,在 ISO 639-2 中为 cym /T、ISO 639-2/B 中的 wel 和 ISO 639-3 中的 cym。 (威尔士语的威尔士语名称是 Cymraeg,因此 cy/cym)。

查看 node_modules/react-intl/locale-data,我们可以看到 two-letter 和 three-letter 代码。例如,这里是 c 的:

ca
ce
cgg
chr
ckb
cs
cu
cy

查看 SIL International 的 list for c,我们发现:

  • ca - 加泰罗尼亚语、巴伦西亚语的 ISO 639-1 代码;它的 ISO 639-3 代码是 cat
  • ce - 捷克语的 ISO 639-1 代码;它的 ISO 639-3 代码是 che
  • cgg - Chiga 的 ISO 639-3 代码,没有 ISO 639-1 代码
  • chr - 切诺基的 ISO 639-3 代码,没有 ISO 639-1 代码
  • ckb - 中央库尔德语的 ISO 639-3 代码,没有 ISO 639-1 代码
  • cs - 捷克语的 ISO 639-1 代码;它的 ISO 639-3 代码是 ces
  • cu - Church Slavic、Church Slavonic、Old Bulgarian、Old Church Slavonic、Old Slavonic 的 ISO 639-1 代码;它的 ISO 639-3 代码是 chu
  • cy - 威尔士语的 ISO 639-1 代码;它的 ISO 639-3 代码是 cym

所以看起来他们使用的是 ISO 639-1 代码,如果没有 ISO 639-1 代码,则使用 ISO 639-3 代码。

Searching for "austri" in the SIL list just finds Austrian Sign Language. Searching for "german" yields a number of German dialects, but nothing identified as Austrian. Wikipedia tells me most Austrians speak Bavarian, which is bar. Searching for "braz" doesn't turn up a Brazilian Portuguese; searching for "portu" 出现了几种葡萄牙语方言,您必须找出其中哪些与您的目标人群相关。