Plural Localization フォーマッター
言語によって、名詞や単位表現の複数形 ("hour" と "hours" など) の扱い方は異なります。 英語のように 2 つの形式がある言語もあれば、形式が 1 つしかない言語も、3 つ以上ある言語もあります。Plural Localization Formatter (Plural Localization フォーマッター) は、Unicode の Common Locale Data Repository (共通ロケールデータリポジトリ) (CLDR) の方式に従って複数形を処理します。
CLDR では、以下の複数形のカテゴリに、短いニーモニックタグが使用されます。
- zero
- one (単一)
- two (双数)
- few (小数)
- many (別のクラスがある場合は分数にも使用される)
- other (必須 - 一般的な複数形 - 形式が 1 つしかない言語の場合にも使用される)
Plural Localization フォーマッターは、異なるテキストの選択にあたって 基数詞の 複数形化規則をサポートしています。ロケール毎の 複数形化の規則 の完全なリストは こちら に提供されています。
Plural Localization フォーマッターは、Smart String が属する String Table のロケールを使用して、適用する複数形化規則を決定します。ロケールは Format Option でオーバーライドできます。例えば English (英語) を強制するには、Format Option に (en) を設定します。: {0:plural(en):is 1 item|are {} items}
ノート: プレースホルダー {} は、現在の値を用いるための簡潔表現として使用できます。
ノート: Plural フォーマッターは IEnumerable の値に対して使用することができます。この場合、IEnumerable カウントの Count が plural の値として使用されます。
| Smart String の例 | 引数 | 結果 |
|---|---|---|
| I have {0:plural:an apple|{} apples} | English Locale: 10 |
I have 10 apples |
| {0} {0:банан|банана|бананов} | Russian Locale: 1 |
1 баzнан |
| {0:p:{} manzana|{} manzanas} | Spanish Locale: 2 |
2 Manzanas |
| The following {0:plural:person is|people are} impressed: {0:list:{}|, |, and}. | |
The following people are impressed: bob, and alice. |
|
The following person is impressed: Mohamed. |