106 lines
2.1 KiB
TypeScript
106 lines
2.1 KiB
TypeScript
export enum Lang {
|
|
en = "en",
|
|
sv = "sv",
|
|
no = "no",
|
|
fi = "fi",
|
|
da = "da",
|
|
de = "de",
|
|
}
|
|
|
|
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 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")
|
|
}
|
|
}
|