首页 > 解决方案 > React Intl,如何在消息中添加数字?

问题描述

我有一个en.json文件如下:

{
    "doorClosing": {
      "defaultMessage": "Doors closing",
      "description": "Elevator doors are being closed"
    },
    "floorSelected": {
      "defaultMessage": "Floor selected: {floorSelected}",
      "description": "`The floor ${lift.floorSelected} has been selected`"
    },
    "floorSelectedInvalid": {
      "defaultMessage": "Invalid floor",
      "description": "The selected floor is not valid"
    },
    "idle": {
      "defaultMessage": "",
      "description": ""
    },
    "init": {
      "defaultMessage": "Initialisation",
      "description": "The system is being initialized"
    },
    "liftMoving": {
      "defaultMessage": "Elevator moving",
      "description": "Elevator is being moved to the floor selected"
    }
}

然后在代码的后面,我使用let dashboardMsg = intl.formatMessage({id:msg});where msg 是 json 文件中包含的键之一。
关于 key floorSelected,当我使用它时,它${lift.floorSelected}不会被此变量中包含的数字转换。
怎么了?还有其他方法还是我必须手动执行?

标签: reactjsreact-intl

解决方案


您可以通过valuesprop 传递变量:

"floorSelected": {
  "id": "selected.floor",
  "defaultMessage": "Floor selected: {floorSelected}",
}

//...

let dashboardMsg = intl.formatMessage({id:msg, values: {floorSelected: 5})

不确定这是否适用于描述。


推荐阅读