clientjs/packages/dashboard-components/src/intl.jsx
author ymh <ymh.work@gmail.com>
Thu, 20 Sep 2018 17:51:15 +0200
changeset 11 37ecf0b9c174
permissions -rw-r--r--
Add Nextleap dashboard
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
import React from 'react';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
import _ from 'lodash';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
import { addLocaleData, IntlProvider } from 'react-intl';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
import messagesBase from './locales/messages.json';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
export default function setIntl(messagesDataExt, WrappedComponent, localeData) {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
  const messagesData = _.merge(_.cloneDeep(messagesBase), messagesDataExt || {});
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
  addLocaleData(localeData);
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
  let language = (navigator.languages && navigator.languages[0])
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    || navigator.language
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    || navigator.userLanguage;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  let language6391 = language.toLowerCase().split(/[_-]+/)[0];
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
  if (!(language6391 in messagesData)) {
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    language = 'en';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    language6391 = 'en';
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
  }
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
  const messages = messagesData[language6391] || messagesData[language] || messagesData.en;
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
  return props => (
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    <IntlProvider
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
      locale={language}
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
      messages={messages}
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    >
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      <WrappedComponent {...props} />
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    </IntlProvider>
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
  );
37ecf0b9c174 Add Nextleap dashboard
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
}