/** * 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, addLocaleData, hasLocaleData, injectIntl, intlShape, defineMessages, FormattedRelative, FormattedMessage, FormattedHTMLMessage, FormattedNumber, FormattedPlural, FormattedDate, FormattedTime } from "react-intl" import reactIntlEn = require("react-intl/locale-data/en"); addLocaleData(reactIntlEn); console.log(hasLocaleData("en")); interface SomeComponentProps { className: string, intl?: InjectedIntl } class SomeComponent extends React.Component { static propTypes: React.ValidationMap = { intl: intlShape.isRequired }; public 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, { one: "hai!" }); const formattedMessage = intl.formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); const formattedHTMLMessage = intl.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); return
{(formattedNum: string) => ( {formattedNum} )}
} } const SomeComponentWithIntl = injectIntl(SomeComponent); class TestApp extends React.Component<{}, {}> { public render(): React.ReactElement<{}> { const definedMessages = defineMessages({ "sup": { id: "sup", defaultMessage: "Hai mom" } }); const messages = { "hello": "Hello, {name}!" }; return ( ); } } export default { TestApp, SomeComponent: SomeComponentWithIntl }