equal
deleted
inserted
replaced
|
1 import React from 'react'; |
|
2 import _ from 'lodash'; |
|
3 |
|
4 import { addLocaleData, IntlProvider } from 'react-intl'; |
|
5 |
|
6 import messagesBase from './locales/messages.json'; |
|
7 |
|
8 export default function setIntl(messagesDataExt, WrappedComponent, localeData) { |
|
9 const messagesData = _.merge(_.cloneDeep(messagesBase), messagesDataExt || {}); |
|
10 |
|
11 addLocaleData(localeData); |
|
12 |
|
13 let language = (navigator.languages && navigator.languages[0]) |
|
14 || navigator.language |
|
15 || navigator.userLanguage; |
|
16 |
|
17 let language6391 = language.toLowerCase().split(/[_-]+/)[0]; |
|
18 |
|
19 if (!(language6391 in messagesData)) { |
|
20 language = 'en'; |
|
21 language6391 = 'en'; |
|
22 } |
|
23 |
|
24 const messages = messagesData[language6391] || messagesData[language] || messagesData.en; |
|
25 |
|
26 return props => ( |
|
27 <IntlProvider |
|
28 locale={language} |
|
29 messages={messages} |
|
30 > |
|
31 <WrappedComponent {...props} /> |
|
32 </IntlProvider> |
|
33 ); |
|
34 } |