106 private locale:
string =
vscode.env.language.toLowerCase();
109 private messageNotFound:
string =
"messageNotFound";
123 private getFirstAvailableLanguageNode(): Record<
string, (...args: any[]) =>
string> {
124 const langs = Object.keys(this.
messages);
125 if (langs.length === 0) {
126 throw new Error(
"No messages available.");
144 private returnCorrectMessage(
145 node: Record<
string, (...args: any[]) =>
string>,
149 if (node[messageKey] === undefined) {
150 return node[this.messageNotFound](messageKey, ...args);
152 return node[messageKey](...args);
170 public get(messageKey:
string, options: { language:
string }, ...args: any[]):
string;
187 public get(messageKey:
string, optionsOrArg?: { language:
string } | any, ...args: any[]):
string {
189 let finalArgs: any[];
191 if (optionsOrArg && typeof optionsOrArg ===
'object' &&
'language' in optionsOrArg) {
192 lang = optionsOrArg.language;
197 if (optionsOrArg !== undefined) {
198 finalArgs = [optionsOrArg, ...args];
202 const node = this.
messages[lang] || this.
messages[
'en'] || this.getFirstAvailableLanguageNode();
203 return this.returnCorrectMessage(node, messageKey, ...finalArgs);