FormatJS / React-intl 中的 If/else

Car*_*ton 4 reactjs formatjs react-intl

FormatJS 消息中是否可以有 if/else?

例子

我有一个布尔变量isDay,它应该确定显示什么消息。当true我想显示“Day”一词时以及当false我想显示Night.

// message string
message = "Day";

// React component
<FormattedMessage
 id="message"
 values={{isDay: true}}
/>

Run Code Online (Sandbox Code Playgroud)

我希望能够做类似的事情:

message = "{if isDay}Day{else}Night{endif}";
Run Code Online (Sandbox Code Playgroud)

我知道上面不是实际的语法,但想知道FormatJS是否可以实现类似的功能?

Car*_*ton 7

找到了使用 ICU 消息选择语法的解决方案。

message = "{isDay, select, true {Day} other {Night}}";
Run Code Online (Sandbox Code Playgroud)

  • 看来“其他”是必需的。https://formatjs.io/docs/core-concepts/icu-syntax/#select-format (2认同)