From 0fe9a7ba45fb9e27768dac5ee04d9e4e42de4ced Mon Sep 17 00:00:00 2001 From: chrisgarrity <chrisg@media.mit.edu> Date: Fri, 21 Jul 2017 11:46:13 -0400 Subject: [PATCH] localeData cleanup move all locale data (react-intl/locale-data and gui messages) into locale.js. This also makes switching to an external node package easier because the package just needs to export the same thing as locale.js. --- scripts/generate-locale-messages.js | 3 +-- .../language-selector/language-selector.jsx | 4 ++-- src/languages.json | 5 ---- src/locale.js | 23 +++++++++++++++++++ src/reducers/intl.js | 13 +++++------ 5 files changed, 32 insertions(+), 16 deletions(-) delete mode 100644 src/languages.json create mode 100644 src/locale.js diff --git a/scripts/generate-locale-messages.js b/scripts/generate-locale-messages.js index 6534d25e2..fb6bf359a 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 febf81645..81f2b596d 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 f621c71d7..000000000 --- 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 000000000..ad3fcff79 --- /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 5117801cb..51bce5e56 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 { -- GitLab