export enum Lang {
  da = "da",
  de = "de",
  en = "en",
  fi = "fi",
  no = "no",
  sv = "sv",
}

export const languages: Record<Lang, string> = {
  [Lang.da]: "Dansk",
  [Lang.de]: "Deutsch",
  [Lang.en]: "English",
  [Lang.fi]: "Suomi",
  [Lang.no]: "Norsk",
  [Lang.sv]: "Svenska",
}

export const localeToLang: Record<string, Lang> = {
  en: Lang.en,
  "en-US": Lang.en,
  "en-GB": Lang.en,
  "en-DE": Lang.en,
  "en-DK": Lang.en,
  "en-SE": Lang.en,
  "en-FI": Lang.en,

  sv: Lang.sv,
  "se-SE": Lang.sv,
  "sv-SE": Lang.sv,
  "sv-FI": Lang.sv,

  fi: Lang.fi,
  "fi-FI": Lang.fi,
  "se-FI": Lang.fi,
  "smn-FI": Lang.fi,

  dk: Lang.da,
  da: Lang.da,
  "da-DK": Lang.da,
  "fo-DK": Lang.da,

  de: Lang.de,
  "de-DE": Lang.de,
  "dsb-DE": Lang.de,
  "ksh-DE": Lang.de,
  "nds-DE": Lang.de,
  "hsb-DE": Lang.de,
  "de-CH": Lang.de,
  "de-AU": Lang.de,

  no: Lang.no,
  nb: Lang.no,
  "nb-NO": Lang.no,
  "nn-NO": Lang.no,
  "se-NO": Lang.no,
} as const

export enum ApiLang {
  Da = "Da",
  De = "De",
  En = "En",
  Fi = "Fi",
  No = "No",
  Sv = "Sv",
  Unknown = "Unknown",
}

type ApiLangKey = keyof typeof ApiLang

export const langToApiLang: Record<Lang, ApiLangKey> = {
  [Lang.da]: ApiLang.Da,
  [Lang.de]: ApiLang.De,
  [Lang.en]: ApiLang.En,
  [Lang.fi]: ApiLang.Fi,
  [Lang.no]: ApiLang.No,
  [Lang.sv]: ApiLang.Sv,
}

export const languageSelect = [
  { label: "Danish", value: ApiLang.Da },
  { label: "German", value: ApiLang.De },
  { label: "English", value: ApiLang.En },
  { label: "Finnish", value: ApiLang.Fi },
  { label: "Norwegian", value: ApiLang.No },
  { label: "Swedish", value: ApiLang.Sv },
]
