ICU MessageFormatの複数形ルール
6つのCLDR複数形カテゴリ(zero、one、two、few、many、other)を含むICU複数形ルールをマスター。英語、アラビア語、ポーランド語の例を含みます。
Plural & Select
詳細な説明
ICU複数形ルールの理解
複数形処理はICU MessageFormatの最も強力な機能の1つです。単数形と複数形のみを扱うナイーブなアプローチとは異なり、ICUは言語に応じて最大6つのカテゴリを定義するUnicode CLDR複数形ルールを使用します。
6つの複数形カテゴリ
| カテゴリ | 使用言語 | 英語での数値例 |
|---|---|---|
zero |
アラビア語、ラトビア語 | 英語では該当なし |
one |
英語、ドイツ語、スペイン語 | 1 |
two |
アラビア語、ヘブライ語、スロベニア語 | 英語では該当なし |
few |
ポーランド語、チェコ語、ロシア語 | 英語では該当なし |
many |
ポーランド語、アラビア語、ロシア語 | 英語では該当なし |
other |
すべての言語(必須) | 0, 2, 3, 4, 5, ... |
英語の複数形(2カテゴリ)
英語はone(正確に1の場合)とother(それ以外すべて)のみを使用します:
{count, plural,
one {You have # new notification}
other {You have # new notifications}
}
ポーランド語の複数形(4カテゴリ)
ポーランド語はone、few、many、otherを使用します:
{count, plural,
one {# plik}
few {# pliki}
many {# plików}
other {# pliku}
}
=Nによる正確な値マッチング
=N構文を使用して正確な数値にマッチさせることができ、カテゴリマッチングより優先されます:
{count, plural,
=0 {Your inbox is empty}
=1 {You have one message}
other {You have # messages}
}
# プレースホルダー
pluralケース内で#はフォーマットされた数値に置き換えられます:
{count, plural, one {# item} other {# items}}
count=1 -> "1 item"
count=42 -> "42 items"
count=1000 -> "1,000 items"(ロケールフォーマット付き)
常にotherを含める
otherカテゴリはすべてのpluralメッセージで必須です。他のカテゴリがマッチしない場合のデフォルトフォールバックとして機能します。省略すると、ほとんどのICU実装でランタイムエラーが発生します。
ユースケース
英語以外の言語(特にアラビア語、ロシア語、ポーランド語などの複雑な複数形ルールを持つ言語)の複数形を正しく処理する必要がある、多言語対応を実装するアプリケーション開発者。