Intl.PluralRulesによる言語別複数形ルール

Intl.PluralRulesを使用して、言語間で複数形がどのように異なるかを理解します。基数・序数カテゴリ、複雑な複数形システムを持つ言語、実用的なICU MessageFormatパターンについて学びます。

Intl.PluralRules

詳細な説明

Intl.PluralRules:言語固有の複数形カテゴリ

言語によって複数形のルールが異なります。英語は2つ(単数と複数)ですが、他の言語は最大6つを持つことがあります。Intl.PluralRulesは数値がどの複数形カテゴリに属するかを決定します。

複数形カテゴリ

可能なカテゴリ:zeroonetwofewmanyother

英語(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ライブラリを使用する必要がありました。

試してみる — Locale String Tester

フルツールを開く