/** * Created by Bruno Grieder and Christian Droulers * Updated by Fedor Nezhivoi */ import * as React from "react"; import * as PropTypes from "prop-types"; import * as reactMixin from "react-mixin"; import { IntlProvider, InjectedIntl, InjectedIntlProps, addLocaleData, injectIntl, intlShape, defineMessages, FormattedRelative, FormattedMessage, FormattedHTMLMessage, FormattedNumber, FormattedPlural, FormattedDate, FormattedTime } from "react-intl"; import reactIntlEn = require("react-intl/locale-data/en"); addLocaleData(reactIntlEn); interface SomeComponentProps { className: string; } const SomeFunctionalComponentWithIntl: React.ComponentClass = injectIntl(({ intl: { formatDate, formatHTMLMessage, formatNumber, formatMessage, formatPlural, formatRelative, formatTime, locale, defaultLocale }, className }) => { const formattedDate = formatDate(new Date(), { format: "short" }); const formattedTime = formatTime(new Date(), { format: "short" }); const formattedRelative = formatRelative(new Date().getTime(), { format: "short" }); const formattedNumber = formatNumber(123, { format: "short" }); const formattedPlural = formatPlural(1, { style: "ordinal" }); const formattedMessage = formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger", nullAllowed: null, undefinedAllowed: undefined }); const formattedMessagePlurals = formatMessage({ id: "hello", defaultMessage: "Hello {name} you have {unreadCount, number} {unreadCount, plural, one {message} other {messages}}!" }, { name: "Roger", unreadCount: 123 }); const formattedHTMLMessage = formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger", nullAllowed: null, undefinedAllowed: undefined }); return (
); }); class SomeComponent extends React.Component { static propTypes: React.ValidationMap = { intl: intlShape.isRequired, className: PropTypes.string.isRequired }; render(): React.ReactElement<{}> { const intl = this.props.intl; const formattedDate = intl.formatDate(new Date(), { format: "short" }); const formattedTime = intl.formatTime(new Date(), { format: "short" }); const formattedRelative = intl.formatRelative(new Date().getTime(), { format: "short" }); const formattedNumber = intl.formatNumber(123, { format: "short" }); const formattedPlural = intl.formatPlural(1, { style: "ordinal" }); const formattedMessage = intl.formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); const formattedMessageNumber = intl.formatMessage({ id: "hello", defaultMessage: "Hello {num}!" }, { num: 1 }); const formattedMessageDate = intl.formatMessage({ id: "hello", defaultMessage: "Hello {date}!" }, { date: new Date() }); const formattedMessageBool = intl.formatMessage({ id: "hello", defaultMessage: "Hello {bool}!" }, { bool: true }); const formattedMessagePlurals = intl.formatMessage({ id: "hello", defaultMessage: "Hello {name} you have {unreadCount, number} {unreadCount, plural, one {message} other {messages}}!" }, { name: "Roger", unreadCount: 123 }); const formattedHTMLMessage = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); const formattedHTMLMessageNumber = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {num}!" }, { num: 1 }); const formattedHTMLMessageDate = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {date}!" }, { date: new Date() }); const formattedHTMLMessageBool = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {bool}!" }, { bool: true }); return
{formattedRelative => formattedRelative.toUpperCase()} p

}} tagName="div" />
{children}
} /> {(text) =>
{text}
}
{(text) => } {(...text) =>
    {text.map(t =>
  • {t}
  • )}
}
), terms_of_service: ( ) }} > {(...messages) => messages.map(message => <>{message})} {formattedNum => ( {formattedNum} )} {formattedPlural => ( {formattedPlural} )} {formattedDate => formattedDate.toUpperCase()} {formattedTime => formattedTime.toUpperCase()}
; } } const SomeComponentWithIntl = injectIntl(SomeComponent); class TestApp extends React.Component { render(): React.ReactElement<{}> { const definedMessages = defineMessages({ sup: { id: "sup", defaultMessage: "Hai mom" } }); const messages = { hello: "Hello, {name}!" }; return ( console.error(error)} > ); } } const intlProvider = new IntlProvider({ locale: 'en' }, {}); const { intl } = intlProvider.getChildContext(); const wrappedComponent = ; export default { TestApp, SomeComponent: SomeComponentWithIntl };