UNPKG

eunomia-controller

Version:

40 lines (35 loc) 1.71 kB
'use strict'; var _reactIntl = require('react-intl'); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // Boiler Plate Reduction for the i18n module.exports = function (DEFAULT_LOCALE, locales) { locales.map(function (locale) { return (0, _reactIntl.addLocaleData)(locale.reactLocale); }); var appLocales = locales.map(function (locale) { return locale.locale; }); var formatTranslationMessages = function formatTranslationMessages(locale, messages) { var selectedLocale = locales.filter(function (locale) { return locale.fallback === true; })[0]; var defaultFormattedMessages = locale !== DEFAULT_LOCALE ? formatTranslationMessages(DEFAULT_LOCALE, (typeof selectedLocale === 'undefined' ? locales[0] : selectedLocale).messages) : {}; return Object.keys(messages).reduce(function (formattedMessages, key) { var formattedMessage = !messages[key] && locale !== DEFAULT_LOCALE ? defaultFormattedMessages[key] : messages[key]; return Object.assign(formattedMessages, _defineProperty({}, key, formattedMessage)); }, {}); }; var translationMessages = function translationMessages() { return locales.map(function (locale) { return _defineProperty({}, locale.locale, formatTranslationMessages(locale.locale, locale.messages)); }).reduce(function (obj, value) { Object.assign(obj, value); return obj; }, {}); }; return { appLocales: appLocales, formatTranslationMessages: formatTranslationMessages, translationMessages: translationMessages }; };