clientjs/packages/dashboard-components/src/intl.jsx
changeset 11 37ecf0b9c174
equal deleted inserted replaced
10:28971cf04a91 11:37ecf0b9c174
       
     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 }