我可以在我的应用程序中使用React-Intl的内置名称作为时间段吗?

时间:2016-01-19 12:32:11

标签: reactjs react-intl

假设我有一个这样的组件:

<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    defaultMessage="This {cycle}"
    values={{cycle: props.cycle}}
/>

因为我的示例中的props.cycle实际上是一个时间段,如dayweekmonth等,我需要在传递之前翻译该文本在FormattedMessage中。在翻译中进行此类翻译的正确方法是什么?

最好我能想到这个:

const intlPeriod = {
  day: intl.formatMessage({id: 'timePeriod.week', defaultMessage: 'day'}),
  week: intl.formatMessage({id: 'timePeriod.week', defaultMessage: 'week'}),
  month: intl.formatMessage({id: 'timePeriod.month', defaultMessage: 'month'}),
};

<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    defaultMessage="This {cycle}"
    values={{cycle: intlPeriod[cycle]}}
/>

这是唯一的方法吗?

我在react-intl的{​​-1}}的node-js包中看到,已经为lib\locale-data\[lang].jsday,{{1}定义了值有没有办法直接在我的应用程序中访问/使用这些字符串?

我正在使用week的{​​{1}}分支。

1 个答案:

答案 0 :(得分:1)

ui.widget.cycleOffsetSelector.timeCycle.label消息应该是这样的:

en-US

This {cycle, select,
    day {day}
    week {week}
    month {month}
}

es-US

{cycle, select,
    day {Este día}
    week {Esta semana}
    month {Este mes}
}

这允许西班牙语版本根据cycle的值在男性和女性Este / Etsa之间正确切换。