在rails上反应/ react intl

我试图按照本指南为rails/react_on_rails项目实现i18n; https://github.com/shakacode/react_on_rails/blob/master/docs/basics/i18n.md在rails上反应/ react intl

我得到 “FORMATMESSAGE没有定义” 的错误,所以我可能失去了一些东西,这是我的代码:

import PropTypes from 'prop-types'; 

import React from 'react';

import { IntlProvider } from 'react-intl';

import { addLocaleData } from 'react-intl';

import en from 'react-intl/locale-data/en';

import nb from 'react-intl/locale-data/nb';

import { translations } from '../../../libs/i18n/translations';

import { defaultLocale } from '../../../libs/i18n/default';

// Initizalize all locales for react-intl.

addLocaleData([...en, ...nb]);

// set locale and messages for IntlProvider.

// const locale = method_to_get_current_locale() || defaultLocale;

const locale = defaultLocale;

const messages = translations[locale];

import { defaultMessages } from '../../../libs/i18n/default';

export default class TextMessage extends React.Component {

render() {

return (

<IntlProvider locale={locale} key={locale} messages={messages}>

{ formatMessage(defaultMessages.ActionsYes) }

</IntlProvider>

);

}

}

回答:

你得到确切的错误消息:

FORMATMESSAGE没有定义

我一直在使用react-intl所以我相信你需要做的首先要注入intl对象。你可以在react-intl文档中阅读。试试这个:

import { IntlProvider, injectIntl } from 'react-intl'; 

...

class TextMessage extends React.Component {

render() {

return (

<IntlProvider locale={locale} key={locale} messages={messages}>

{ this.props.intl.formatMessage(defaultMessages.ActionsYes) }

</IntlProvider>

);

}

}

export default injectIntl(TextMessage);

我敢打赌,它会工作。这里

import { IntlProvider, FormattedMessage } from 'react-intl'; 

...

export default class TextMessage extends React.Component {

render() {

return (

<IntlProvider locale={locale} key={locale} messages={messages}>

<FormattedMessage {...defaultMessages.ActionsYes} />

</IntlProvider>

);

}

}

以上是 在rails上反应/ react intl 的全部内容, 来源链接: utcz.com/qa/265689.html

回到顶部