假设我有一个这样的组件:
<FormattedMessage
id='ui.widget.cycleOffsetSelector.timeCycle.label'
defaultMessage="This {cycle}"
values={{cycle: props.cycle}}
/>
因为我的示例中的props.cycle
实际上是一个时间段,如day
,week
,month
等,我需要在传递之前翻译该文本在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].js
,day
,{{1}定义了值有没有办法直接在我的应用程序中访问/使用这些字符串?
我正在使用week
的{{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之间正确切换。