2018-12-17 16:34:32 +00:00
|
|
|
import Document, { Head, Main, NextScript } from 'next/document'
|
2017-02-24 21:45:18 +00:00
|
|
|
|
|
|
|
// The document (which is SSR-only) needs to be customized to expose the locale
|
|
|
|
// data for the user's locale for React Intl to work in the browser.
|
|
|
|
export default class IntlDocument extends Document {
|
|
|
|
static async getInitialProps (context) {
|
|
|
|
const props = await super.getInitialProps(context)
|
2018-12-17 16:34:32 +00:00
|
|
|
const {
|
|
|
|
req: { locale, localeDataScript }
|
|
|
|
} = context
|
2017-02-24 21:45:18 +00:00
|
|
|
return {
|
|
|
|
...props,
|
2017-06-16 10:30:35 +00:00
|
|
|
locale,
|
2017-02-24 21:45:18 +00:00
|
|
|
localeDataScript
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
render () {
|
2017-06-16 10:30:35 +00:00
|
|
|
// Polyfill Intl API for older browsers
|
2018-12-17 16:34:32 +00:00
|
|
|
const polyfill = `https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.${
|
|
|
|
this.props.locale
|
|
|
|
}`
|
2017-06-16 10:30:35 +00:00
|
|
|
|
2017-02-24 21:45:18 +00:00
|
|
|
return (
|
|
|
|
<html>
|
|
|
|
<Head />
|
|
|
|
<body>
|
|
|
|
<Main />
|
2017-06-16 10:30:35 +00:00
|
|
|
<script src={polyfill} />
|
2017-02-24 21:45:18 +00:00
|
|
|
<script
|
|
|
|
dangerouslySetInnerHTML={{
|
|
|
|
__html: this.props.localeDataScript
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
<NextScript />
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|