/** * Created by Bruno Grieder and Christian Droulers */ /// /// /// import * as React from "react" import * as reactMixin from "react-mixin" import { IntlProvider, InjectedIntlProps, 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 extends InjectedIntlProps { } class SomeComponent extends React.Component { static propTypes: React.ValidationMap = { intl: intlShape.isRequired }; public render(): React.ReactElement<{}> { const formattedDate = this.props.formatDate(new Date(), { format: "short" }); const formattedTime = this.props.formatTime(new Date(), { format: "short" }); const formattedRelative = this.props.formatRelative(new Date().getTime(), { format: "short" }); const formattedNumber = this.props.formatNumber(123, { format: "short" }); const formattedPlural = this.props.formatPlural(1, { one: "hai!" }); const formattedMessage = this.props.formatMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); const formattedHTMLMessage = this.props.formatHTMLMessage({ id: "hello", defaultMessage: "Hello {name}!" }, { name: "Roger" }); return
{(formattedNum: string) => ( {formattedNum} ) }
} } 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: injectIntl(SomeComponent) }