/* eslint-env node */ /* global log */ exports.setup = (locale, messages) => { if (!locale) { throw new Error('i18n: locale parameter is required'); } if (!messages) { throw new Error('i18n: messages parameter is required'); } function getMessage(key, substitutions) { const message = messages[key]; if (!message) { log.error(`i18n: Attempted to get translation for nonexistent key '${key}'`); return ''; } if (Array.isArray(substitutions)) { const replacedNameDollarSign = message.replaceAll('$', 'ᅲ'); const substituted = substitutions.reduce( (result, substitution) => result.replace(/ᅲ.+?ᅲ/, substitution), replacedNameDollarSign ); return substituted.replaceAll('ᅲ', '$'); } else if (substitutions) { return message.replace(/\$.+?\$/, substitutions); } return message; } getMessage.getLocale = () => locale; return getMessage; };