UNPKG

eunomia-controller

Version:

31 lines (26 loc) 1.25 kB
import { addLocaleData } from 'react-intl'; // Boiler Plate Reduction for the i18n module.exports = (DEFAULT_LOCALE, locales) => { locales.map(locale => addLocaleData(locale.reactLocale)) const appLocales = locales.map(locale => locale.locale) const formatTranslationMessages = (locale, messages) => { const selectedLocale = locales.filter(locale => locale.fallback === true)[0] const defaultFormattedMessages = locale !== DEFAULT_LOCALE ? formatTranslationMessages(DEFAULT_LOCALE, (typeof selectedLocale === 'undefined' ? locales[0] : selectedLocale).messages) : {}; return Object.keys(messages).reduce((formattedMessages, key) => { const formattedMessage = !messages[key] && locale !== DEFAULT_LOCALE ? defaultFormattedMessages[key] : messages[key]; return Object.assign(formattedMessages, { [key]: formattedMessage }); }, {}); } const translationMessages = () => locales.map(locale => ({ [locale.locale]: formatTranslationMessages(locale.locale, locale.messages) })).reduce((obj, value) => { Object.assign(obj, value); return obj }, {}) return { appLocales: appLocales, formatTranslationMessages: formatTranslationMessages, translationMessages: translationMessages } }