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};