如何在 intl.formatMessage 中使用占位符

Posted

技术标签:

【中文标题】如何在 intl.formatMessage 中使用占位符【英文标题】:How to use placeholder with intl.formatMessage 【发布时间】:2018-10-13 13:34:50 【问题描述】:

我正在尝试使用 react-intl 将本地化添加到我的应用程序中。像这样

<FormattedhtmlMessage id="marker.title" values=
        name: (b.name !== null ? b.name : "Bench"),
        seats: Tools.showValue(b.seats),
        material: Tools.showValue(b.material),
        color: Tools.getColorNameFromInt(b.color),
        lat: b.lat,
        lng: b.lng,
    />

但我需要一个字符串,所以我尝试了这个

const title = this.props.intl.formatMessage(
    id: "marker.title",
    values: 
        name: (b.name !== null ? b.name : "Bench"),
        seats: Tools.showValue(b.seats),
        material: Tools.showValue(b.material),
        color: Tools.getColorNameFromInt(b.color),
        lat: b.lat,
        lng: b.lng,
    
);

我收到以下错误消息:

Error: The intl string context variable 'name' was not provided to the string 'name<br/>Seats: seats<br/>Material: material<br/>Color: color<br/>Location: lat / lng'

en.json


  "marker.title": "name<br/>Seats: seats<br/>Material: material<br/>Color: color<br/>Location: lat / lng"

【问题讨论】:

【参考方案1】:

如果你这样做,它会起作用

this.props.intl.formatMessage(id: "marker.title", 
                name: (b.name !== null ? b.name : "Bench"),
                seats: Tools.showValue(b.seats, this.props.intl),
                material: Tools.showValue(b.material, this.props.intl),
                color: Tools.getColorNameFromInt(b.color, this.props.intl),
                lat: b.lat,
                lng: b.lng,
            );

希望当我再次陷入这个问题时,我能再次找到这个答案。

【讨论】:

以上是关于如何在 intl.formatMessage 中使用占位符的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-intl 组件/字符串国际化

如何在 JSF 2.0 中使会话无效?

如何在 TypeScript 中使装饰器类型安全?

如何在 Flutter 的 tabbarwiew 中使 webview 可滚动

如何在 SwiftUI 中使列表更宽?

如何在 RowsFragment 中使行的标题始终可见