来自<formattedmessage>

时间:2018-05-08 07:22:57

标签: javascript reactjs internationalization react-intl

我正在使用i18n开展我的第一个项目,并且我遇到了这个问题。我的客户想要一个导航栏,文本根据当前查看的部分进行扩展。像这样:

navigation bar

navigation bar

因此对于每个标签我都使用如下的FormattedMessages:

<FormattedMessage id="navigation.what"/>
<FormattedMessage id="navigation.how"/>

我从.json文件中获取所有字符串。

现在我在想 - 你知道是否有任何方法可以在FormattedMessage上使用.substring?

这种方法是否有意义,或者我应该在.json中使用不同的字符串来扩展和缩短标签并完成它?

1 个答案:

答案 0 :(得分:1)

<FormattedMessage id="navigation.what"/>组件将始终返回范围。要从react-intl获取字符串,您应该使用formatMessage()函数。您可以像使用它一样使用它:

使用injectIntl高阶组件注入Intl:

import { injectIntl } from 'react-intl';

@injectIntl
class YourComponent extends Component {
...
render () {
...
  const {formatMessage} = this.props.intl;
...
  <span>{formatMessage(navigation.how).substring()}</span>

通过此功能获取更多详细信息: formatMessage()

Usage example