rsnext/examples/with-lingui/components/withLang.js
2019-02-21 12:53:02 +01:00

28 lines
728 B
JavaScript

import React from 'react'
import { I18nProvider } from '@lingui/react'
export default (Component, defaultLang = 'en') => class WithLang extends React.Component {
static async getInitialProps (ctx) {
const language = ctx.query.lang || defaultLang
const [props, catalog] = await Promise.all([
Component.getInitialProps ? Component.getInitialProps(ctx) : {},
import(`../locale/${language}/messages.po`).then(m => m.default)
])
return {
...props,
language,
catalogs: {
[language]: catalog
}
}
}
render () {
return (
<I18nProvider language={this.props.language} catalogs={this.props.catalogs}>
<Component />
</I18nProvider>
)
}
}