Intl.PluralRulesによる言語別複数形ルール
Intl.PluralRulesを使用して、言語間で複数形がどのように異なるかを理解します。基数・序数カテゴリ、複雑な複数形システムを持つ言語、実用的なICU MessageFormatパターンについて学びます。
Intl.PluralRules
詳細な説明
Intl.PluralRules:言語固有の複数形カテゴリ
言語によって複数形のルールが異なります。英語は2つ(単数と複数)ですが、他の言語は最大6つを持つことがあります。Intl.PluralRulesは数値がどの複数形カテゴリに属するかを決定します。
複数形カテゴリ
可能なカテゴリ:zero、one、two、few、many、other。
英語(2カテゴリ)
const en = new Intl.PluralRules('en');
en.select(0); // "other"
en.select(1); // "one"
en.select(2); // "other"
アラビア語(6カテゴリ!)
const ar = new Intl.PluralRules('ar');
ar.select(0); // "zero"
ar.select(1); // "one"
ar.select(2); // "two"
ar.select(3); // "few" (3-10)
ar.select(11); // "many" (11-99)
ar.select(100); // "other" (100, 1000, ...)
序数の複数形
const en = new Intl.PluralRules('en', { type: 'ordinal' });
en.select(1); // "one" -> "1st"
en.select(2); // "two" -> "2nd"
en.select(3); // "few" -> "3rd"
en.select(4); // "other" -> "4th"
言語別の複雑さ
| カテゴリ数 | 言語 |
|---|---|
| 1(otherのみ) | 中国語、日本語、韓国語、ベトナム語、タイ語 |
| 2(one, other) | 英語、ドイツ語、スペイン語、ポルトガル語 |
| 3 | フランス語、ラトビア語、ルーマニア語 |
| 4 | ポーランド語、チェコ語、スロバキア語 |
| 6 | アラビア語 |
ユースケース
複数形ルールは、カウント依存のメッセージを表示するすべてのアプリケーションにとって不可欠です。英語の「You have 1 new message」vs「You have 5 new messages」はシンプルですが、ポーランド語は4つの異なる形式が必要で、アラビア語は6つ必要です。Intl.PluralRulesがなければ、言語固有の複数形ロジックをハードコードするか、重いi18nライブラリを使用する必要がありました。