// DO NOT EDIT. This file is auto-generated using Localicious (https://github.com/PicnicSupermarket/localicious).

{{#languages}}
import {{.}} from "./{{.}}/strings.json";
{{/languages}}

type LanguageStrings ={{#languages}} | typeof {{.}}{{/languages}};

type Language ={{#languages}} | "{{.}}"{{/languages}};

type EnumDictionary<T extends string | symbol | number, U> = {
  [K in T]: U;
};

export type TranslationKey = keyof LanguageStrings;

const strings: EnumDictionary<Language, LanguageStrings> = {
  {{#languages}}
  {{.}}: {{.}},
  {{/languages}}
};

const format = (string: string, ...args: string[]) => {
  let result = string;
  for (let i = 0; i < args.length; i++) {
    const pos = i + 1;
    if (typeof args[i] === "string") {
      result = result.replace("%" + pos + "$s", args[i]);
    }
    if (typeof args[i] === "number") {
      result = result.replace("%" + pos + "$d", args[i]);
    }
  }
  return result;
};

export const translation = (
  language: Language,
  key: TranslationKey,
  ...args: string[]
): string | undefined => {
  // Check if translation exists.
  if (!(language in strings) && !(key in strings[language])) {
    return undefined;
  }
  return format(strings[language][key], ...args);
};
