export enum Lang { en = "en", sv = "sv", no = "no", fi = "fi", da = "da", de = "de", } export const languages: Record = { [Lang.da]: "Dansk", [Lang.de]: "Deutsch", [Lang.en]: "English", [Lang.fi]: "Suomi", [Lang.no]: "Norsk", [Lang.sv]: "Svenska", } export const localeToLang: Record = { 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 const languageSelect = [ { label: "Danish", value: "Da" }, { label: "German", value: "De" }, { label: "English", value: "En" }, { label: "Finnish", value: "Fi" }, { label: "Norwegian", value: "No" }, { label: "Swedish", value: "Sv" }, ] // -- Lang util functions -- export function findLang(pathname: string) { return Object.values(Lang).find( (l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}` ) } /** * Helper function to convert API's (e.g. the Hotel endpoint) capitalized values to Lang enum. */ export function fromUppercaseToLangEnum(lang: string): Lang | undefined { const lowerCaseLang = lang.toLowerCase() return Object.values(Lang).find((l) => l === lowerCaseLang) } /** * Helper function to convert Lang enum to uppercase * Needed for certtain API (e.g. the Hotel endpoint). */ export const toUppercaseLang = (lang: Lang): string => { switch (lang) { case Lang.en: return "En" case Lang.sv: return "Sv" case Lang.no: return "No" case Lang.fi: return "Fi" case Lang.da: return "Da" case Lang.de: return "De" default: throw new Error("Invalid language") } }