ICU Selectordinalでランキングと序数を表現

ICU selectordinalを使用して序数(1st、2nd、3rd)を言語間で正しくフォーマット。英語の序数接尾辞と言語固有の序数ルールをカバー。

Plural & Select

詳細な説明

ICU Selectordinalによる序数

selectordinal引数型は序数(位置や順位を示す数字:1st、2nd、3rd、4th等)のフォーマットを処理します。pluralと同様にCLDRルールを使用しますが、基数ではなく序数に対してです。

基本的な英語の序数

You finished in {place, selectordinal,
    one {#st}
    two {#nd}
    few {#rd}
    other {#th}
} place!

結果:

  • place=1 -> "You finished in 1st place!"
  • place=2 -> "You finished in 2nd place!"
  • place=3 -> "You finished in 3rd place!"
  • place=4 -> "You finished in 4th place!"
  • place=11 -> "You finished in 11th place!"(11stではない)
  • place=21 -> "You finished in 21st place!"

英語の序数ルール

英語の序数カテゴリは下位桁で決定されます:

カテゴリ 数値 接尾辞
one 1, 21, 31, 41, ...(11は除く) -st
two 2, 22, 32, 42, ...(12は除く) -nd
few 3, 23, 33, 43, ...(13は除く) -rd
other 0, 4-20, 24-30, 11, 12, 13, ... -th

他の言語での序数

多くの言語はよりシンプルな序数システムを持ちます:

フランス語 -- oneとotherのみ使用:

{place, selectordinal,
    one {#er}
    other {#e}
}

コンテキストとの組み合わせ

{name} finished {place, selectordinal,
    one {#st}
    two {#nd}
    few {#rd}
    other {#th}
} in the {eventName}.

正確な値マッチオーバーライド

pluralと同様に、正確な値に=Nを使用できます:

{place, selectordinal,
    =1 {gold medal}
    =2 {silver medal}
    =3 {bronze medal}
    other {#th place}
}

ユースケース

リーダーボード、ランキング、コンペティション、または複数の言語で正しくレンダリングする必要がある位置を示す数値(1位、2番目に高いスコア)を表示する機能を構築する開発者。

試してみる — ICU Message Format Tester

フルツールを開く