feat(SW-2861): Move booking router to trpc package * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * WIP first step * update internal imports in trpc * Fix most errors in scandic-web Just 100 left... * Move Props type out of trpc * Fix CategorizedFilters types * Move more schemas in hotel router * Fix deps * fix getNonContentstackUrls * Fix import error * Fix entry error handling * Fix generateMetadata metrics * Fix alertType enum * Fix duplicated types * lint:fix * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package * Fix broken imports * Move booking router to trpc package * Move partners router to trpc package * Move autocomplete router to trpc package * Move booking router to trpc package * Merge branch 'master' into feat/sw-2862-move-booking-router-to-trpc-package Approved-by: Linus Flood
96 lines
2.1 KiB
TypeScript
96 lines
2.1 KiB
TypeScript
import { Lang } from "@scandic-hotels/common/constants/language"
|
|
import { ApiLang } from "@scandic-hotels/trpc/constants/apiLang"
|
|
|
|
import type { LowerCaseCountryCode } from "@/types/components/form/phone"
|
|
|
|
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: 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 },
|
|
]
|
|
|
|
/**
|
|
* Get localized language options based on the current lang.
|
|
*/
|
|
export function getLocalizedLanguageOptions(currentLang: Lang) {
|
|
const displayNames = new Intl.DisplayNames([currentLang], {
|
|
type: "language",
|
|
})
|
|
|
|
return languageSelect.map((option) => {
|
|
const localizedName = displayNames.of(option.value)
|
|
const capitalizedName = localizedName
|
|
? localizedName.charAt(0).toUpperCase() + localizedName.slice(1)
|
|
: option.label
|
|
|
|
return {
|
|
value: option.value,
|
|
label: capitalizedName,
|
|
}
|
|
})
|
|
}
|
|
|
|
export function getDefaultCountryFromLang(lang: Lang): LowerCaseCountryCode {
|
|
const countryMap: Record<Lang, LowerCaseCountryCode> = {
|
|
sv: "se",
|
|
da: "dk",
|
|
fi: "fi",
|
|
no: "no",
|
|
de: "de",
|
|
en: "se", // Default to Sweden for English
|
|
}
|
|
return countryMap[lang] || "se"
|
|
}
|