js/i18n.js -> js/modules/i18n.js
This commit is contained in:
parent
e5322e8261
commit
76be13552f
5 changed files with 2 additions and 4 deletions
36
js/modules/i18n.js
Normal file
36
js/modules/i18n.js
Normal 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;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue