1

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

<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]}}
/>

这是唯一的方法吗?

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

我正在v2使用react-intl.

4

1 回答 1

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}
}

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

于 2016-02-10T20:37:19.017 回答