UNPKG

ts-transform-react-intl

Version:

Extracts string messages for translation from modules that use React Intl.

46 lines (45 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Aggregate messages, inline modify msgs * * @export * @param {Messages} msgs messages map to aggregate to * @returns {Extractor} extractor fn */ function aggregate(msgs) { const defaultMessages = Object.keys(msgs).reduce((all, k) => { all[msgs[k].defaultMessage] = msgs[k]; return all; }, {}); return (msgId, msg) => { const { id, description, defaultMessage } = msg; // Throw an error if we have messages with the same ID but different // description & defaultMessage if (msgs[id] && (msgs[id].description !== msg.description || msgs[id].defaultMessage !== msg.defaultMessage)) { console.error(` --- [ERR] Translation key ${msgId} already exists --- Description: "${msgs[id].description}" vs "${description}" Default Message: "${msgs[id].defaultMessage}" vs "${defaultMessage}" `); return process.exit(1); } // Warn if we have 2 messages with the same defaultMessage, // but different ID/description // For ex: Close can be Close Price or Close button if (defaultMessages[defaultMessage] && (defaultMessages[defaultMessage].description !== msg.description || defaultMessages[defaultMessage].id !== msg.id)) { console.warn(` --- [WARN]: Default Message ${defaultMessage} already exists --- Description: "${defaultMessages[defaultMessage].description}" vs "${description}" ID: "${defaultMessages[defaultMessage].id}" vs "${id}" `); } msgs[msgId] = msg; defaultMessages[defaultMessage] = msg; }; } exports.aggregate = aggregate;