我在PHP中使用MessageFormat(intl
擴展的一部分)。該擴展使用ICU 4.6.1。使用select with messageformat
但是,問題不在於PHP。
我想通過使第一令牌{0}
決定格式化繩子:
- 當
{0}
爲0
,文本應該是a
- 當它是
1
,案文應是b
- 對於所有其他情況下,文本應該是
c
我知道這可以通過plural
,=0
對於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}}
這是正確的做法 – 2012-07-28 04:52:32
雖然這聽起來像濫用複數。翻譯者不會想知道地球上究竟發生了什麼嗎? – Trejkaz 2014-07-15 04:18:16