js/i18n.js -> js/modules/i18n.js

This commit is contained in:
Scott Nonnenberg 2018-04-05 12:51:29 -07:00
parent e5322e8261
commit 76be13552f
No known key found for this signature in database
GPG key ID: 5F82280C35134661
5 changed files with 2 additions and 4 deletions

36
js/modules/i18n.js Normal file
View file

@ -0,0 +1,36 @@
/* eslint-env node */
'use strict';
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 entry = messages[key];
if (!entry) {
console.error(`i18n: Attempted to get translation for nonexistent key '${key}'`);
return '';
}
const { message } = entry;
if (Array.isArray(substitutions)) {
return substitutions.reduce(
(result, substitution) => result.replace(/\$.+?\$/, substitution),
message
);
} else if (substitutions) {
return message.replace(/\$.+?\$/, substitutions);
}
return message;
}
getMessage.getLocale = () => locale;
return getMessage;
};