diff --git a/scripts/generate-locale-messages.js b/scripts/generate-locale-messages.js index 6534d25e276fb98afc3d297c4a0893127336aad9..fb6bf359a23db0c4dc583476fc18896befe8683a 100755 --- a/scripts/generate-locale-messages.js +++ b/scripts/generate-locale-messages.js @@ -42,12 +42,11 @@ Missing locales are ignored, react-intl will use the default messages for them. const fs = require('fs'); const path = require('path'); const mkdirp = require('mkdirp'); -const languages = require('../src/languages.json'); +const locales = ['en', 'es', 'fr']; const LANG_DIR = './translations/'; const MSGS_DIR = './locale/'; -const locales = Object.keys(languages); let messages = locales.reduce((collection, lang) => { let langMessages = {}; try { diff --git a/src/components/language-selector/language-selector.jsx b/src/components/language-selector/language-selector.jsx index febf81645f75c9c86308fad77fe4571340799669..81f2b596d1649b45791d9088414f64187008772c 100644 --- a/src/components/language-selector/language-selector.jsx +++ b/src/components/language-selector/language-selector.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import Box from '../box/box.jsx'; -import languages from '../../languages.json'; +import languages from '../../locale.js'; import languageIcon from './language-icon.svg'; import styles from './language-selector.css'; @@ -27,7 +27,7 @@ const LanguageSelector = ({ key={locale} value={locale} > - {languages[locale]} + {languages[locale].name} </option> ))} </select> diff --git a/src/languages.json b/src/languages.json deleted file mode 100644 index f621c71d7083cf9b76b3a081aeebc5b5afba929a..0000000000000000000000000000000000000000 --- a/src/languages.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "en": "English", - "es": "Español", - "fr": "Français" -} diff --git a/src/locale.js b/src/locale.js new file mode 100644 index 0000000000000000000000000000000000000000..ad3fcff79710fa84116934935a5953d9f83119f3 --- /dev/null +++ b/src/locale.js @@ -0,0 +1,23 @@ +import localeDataEn from 'react-intl/locale-data/en'; +import localeDataEs from 'react-intl/locale-data/es'; +import localeDataFr from 'react-intl/locale-data/fr'; + +import messages from '../locale/messages.json'; // eslint-disable-line import/no-unresolved + +export default { + en: { + name: 'English', + localeData: localeDataEn, + messages: messages.en + }, + es: { + name: 'Español', + localeData: localeDataEs, + messages: messages.es + }, + fr: { + name: 'Français', + localeData: localeDataFr, + messages: messages.fr + } +}; diff --git a/src/reducers/intl.js b/src/reducers/intl.js index 5117801cb140d193235c17f26f14e15c8541e2f0..51bce5e56350756287d12bf9273f2b2e1edf5ba8 100644 --- a/src/reducers/intl.js +++ b/src/reducers/intl.js @@ -1,26 +1,25 @@ import {addLocaleData} from 'react-intl'; import {updateIntl as superUpdateIntl} from 'react-intl-redux'; -import languages from '../languages.json'; -import messages from '../../locale/messages.json'; // eslint-disable-line import/no-unresolved - import {IntlProvider, intlReducer} from 'react-intl-redux'; -Object.keys(languages).forEach(locale => { +import locales from '../locale.js'; + +Object.keys(locales).forEach(locale => { // TODO: will need to handle locales not in the default intl - see www/custom-locales - import(`react-intl/locale-data/${locale}`).then(data => addLocaleData(data)); + addLocaleData(locales[locale].localeData); }); const intlInitialState = { intl: { defaultLocale: 'en', locale: 'en', - messages: messages.en + messages: locales.en.messages } }; const updateIntl = locale => superUpdateIntl({ locale: locale, - messages: messages[locale] || messages.en + messages: locales[locale].messages || locales.en.messages }); export {