eunomia-controller
Version:
40 lines (35 loc) • 1.71 kB
JavaScript
;
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
};
};