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実装でランタイムエラーが発生します。

ユースケース

英語以外の言語(特にアラビア語、ロシア語、ポーランド語などの複雑な複数形ルールを持つ言語)の複数形を正しく処理する必要がある、多言語対応を実装するアプリケーション開発者。

試してみる — ICU Message Format Tester

フルツールを開く