/** * Created by Bruno Grieder and Christian Droulers * Updated by Fedor Nezhivoi */ import * as React from "react" 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" }); const formattedHTMLMessage = formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); return (
); }); class SomeComponent extends React.Component { static propTypes: React.ValidationMap = { intl: intlShape.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 formattedHTMLMessage = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); return
p

}} tagName="div" /> {(formattedNum: string) => ( {formattedNum} )}
} } 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 ( ); } } const intlProvider = new IntlProvider({ locale: 'en' }, {}); const { intl } = intlProvider.getChildContext(); const wrappedComponent = export default { TestApp, SomeComponent: SomeComponentWithIntl }