mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
5ff7c0742c
* Lint examples/with-apollo-and-redux-saga * Lint examples/with-apollo-auth * Lint examples/with-apollo * Lint exampels/with-google-analytics * Lint examples/with-higher-order-component * Lint examples/with-react-i18next * Lint exampels/with-redux * Lint exampels/with-relay-modern * Lint examples/with-universal-configuration-runtime * Add **/examples/**/lib/** to linter
29 lines
764 B
JavaScript
29 lines
764 B
JavaScript
import { translate, loadNamespaces } from 'react-i18next'
|
|
import { getInitialProps, I18n } from '../i18n'
|
|
|
|
export const withI18next = (namespaces = ['common']) => ComposedComponent => {
|
|
const Extended = translate(namespaces, { i18n: I18n, wait: process.browser })(
|
|
ComposedComponent
|
|
)
|
|
|
|
Extended.getInitialProps = async (ctx) => {
|
|
const composedInitialProps = ComposedComponent.getInitialProps
|
|
? await ComposedComponent.getInitialProps(ctx)
|
|
: {}
|
|
|
|
const i18nInitialProps = ctx.req
|
|
? getInitialProps(ctx.req, namespaces)
|
|
: await loadNamespaces({
|
|
components: [{ props: { namespaces } }],
|
|
i18n: I18n
|
|
})
|
|
|
|
return {
|
|
...composedInitialProps,
|
|
...i18nInitialProps
|
|
}
|
|
}
|
|
|
|
return Extended
|
|
}
|