PHP でMessageFormat (intl
拡張機能の一部)を使用しています。拡張機能は ICU 4.6.1 を使用します。
ただし、問題は PHP にはありません。
最初のトークンを決定して、文字列の一部をフォーマットしたいと思います{0}
。
{0}
がの場合0
、テキストはa
- の場合
1
、テキストはb
- 他のすべてのケースでは、テキストは
c
plural
これは, =0
forケースで実行できることは理解してい0
ますが、私のテストではうまくいかないようです。これはおそらく、オフセットとカスタムの複数形が 4.8 で導入されたためです。
したがって、次を使用してそれを達成しようとしていselect
ます:
{0, select, 0 {a} other {{0,plural,one{b}other{c}}}}
しかし、何らかの理由で、メッセージ フォーマッタは上記をフォーマットできず、返されましたfalse
(フォーマットできませんでした)。
これはなぜですか?構文に問題はありますか?
クイック更新: 掘り下げた後、select を使用して数字で始まる値を一致させることはできないようです。これを回避する方法はありますか?
別の更新: ICU 49.1.2 およびintl
3.0.0a2 に更新されました。=0
、などを使用できるようになり=1
ましたが、これは機能しなくなりました (以前は機能していました):
{0}{0, plural, one{a} other{b}}
これが機能する場所:
{0, plural, one{a} other{b}}