File size: 1,106 Bytes
970fc3e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import patterns from './language/intent-patterns.json' with {type: 'json'};
import entityAliases from './language/entity-labels.json' with {type: 'json'};
import legacyMessages from './language/legacy-ui.json' with {type: 'json'};
import numberWords from './language/number-words.json' with {type: 'json'};
import termWords from './language/terms.json' with {type: 'json'};
import replies from './language/replies.json' with {type: 'json'};
function languagePattern(id) {
const pattern = patterns[id];
if (!pattern) throw Error(`Unknown language pattern: ${id}`);
return new RegExp(pattern.source, pattern.flags);
}
function formatText(template, values = []) {
return template.replace(/\{(\d+)\}/g, (_, index) => String(values[Number(index)] ?? ''));
}
function localizedReply(id, language, values = []) {
const template = replies[language]?.[id] ?? replies.en[id];
if (template === undefined) throw Error(`Unknown reply template: ${id}`);
return formatText(template, values);
}
export {languagePattern, formatText, localizedReply, entityAliases, legacyMessages, numberWords, termWords};
|