Merged in feat/SW-1065-meetings-page (pull request #1287)

Feat(SW-1065): Meetings hotel subpage

Approved-by: Erik Tiekstra
This commit is contained in:
Matilda Landström
2025-02-12 15:13:17 +00:00
parent cac090df34
commit c0e4553d9f
31 changed files with 669 additions and 15 deletions

View File

@@ -100,7 +100,7 @@ export default function TableBlock({ data }: TableBlockProps) {
<ShowMoreButton
loadMoreData={handleShowMore}
showLess={showLessVisible}
intent="table"
buttonIntent="table"
/>
) : null}
</div>

View File

@@ -21,7 +21,7 @@ export default async function MeetingsAndConferencesSidePeek({
meetingFacilities,
descriptions,
hotelId,
link,
meetingPageUrl,
}: MeetingsAndConferencesSidePeekProps) {
const lang = getLang()
const [intl, meetingRooms] = await Promise.all([
@@ -83,10 +83,15 @@ export default async function MeetingsAndConferencesSidePeek({
</Body>
) : null}
{link && (
{meetingPageUrl && (
<div className={styles.buttonContainer}>
<Button fullWidth theme="base" intent="secondary" asChild>
<Link href={link} weight="bold" color="burgundy">
<Link
href={`/${meetingPageUrl}`}
weight="bold"
color="burgundy"
appendToCurrentPath
>
{intl.formatMessage({ id: "About meetings & conferences" })}
</Link>
</Button>

View File

@@ -88,6 +88,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
hotelRoomElevatorPitchText,
gallery,
hotelParking,
meetingRooms,
displayWebPage,
hotelSpecialNeeds,
} = hotelData.additionalData
@@ -259,6 +260,9 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
meetingFacilities={conferencesAndMeetings}
descriptions={hotelContent.texts.meetingDescription}
hotelId={hotelId}
meetingPageUrl={
displayWebPage.meetingRoom ? meetingRooms.nameInUrl : undefined
}
/>
{roomCategories.map((room) => (
<RoomSidePeek key={room.name} room={room} />

View File

@@ -0,0 +1,56 @@
"use client"
import { useRef, useState } from "react"
import { useIntl } from "react-intl"
import Grids from "@/components/TempDesignSystem/Grids"
import MeetingRoomCard from "@/components/TempDesignSystem/MeetingRoomCard"
import ShowMoreButton from "@/components/TempDesignSystem/ShowMoreButton"
import styles from "./meetingsAdditionalContent.module.css"
import type { MeetingRooms } from "@/types/components/hotelPage/meetingRooms"
interface MeetingsAdditionalContentProps {
rooms: MeetingRooms
}
export default function MeetingsAdditionalContent({
rooms,
}: MeetingsAdditionalContentProps) {
const intl = useIntl()
const showToggleButton = rooms.length > 3
const [allRoomsVisible, setAllRoomsVisible] = useState(!showToggleButton)
const scrollRef = useRef<HTMLDivElement>(null)
function handleShowMore() {
if (scrollRef.current && allRoomsVisible) {
scrollRef.current.scrollIntoView({ behavior: "smooth" })
}
setAllRoomsVisible((state) => !state)
}
return (
<div className={styles.section} ref={scrollRef}>
<Grids.Stackable
className={`${styles.grid} ${allRoomsVisible ? styles.allVisible : ""}`}
>
{rooms.map((room) => (
<MeetingRoomCard key={room.id} room={room.attributes} />
))}
</Grids.Stackable>
{showToggleButton ? (
<ShowMoreButton
loadMoreData={handleShowMore}
showLess={allRoomsVisible}
textShowMore={intl.formatMessage({
id: "Show more rooms",
})}
textShowLess={intl.formatMessage({
id: "Show less rooms",
})}
/>
) : null}
</div>
)
}

View File

@@ -0,0 +1,9 @@
.grid:not(.allVisible) > :nth-child(n + 4) {
display: none;
}
.section {
display: grid;
gap: var(--Spacing-x4);
z-index: 0;
}

View File

@@ -1,5 +1,3 @@
import { getLang } from "@/i18n/serverContext"
import AccessibilityAdditionalContent from "./Accessibility"
import ParkingAdditionalContent from "./Parking"

View File

@@ -0,0 +1,47 @@
import Link from "@/components/TempDesignSystem/Link"
import Body from "@/components/TempDesignSystem/Text/Body"
import Title from "@/components/TempDesignSystem/Text/Title"
import { getIntl } from "@/i18n"
import styles from "./sidebar.module.css"
import { Country } from "@/types/enums/country"
interface MeetingsSidebarProps {
phoneNumber: string
email?: string
country: string
}
export default async function MeetingsSidebar({
phoneNumber,
email,
country,
}: MeetingsSidebarProps) {
const intl = await getIntl()
return (
<aside className={styles.sidebar}>
<Title level="h3" as="h4">
{intl.formatMessage({ id: "Contact us" })}
</Title>
<div>
<Link
href={`tel:${phoneNumber}`}
color="peach80"
textDecoration="underline"
>
{phoneNumber}
</Link>
{country === Country.Finland ? (
<Body>
{intl.formatMessage({
id: "Price 0,16 €/min + local call charges",
})}
</Body>
) : null}
<Body>{email} </Body>
</div>
</aside>
)
}

View File

@@ -1,7 +1,9 @@
import RestaurantSidebar from "./RestaurantSidebar/RestaurantSidebar"
import MeetingsSidebar from "./MeetingsSidebar"
import ParkingSidebar from "./ParkingSidebar"
import WellnessSidebar from "./WellnessSidebar"
import type { MeetingRooms } from "@/types/components/hotelPage/meetingRooms"
import type { AdditionalData, Hotel, Restaurant } from "@/types/hotel"
interface HotelSubpageSidebarProps {
@@ -9,6 +11,7 @@ interface HotelSubpageSidebarProps {
hotel: Hotel
additionalData: AdditionalData
restaurants: Restaurant[]
meetingRooms: MeetingRooms | undefined
}
export default function HotelSubpageSidebar({
@@ -16,6 +19,7 @@ export default function HotelSubpageSidebar({
hotel,
additionalData,
restaurants,
meetingRooms,
}: HotelSubpageSidebarProps) {
const restaurantSubPage = restaurants.find(
(restaurant) => restaurant.nameInUrl === subpage
@@ -32,6 +36,17 @@ export default function HotelSubpageSidebar({
return <WellnessSidebar hotel={hotel} />
case additionalData.hotelSpecialNeeds.nameInUrl:
return null
case additionalData.meetingRooms.nameInUrl:
if (!meetingRooms) {
return null
}
return (
<MeetingsSidebar
phoneNumber={meetingRooms[0].attributes.phoneNumber}
email={meetingRooms[0].attributes.email}
country={hotel.address.country}
/>
)
default:
return null
}

View File

@@ -1,4 +1,13 @@
.sidebar {
display: grid;
gap: var(--Spacing-x2);
grid-column: 1;
}
@media (min-width: 1367px) {
.sidebar {
grid-column: 2;
grid-row: 1;
align-items: start;
}
}

View File

@@ -29,6 +29,7 @@
display: grid;
width: 100%;
gap: var(--Spacing-x4);
grid-column: 1;
}
.intro {
@@ -36,6 +37,10 @@
gap: var(--Spacing-x2);
}
.meetingsContent {
grid-column: 1;
}
@media (min-width: 1367px) {
.contentContainer {
grid-template-columns: var(--max-width-text-block) 1fr;
@@ -47,4 +52,8 @@
max-width: none;
margin: 0;
}
.meetingsContent {
grid-column: 1 / span 2;
}
}

View File

@@ -1,7 +1,11 @@
import { notFound } from "next/navigation"
import { Suspense } from "react"
import { getHotel, getHotelPage } from "@/lib/trpc/memoizedRequests"
import {
getHotel,
getHotelPage,
getMeetingRooms,
} from "@/lib/trpc/memoizedRequests"
import Breadcrumbs from "@/components/Breadcrumbs"
import Hero from "@/components/Hero"
@@ -11,6 +15,7 @@ import Title from "@/components/TempDesignSystem/Text/Title"
import { getIntl } from "@/i18n"
import { getLang } from "@/i18n/serverContext"
import MeetingsAdditionalContent from "./AdditionalContent/Meetings"
import HotelSubpageAdditionalContent from "./AdditionalContent"
import HtmlContent from "./HtmlContent"
import HotelSubpageSidebar from "./Sidebar"
@@ -18,10 +23,7 @@ import { getSubpageData } from "./utils"
import styles from "./hotelSubpage.module.css"
interface HotelSubpageProps {
hotelId: string
subpage: string
}
import type { HotelSubpageProps } from "@/types/components/hotelPage/subpage"
export default async function HotelSubpage({
hotelId,
@@ -45,6 +47,11 @@ export default async function HotelSubpage({
const { hotel, restaurants, additionalData } = hotelData
let meetingRooms
if (hotelData.additionalData.meetingRooms.nameInUrl === subpage) {
meetingRooms = await getMeetingRooms({ hotelId: hotelId, language: lang })
}
return (
<>
<section className={styles.hotelSubpage}>
@@ -80,11 +87,18 @@ export default async function HotelSubpage({
/>
</main>
{meetingRooms && (
<div className={styles.meetingsContent}>
<MeetingsAdditionalContent rooms={meetingRooms} />
</div>
)}
<HotelSubpageSidebar
subpage={subpage}
hotel={hotel}
additionalData={additionalData}
restaurants={restaurants}
meetingRooms={meetingRooms}
/>
</div>
</section>

View File

@@ -74,6 +74,19 @@ export function getSubpageData(
}
: null,
}
case additionalData.meetingRooms.nameInUrl:
const meetingImage = hotel.conferencesAndMeetings?.heroImages[0]
return {
elevatorPitch: hotel.hotelContent.texts.meetingDescription?.medium,
mainBody: additionalData.meetingRooms.mainBody,
heading: intl.formatMessage({ id: "Meetings, Conferences & Events" }),
heroImage: meetingImage
? {
src: meetingImage.imageSizes.medium,
alt: meetingImage.metaData.altText || "",
}
: null,
}
default:
return null
}

View File

@@ -0,0 +1,23 @@
import { iconVariants } from "./variants"
import type { IconProps } from "@/types/components/icon"
export default function MeasureIcon({ className, color, ...props }: IconProps) {
const classNames = iconVariants({ className, color })
return (
<svg
className={classNames}
xmlns="http://www.w3.org/2000/svg"
width="16"
height="17"
viewBox="0 0 16 17"
fill="none"
{...props}
>
<path
d="M2.66634 12.2502C2.29967 12.2502 1.98579 12.1197 1.72467 11.8586C1.46356 11.5975 1.33301 11.2836 1.33301 10.9169V5.58358C1.33301 5.21691 1.46356 4.90302 1.72467 4.64191C1.98579 4.3808 2.29967 4.25024 2.66634 4.25024H13.333C13.6997 4.25024 14.0136 4.3808 14.2747 4.64191C14.5358 4.90302 14.6663 5.21691 14.6663 5.58358V10.9169C14.6663 11.2836 14.5358 11.5975 14.2747 11.8586C14.0136 12.1197 13.6997 12.2502 13.333 12.2502H2.66634ZM2.66634 10.9169H13.333V5.58358H11.333V8.25024H9.99967V5.58358H8.66634V8.25024H7.33301V5.58358H5.99967V8.25024H4.66634V5.58358H2.66634V10.9169Z"
fill="#787472"
/>
</svg>
)
}

View File

@@ -125,6 +125,7 @@ export { default as ScandicLogoIcon } from "./Logos/ScandicLogo"
export { default as LuggageIcon } from "./Luggage"
export { default as MagicWandIcon } from "./MagicWand"
export { default as MapIcon } from "./Map"
export { default as MeasureIcon } from "./Measure"
export { default as MicrowaveIcon } from "./Microwave"
export { default as MinusIcon } from "./Minus"
export { default as MirrorIcon } from "./Mirror"

View File

@@ -0,0 +1,147 @@
"use client"
import { useState } from "react"
import { useIntl } from "react-intl"
import { MeasureIcon, PersonIcon } from "@/components/Icons"
import Image from "@/components/Image"
import Divider from "../Divider"
import ShowMoreButton from "../ShowMoreButton"
import Caption from "../Text/Caption"
import Subtitle from "../Text/Subtitle"
import { translateRoomLighting, translateSeatingType } from "./utils"
import styles from "./meetingRoomCard.module.css"
import type { MeetingRoom } from "@/types/components/hotelPage/meetingRooms"
interface MeetingRoomCardProps {
room: MeetingRoom
}
export default function MeetingRoomCard({ room }: MeetingRoomCardProps) {
const intl = useIntl()
const [opened, setOpened] = useState(false)
const roomSeatings = room.seatings.map((seating) => {
return seating.capacity
})
const maxSeatings = Math.max(...roomSeatings)
const image = room.content.images[0]
function handleShowMore() {
setOpened((state) => !state)
}
return (
<article className={styles.card}>
<Image
src={image.imageSizes.small}
alt={image.metaData.altText || image.metaData.altText_En || ""}
className={styles.image}
width={200}
height={200}
/>
<div className={styles.content}>
<Subtitle textAlign="left" type="two" color="black">
{room.name}
</Subtitle>
<div className={styles.capacity}>
<div className={styles.iconText}>
<MeasureIcon color="uiTextPlaceholder" />
<Caption color="uiTextPlaceholder">{room.size} m2</Caption>
</div>
<div className={styles.iconText}>
<PersonIcon color="uiTextPlaceholder" width={16} height={16} />
<Caption color="uiTextPlaceholder">
{intl.formatMessage(
{ id: "max {seatings} pers" },
{ seatings: maxSeatings }
)}
</Caption>
</div>
</div>
{opened && (
<div className={styles.openedInfo}>
<div className={styles.rowItem}>
{room.seatings.map((seating, idx) => (
<div
key={seating.type}
className={styles.capacity}
id={String(seating.capacity) + seating.type + idx}
>
<Caption color="uiTextMediumContrast">
{translateSeatingType(seating.type, intl)}
</Caption>
<Caption color="uiTextHighContrast">
{intl.formatMessage(
{ id: "{number} people" },
{ number: seating.capacity }
)}
</Caption>
</div>
))}
</div>
<Divider color="baseSurfaceSubtleNormal" />
<div className={styles.rowItem}>
<div className={styles.capacity}>
<Caption color="uiTextMediumContrast">
{intl.formatMessage({
id: "Location in hotel",
})}
</Caption>
<Caption color="uiTextHighContrast">
{intl.formatMessage(
{ id: "Floor {floorNumber}" },
{
floorNumber: `${room.floorNumber}`,
}
)}
</Caption>
</div>
<div className={styles.capacity}>
<Caption color="uiTextMediumContrast">
{intl.formatMessage({
id: "Lighting",
})}
</Caption>
<Caption color="uiTextHighContrast">
{translateRoomLighting(room.lighting, intl)}
</Caption>
</div>
{room.doorHeight && room.doorWidth ? (
<div className={styles.capacity}>
<Caption color="uiTextMediumContrast">
{intl.formatMessage({
id: "Access size",
})}
</Caption>
<Caption color="uiTextHighContrast">
{room.doorHeight} x {room.doorWidth} m
</Caption>
</div>
) : null}
{room.length && room.width && room.height ? (
<div className={styles.capacity}>
<Caption color="uiTextMediumContrast">
{intl.formatMessage({
id: "Dimensions",
})}
</Caption>
<Caption color="uiTextHighContrast">
{room.length} x {room.width} x {room.height} m
</Caption>
</div>
) : null}
</div>
</div>
)}
<ShowMoreButton
intent="secondary"
loadMoreData={handleShowMore}
showLess={opened}
/>
</div>
</article>
)
}

View File

@@ -0,0 +1,56 @@
.card {
background-color: var(--Base-Surface-Primary-light-Normal);
border-radius: var(--Corner-radius-Medium);
border: 1px solid var(--Base-Border-Subtle);
display: flex;
flex-direction: column;
overflow: hidden;
}
.capacity {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--Spacing-x1);
}
.iconText {
display: flex;
gap: var(--Spacing-x-half);
align-items: center;
}
.rowItem {
display: grid;
gap: var(--Spacing-x-half);
}
.openedInfo {
background-color: var(--Base-Surface-Secondary-light-Normal);
border-radius: var(--Corner-radius-Medium);
padding: var(--Spacing-x2);
display: grid;
gap: var(--Spacing-x2);
}
.image {
width: 100%;
object-fit: cover;
}
.content {
display: grid;
gap: var(--Spacing-x2);
padding: var(--Spacing-x2);
grid-template-rows: auto 1fr auto;
flex-grow: 1;
}
@media (min-width: 1367px) {
.card:not(.alwaysStack) .ctaContainer {
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
}
.card:not(.alwaysStack) .ctaContainer:has(:only-child) {
grid-template-columns: 1fr;
}
}

View File

@@ -0,0 +1,79 @@
import type { IntlShape } from "react-intl/src/types"
import { RoomLighting, SeatingType } from "@/types/enums/meetingRooms"
export function translateRoomLighting(option: string, intl: IntlShape) {
switch (option) {
case RoomLighting.WindowsNaturalDaylight:
return intl.formatMessage({
id: "Windows with natural daylight",
})
case RoomLighting.IndoorWindowsExcellentLighting:
return intl.formatMessage({
id: "Indoor windows and excellent lighting",
})
case RoomLighting.IndoorWindowsFacingHotel:
return intl.formatMessage({
id: "Indoor windows facing the hotel",
})
case RoomLighting.NoWindows:
return intl.formatMessage({
id: "No windows",
})
case RoomLighting.NoWindowsExcellentLighting:
return intl.formatMessage({
id: "No windows but excellent lighting",
})
case RoomLighting.WindowsNaturalDaylightBlackoutFacilities:
return intl.formatMessage({
id: "Windows natural daylight and blackout facilities",
})
case RoomLighting.WindowsNaturalDaylightExcellentView:
return intl.formatMessage({
id: "Windows natural daylight and excellent view",
})
default:
console.warn(`Unsupported conference room ligthing option: ${option}`)
return intl.formatMessage({ id: "N/A" })
}
}
export function translateSeatingType(type: string, intl: IntlShape) {
switch (type) {
case SeatingType.Boardroom:
return intl.formatMessage({
id: "Boardroom",
})
case SeatingType.Cabaret:
return intl.formatMessage({
id: "Cabaret seating",
})
case SeatingType.Classroom:
return intl.formatMessage({
id: "Classroom",
})
case SeatingType.FullCircle:
return intl.formatMessage({
id: "Full circle",
})
case SeatingType.HalfCircle:
return intl.formatMessage({
id: "Half circle",
})
case SeatingType.StandingTable:
return intl.formatMessage({
id: "Standing table",
})
case SeatingType.Theatre:
return intl.formatMessage({
id: "Theatre",
})
case SeatingType.UShape:
return intl.formatMessage({
id: "U-shape",
})
default:
console.warn(`Unsupported conference room type : ${type}`)
return intl.formatMessage({ id: "N/A" })
}
}

View File

@@ -13,6 +13,7 @@ import type { ShowMoreButtonProps } from "./showMoreButton"
export default function ShowMoreButton({
className,
buttonIntent,
intent,
disabled,
showLess,
@@ -23,7 +24,7 @@ export default function ShowMoreButton({
const intl = useIntl()
const classNames = showMoreButtonVariants({
className,
intent,
buttonIntent,
})
if (!textShowMore) {
@@ -47,7 +48,9 @@ export default function ShowMoreButton({
variant="icon"
type="button"
theme="base"
intent="text"
intent={intent ?? "text"}
fullWidth={intent ? true : false}
size={intent && "small"}
>
<ChevronDownIcon className={styles.icon} />
{showLess ? textShowLess : textShowMore}

View File

@@ -1,5 +1,6 @@
import type { VariantProps } from "class-variance-authority"
import type { ButtonPropsRAC } from "../Button/button"
import type { showMoreButtonVariants } from "./variants"
export interface ShowMoreButtonProps
@@ -10,4 +11,5 @@ export interface ShowMoreButtonProps
textShowMore?: string
textShowLess?: string
loadMoreData: () => void
intent?: ButtonPropsRAC["intent"]
}

View File

@@ -4,7 +4,7 @@ import styles from "./showMoreButton.module.css"
export const showMoreButtonVariants = cva(styles.container, {
variants: {
intent: {
buttonIntent: {
table: styles.table,
},
},

View File

@@ -11,6 +11,7 @@
"About parking": "Om parkering",
"About the hotel": "Om hotellet",
"Accept new price": "Accepter ny pris",
"Access size": "Adgangsstørrelse",
"Accessibility": "Tilgængelighed",
"Accessibility at {hotel}": "Tilgængelighed på {hotel}",
"Accessible room": "Tilgængelighedsrum",
@@ -63,6 +64,7 @@
"Bike friendly": "Cykelvenlig",
"Birth date": "Fødselsdato",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Book",
"Book Reward Night": "Book bonusnat",
"Book a table online": "Book et bord online",
@@ -91,6 +93,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Ved at betale med en af de tilgængelige betalingsmetoder, accepterer jeg vilkårene for denne booking og de generelle <termsAndConditionsLink>Vilkår og betingelser</termsAndConditionsLink>, og forstår, at Scandic vil behandle min personlige data i forbindelse med denne booking i henhold til <privacyPolicyLink>Scandics Privatlivspolitik</privacyPolicyLink>. Jeg accepterer, at Scandic kræver et gyldigt kreditkort under min besøg i tilfælde af, at noget er tilbagebetalt.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "Ved at tilmelde dig accepterer du Scandic Friends <termsAndConditionsLink>vilkår og betingelser</termsAndConditionsLink>. Dit medlemskab er gyldigt indtil videre, og du kan til enhver tid opsige dit medlemskab ved at sende en e-mail til Scandics kundeservice",
"Cabaret seating": "Cabaret seating",
"Campaign": "Kampagne",
"Cancel": "Afbestille",
"Cancellation policy": "Cancellation policy",
@@ -112,6 +115,7 @@
"City": "By",
"City pulse": "Byens puls",
"City/State": "By/Stat",
"Classroom": "Classroom",
"Clear all filters": "Ryd alle filtre",
"Clear searches": "Ryd søgninger",
"Click here to log in": "Klik her for at logge ind",
@@ -153,6 +157,7 @@
"Details": "Detaljer",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Dimensioner",
"Discard changes": "Kassér ændringer",
"Discard unsaved changes?": "Slette ændringer, der ikke er gemt?",
"Discover": "Opdag",
@@ -202,6 +207,7 @@
"First name is required": "Fornavn er påkrævet",
"Flexibility": "Fleksibilitet",
"Floor preference": "Etagepræference",
"Floor {floorNumber}": "Etage {floorNumber}",
"Follow us": "Følg os",
"Food options": "Madvalg",
"Former Scandic Hotel": "Tidligere Scandic Hotel",
@@ -214,6 +220,7 @@
"Friendly room rates": "Optjen bonusnætter og point",
"Friends with Benefits": "Friends with Benefits",
"From": "Fra",
"Full circle": "Full circle",
"Garage": "Garage",
"Get inspired": "Bliv inspireret",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -227,6 +234,7 @@
"Guest information": "Gæsteinformation",
"Guests & Rooms": "Gæster & værelser",
"Gym": "Fitnesscenter",
"Half circle": "Half circle",
"Hi {firstName}!": "Hei {firstName}!",
"High floor": "Højt niveau",
"Highest level": "Højeste niveau",
@@ -255,6 +263,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Inkluderet",
"Indoor pool": "Indendørs pool",
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
"Indoor windows facing the hotel": "Indoor windows facing the hotel",
"Invalid booking code": "Ugyldig reservationskode",
"Is there anything else you would like us to know before your arrival?": "Er der andet, du gerne vil have os til at vide, før din ankomst?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det er ikke muligt at administrere dine kommunikationspræferencer lige nu, prøv venligst igen senere eller kontakt support, hvis problemet fortsætter.",
@@ -282,9 +292,11 @@
"Level up to unlock": "Stig i niveau for at låse op",
"Level upgraded": "Level upgraded",
"Level {level}": "Niveau {level}",
"Lighting": "Belysning",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Beliggenhed",
"Location in hotel": "Plassering på hotellet",
"Locations": "Placeringer",
"Log in": "Log på",
"Log in here": "Log ind her",
@@ -357,6 +369,8 @@
"No prices available": "Ingen tilgængelige priser",
"No results": "Ingen resultater",
"No transactions available": "Ingen tilgængelige transaktioner",
"No windows": "No windows",
"No windows but excellent lighting": "No windows but excellent lighting",
"No, keep card": "Nej, behold kortet",
"Non refundable": "Ikke-refunderbart",
"Non-refundable": "Ikke-refunderbart",
@@ -414,6 +428,7 @@
"Previous": "Forudgående",
"Previous victories": "Tidligere sejre",
"Price": "Pris",
"Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokale opkaldstakster",
"Price details": "Prisoplysninger",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "Pris ekskl. moms",
@@ -514,6 +529,7 @@
"Spice things up": "Krydre tingene",
"Sports": "Sport",
"Standard price": "Standardpris",
"Standing table": "Standing table",
"Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotel i {destination}",
"Street": "Gade",
"Submit": "Submit",
@@ -555,9 +571,11 @@
"Tuesday": "Tirsdag",
"Type of bed": "Sengtype",
"Type of room": "Værelsestype",
"U-shape": "U-form",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Brug Bonus Cheque",
"Use bonus cheque": "Brug Bonus Cheque",
"Use code/voucher": "Brug kode/voucher",
"User information": "Brugeroplysninger",
"VAT": "VAT",
@@ -601,6 +619,9 @@
"Where should you go next?": "Find inspiration til dit næste ophold",
"Where to?": "Hvor?",
"Which room class suits you the best?": "Hvilken rumklasse passer bedst til dig",
"Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities",
"Windows natural daylight and excellent view": "Windows natural daylight and excellent view",
"Windows with natural daylight": "Vinduer med naturligt dagslys",
"Year": "År",
"Yes": "Ja",
"Yes, discard changes": "Ja, kasser ændringer",
@@ -639,6 +660,7 @@
"booking.selectRoom": "Zimmer auswählen",
"booking.thisRoomIsEquippedWith": "Dette værelse er udstyret med",
"friday": "fredag",
"max {seatings} pers": "max {seatings} pers",
"monday": "mandag",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "nat",
@@ -674,6 +696,7 @@
"{min} to {max} characters": "{min} til {max} tegn",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tilgængelig",
"{number} km to city center": "{number} km til centrum",
"{number} people": "{number} people",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} point",
"{points} spendable points expiring by {date}": "{points} Brugbare point udløber den {date}",

View File

@@ -11,6 +11,7 @@
"About parking": "Über das Parken",
"About the hotel": "Über das Hotel",
"Accept new price": "Neuen Preis akzeptieren",
"Access size": "Zugriffsgröße",
"Accessibility": "Zugänglichkeit",
"Accessibility at {hotel}": "Barrierefreiheit im {hotel}",
"Accessible room": "Barrierefreies Zimmer",
@@ -64,6 +65,7 @@
"Bike friendly": "Fahrradfreundlich",
"Birth date": "Geburtsdatum",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Buchen",
"Book Reward Night": "Bonusnacht buchen",
"Book a table online": "Tisch online buchen",
@@ -92,6 +94,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Mit der Zahlung über eine der verfügbaren Zahlungsmethoden akzeptiere ich die Buchungsbedingungen und die allgemeinen <termsAndConditionsLink>Geschäftsbedingungen</termsAndConditionsLink> und verstehe, dass Scandic meine personenbezogenen Daten im Zusammenhang mit dieser Buchung gemäß der <privacyPolicyLink>Scandic Datenschutzrichtlinie</privacyPolicyLink> verarbeitet. Ich akzeptiere, dass Scandic während meines Aufenthalts eine gültige Kreditkarte für eventuelle Rückerstattungen benötigt.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "Mit Ihrer Anmeldung akzeptieren Sie die <termsAndConditionsLink>Allgemeinen Geschäftsbedingungen</termsAndConditionsLink> von Scandic Friends. Ihre Mitgliedschaft ist bis auf Weiteres gültig und Sie können sie jederzeit kündigen, indem Sie eine E-Mail an den Kundenservice von Scandic senden.",
"Cabaret seating": "Cabaret seating",
"Campaign": "Kampagne",
"Cancel": "Stornieren",
"Cancellation policy": "Cancellation policy",
@@ -113,6 +116,7 @@
"City": "Stadt",
"City pulse": "Stadtpuls",
"City/State": "Stadt/Zustand",
"Classroom": "Classroom",
"Clear all filters": "Alle Filter löschen",
"Clear searches": "Suche löschen",
"Click here to log in": "Klicken Sie hier, um sich einzuloggen",
@@ -154,6 +158,7 @@
"Details": "Details",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Abmessungen",
"Discard changes": "Änderungen verwerfen",
"Discard unsaved changes?": "Nicht gespeicherte Änderungen verwerfen?",
"Discover": "Entdecken",
@@ -203,6 +208,7 @@
"First name is required": "Vorname ist erforderlich",
"Flexibility": "Flexibilität",
"Floor preference": "Etagenpräferenzen",
"Floor {floorNumber}": "Etage {floorNumber}",
"Follow us": "Folgen Sie uns",
"Food options": "Speisen & Getränke",
"Former Scandic Hotel": "Ehemaliges Scandic Hotel",
@@ -215,6 +221,7 @@
"Friendly room rates": "Sammeln Sie Bonusnächte und -punkte",
"Friends with Benefits": "Friends with Benefits",
"From": "Fromm",
"Full circle": "Full circle",
"Garage": "Garage",
"Get inspired": "Lassen Sie sich inspieren",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -228,6 +235,7 @@
"Guest information": "Informationen für Gäste",
"Guests & Rooms": "Gäste & Zimmer",
"Gym": "Fitnessstudio",
"Half circle": "Half circle",
"Hi {firstName}!": "Hallo {firstName}!",
"High floor": "Hohes Level",
"Highest level": "Höchstes Level",
@@ -256,6 +264,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Iinklusive",
"Indoor pool": "Innenpool",
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
"Indoor windows facing the hotel": "Indoor windows facing the hotel",
"Invalid booking code": "Ungültiger Buchungscode",
"Is there anything else you would like us to know before your arrival?": "Gibt es noch etwas, das Sie uns vor Ihrer Ankunft mitteilen möchten?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Es ist derzeit nicht möglich, Ihre Kommunikationseinstellungen zu verwalten. Bitte versuchen Sie es später erneut oder wenden Sie sich an den Support, wenn das Problem weiterhin besteht.",
@@ -283,9 +293,11 @@
"Level up to unlock": "Zum Freischalten aufsteigen",
"Level upgraded": "Level upgraded",
"Level {level}": "Level {level}",
"Lighting": "Beleuchtung",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Ort",
"Location in hotel": "Lage im Hotel",
"Locations": "Orte",
"Log in": "Anmeldung",
"Log in here": "Hier einloggen",
@@ -358,6 +370,8 @@
"No prices available": "Keine Preise verfügbar",
"No results": "Keine Ergebnisse",
"No transactions available": "Keine Transaktionen verfügbar",
"No windows": "No windows",
"No windows but excellent lighting": "No windows but excellent lighting",
"No, keep card": "Nein, Karte behalten",
"Non refundable": "Nicht erstattungsfähig",
"Non-refundable": "Nicht erstattungsfähig",
@@ -415,6 +429,7 @@
"Previous": "Früher",
"Previous victories": "Bisherige Siege",
"Price": "Preis",
"Price 0,16 €/min + local call charges": "Preis 0,16 €/Min. + Ortsgesprächsgebühren",
"Price details": "Preisdetails",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "Preis ohne MwSt.",
@@ -515,6 +530,7 @@
"Spice things up": "Würzen Sie die Dinge auf",
"Sports": "Sport",
"Standard price": "Standardpreis",
"Standing table": "Standing table",
"Stay at {hotelName} | Hotel in {destination}": "Übernachten Sie im {hotelName} | Hotel in {destination}",
"Street": "Straße",
"Submit": "Submit",
@@ -555,9 +571,11 @@
"Tuesday": "Dienstag",
"Type of bed": "Bettentyp",
"Type of room": "Zimmerart",
"U-shape": "U-shape",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Bonusscheck nutzen",
"Use bonus cheque": "Bonusscheck nutzen",
"Use code/voucher": "Code/Gutschein nutzen",
"User information": "Nutzerinformation",
"VAT": "VAT",
@@ -601,6 +619,9 @@
"Where should you go next?": "Wo geht es als Nächstes hin?",
"Where to?": "Wohin?",
"Which room class suits you the best?": "Welche Zimmerklasse passt am besten zu Ihnen?",
"Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities",
"Windows natural daylight and excellent view": "Windows natural daylight and excellent view",
"Windows with natural daylight": "Fenster mit natürlichem Tageslicht",
"Year": "Jahr",
"Yes": "Ja",
"Yes, discard changes": "Ja, Änderungen verwerfen",
@@ -639,6 +660,7 @@
"booking.selectRoom": "Vælg værelse",
"booking.thisRoomIsEquippedWith": "Dieses Zimmer ist ausgestattet mit",
"friday": "freitag",
"max {seatings} pers": "max {seatings} pers",
"monday": "montag",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "nacht",
@@ -674,6 +696,7 @@
"{min} to {max} characters": "{min} zu {max} figuren",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} verfügbar",
"{number} km to city center": "{number} km zum Stadtzentrum",
"{number} people": "{number} people",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} punkte",
"{points} spendable points expiring by {date}": "{points} Einlösbare punkte verfallen bis zum {date}",

View File

@@ -12,6 +12,7 @@
"About parking": "About parking",
"About the hotel": "About the hotel",
"Accept new price": "Accept new price",
"Access size": "Access size",
"Accessibility": "Accessibility",
"Accessibility at {hotel}": "Accessibility at {hotel}",
"Accessible room": "Accessibility room",
@@ -64,6 +65,7 @@
"Bike friendly": "Bike friendly",
"Birth date": "Birth date",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Book",
"Book Reward Night": "Book Reward Night",
"Book a table online": "Book a table online",
@@ -92,6 +94,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service",
"Cabaret seating": "Cabaret seating",
"Campaign": "Campaign",
"Cancel": "Cancel",
"Cancel booking": "Cancel booking",
@@ -115,6 +118,7 @@
"City": "City",
"City pulse": "City pulse",
"City/State": "City/State",
"Classroom": "Classroom",
"Clear all filters": "Clear all filters",
"Clear searches": "Clear searches",
"Click here to log in": "Click here to log in",
@@ -157,6 +161,7 @@
"Details": "Details",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Dimensions",
"Discard changes": "Discard changes",
"Discard unsaved changes?": "Discard unsaved changes?",
"Discover": "Discover",
@@ -206,6 +211,7 @@
"First name is required": "First name is required",
"Flexibility": "Flexibility",
"Floor preference": "Floor preference",
"Floor {floorNumber}": "Floor {floorNumber}",
"Follow us": "Follow us",
"Food options": "Food options",
"Former Scandic Hotel": "Former Scandic Hotel",
@@ -218,6 +224,7 @@
"Friendly room rates": "Friendly room rates",
"Friends with Benefits": "Friends with Benefits",
"From": "From",
"Full circle": "Full circle",
"Garage": "Garage",
"Get inspired": "Get inspired",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -231,6 +238,7 @@
"Guest information": "Guest information",
"Guests & Rooms": "Guests & Rooms",
"Gym": "Gym",
"Half circle": "Half circle",
"Hi {firstName}!": "Hi {firstName}!",
"High floor": "High floor",
"Highest level": "Highest level",
@@ -259,6 +267,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Included",
"Indoor pool": "Indoor pool",
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
"Indoor windows facing the hotel": "Indoor windows facing the hotel",
"Invalid booking code": "Invalid booking code",
"Is there anything else you would like us to know before your arrival?": "Is there anything else you would like us to know before your arrival?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.",
@@ -286,9 +296,11 @@
"Level up to unlock": "Level up to unlock",
"Level upgraded": "Level upgraded",
"Level {level}": "Level {level}",
"Lighting": "Lighting",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Location",
"Location in hotel": "Location in hotel",
"Locations": "Locations",
"Log in": "Log in",
"Log in here": "Log in here",
@@ -362,6 +374,8 @@
"No prices available": "No prices available",
"No results": "No results",
"No transactions available": "No transactions available",
"No windows": "No windows",
"No windows but excellent lighting": "No windows but excellent lighting",
"No, keep card": "No, keep card",
"Non refundable": "Non refundable",
"Non-refundable": "Non-refundable",
@@ -419,6 +433,7 @@
"Previous": "Previous",
"Previous victories": "Previous victories",
"Price": "Price",
"Price 0,16 €/min + local call charges": "Price 0,16 €/min + local call charges",
"Price details": "Price details",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "Price excluding VAT",
@@ -520,6 +535,7 @@
"Spice things up": "Spice things up",
"Sports": "Sports",
"Standard price": "Standard price",
"Standing table": "Standing table",
"Stay at {hotelName} | Hotel in {destination}": "Stay at {hotelName} | Hotel in {destination}",
"Street": "Street",
"Submit": "Submit",
@@ -560,9 +576,11 @@
"Tuesday": "Tuesday",
"Type of bed": "Type of bed",
"Type of room": "Type of room",
"U-shape": "U-shape",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Use Bonus Cheque",
"Use bonus cheque": "Use bonus cheque",
"Use code/voucher": "Use code/voucher",
"User information": "User information",
"VAT": "VAT",
@@ -606,6 +624,9 @@
"Where should you go next?": "Where should you go next?",
"Where to?": "Where to?",
"Which room class suits you the best?": "Which room class suits you the best?",
"Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities",
"Windows natural daylight and excellent view": "Windows natural daylight and excellent view",
"Windows with natural daylight": "Windows with natural daylight",
"Year": "Year",
"Yes": "Yes",
"Yes, discard changes": "Yes, discard changes",
@@ -641,6 +662,7 @@
"booking.selectRoom": "Select room",
"booking.thisRoomIsEquippedWith": "This room is equipped with",
"friday": "friday",
"max {seatings} pers": "max {seatings} pers",
"monday": "monday",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "night",
@@ -677,6 +699,7 @@
"{min} to {max} characters": "{min} to {max} characters",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} available",
"{number} km to city center": "{number} km to city center",
"{number} people": "{number} people",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} points",
"{points} spendable points expiring by {date}": "{points} spendable points expiring by {date}",

View File

@@ -11,6 +11,7 @@
"About parking": "Tietoja pysäköinnistä",
"About the hotel": "Tietoja hotellista",
"Accept new price": "Hyväksy uusi hinta",
"Access size": "Pääsyn koko",
"Accessibility": "Saavutettavuus",
"Accessibility at {hotel}": "Esteettömyys {hotel}",
"Accessible room": "Esteetön huone",
@@ -62,6 +63,7 @@
"Bike friendly": "Pyöräystävällinen",
"Birth date": "Syntymäaika",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Varaa",
"Book Reward Night": "Kirjapalkinto-ilta",
"Book a table online": "Varaa pöytä verkossa",
@@ -90,6 +92,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Maksamalla minkä tahansa saatavilla olevan maksutavan avulla hyväksyn tämän varauksen ehdot ja yleiset <termsAndConditionsLink>ehdot ja ehtoja</termsAndConditionsLink>, ja ymmärrän, että Scandic käsittelee minun henkilötietoni tässä varauksessa mukaisesti <privacyPolicyLink>Scandicin tietosuojavaltuuden</privacyPolicyLink> mukaisesti. Hyväksyn myös, että Scandic vaatii validin luottokortin majoituksen ajan, jos jokin jää maksamatta.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "Rekisteröitymällä hyväksyt Scandic Friendsin <termsAndConditionsLink>käyttöehdot</termsAndConditionsLink>. Jäsenyytesi on voimassa toistaiseksi ja voit lopettaa jäsenyytesi milloin tahansa lähettämällä sähköpostia Scandicin asiakaspalveluun",
"Cabaret seating": "Cabaret seating",
"Campaign": "Kampanja",
"Cancel": "Peruuttaa",
"Cancellation policy": "Cancellation policy",
@@ -111,6 +114,7 @@
"City": "Kaupunki",
"City pulse": "Kaupungin syke",
"City/State": "Kaupunki/Osavaltio",
"Classroom": "Classroom",
"Clear all filters": "Tyhjennä kaikki suodattimet",
"Clear searches": "Tyhjennä haut",
"Click here to log in": "Napsauta tästä kirjautuaksesi sisään",
@@ -153,6 +157,7 @@
"Details": "Tiedot",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Mitat",
"Discard changes": "Hylkää muutokset",
"Discard unsaved changes?": "Hylkäätkö tallentamattomat muutokset?",
"Discover": "Löydä",
@@ -202,6 +207,7 @@
"First name is required": "Etunimi vaaditaan",
"Flexibility": "Joustavuus",
"Floor preference": "Kerrostasotoive",
"Floor {floorNumber}": "Kerros {floorNumber}",
"Follow us": "Seuraa meitä",
"Food options": "Ruokavalio",
"Former Scandic Hotel": "Entinen Scandic-hotelli",
@@ -214,6 +220,7 @@
"Friendly room rates": "Ansaitse bonusöitä ja -pisteitä",
"Friends with Benefits": "Friends with Benefits",
"From": "From",
"Full circle": "Full circle",
"Garage": "Autotalli",
"Get inspired": "Inspiroidu",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -227,6 +234,7 @@
"Guest information": "Vieraan tiedot",
"Guests & Rooms": "Vieraat & Huoneet",
"Gym": "Kuntosali",
"Half circle": "Half circle",
"Hi {firstName}!": "Hi {firstName}!",
"High floor": "Korkea taso",
"Highest level": "Korkein taso",
@@ -255,6 +263,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Sisälly hintaan",
"Indoor pool": "Sisäuima-allas",
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
"Indoor windows facing the hotel": "Indoor windows facing the hotel",
"Invalid booking code": "Virheellinen varauskoodi",
"Is there anything else you would like us to know before your arrival?": "Onko jotain muuta, mitä haluaisit meidän tietävän ennen saapumistasi?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Viestintäasetuksiasi ei voi hallita juuri nyt. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen, jos ongelma jatkuu.",
@@ -282,9 +292,11 @@
"Level up to unlock": "Nosta taso avataksesi lukituksen",
"Level upgraded": "Level upgraded",
"Level {level}": "Taso {level}",
"Lighting": "Valaistus",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Sijainti",
"Location in hotel": "Sijainti hotellissa",
"Locations": "Sijainnit",
"Log in": "Kirjaudu sisään",
"Log in here": "Kirjaudu sisään",
@@ -357,6 +369,8 @@
"No prices available": "Hintoja ei ole saatavilla",
"No results": "Ei tuloksia",
"No transactions available": "Ei tapahtumia saatavilla",
"No windows": "No windows",
"No windows but excellent lighting": "No windows but excellent lighting",
"No, keep card": "Ei, pidä kortti",
"Non refundable": "Ei palautettavissa",
"Non-refundable": "Ei palautettavissa",
@@ -414,6 +428,7 @@
"Previous": "Aikaisempi",
"Previous victories": "Edelliset voitot",
"Price": "Hinta",
"Price 0,16 €/min + local call charges": "Hinta 0,16 €/min + pvm",
"Price details": "Hintatiedot",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "ALV ei sisälly hintaan",
@@ -515,6 +530,7 @@
"Spice things up": "Mausta asioita",
"Sports": "Urheilu",
"Standard price": "Normaali hinta",
"Standing table": "Standing table",
"Stay at {hotelName} | Hotel in {destination}": "Majoitu kohteessa {hotelName} | Hotelli kohteessa {destination}",
"Street": "Katu",
"Submit": "Submit",
@@ -555,9 +571,11 @@
"Tuesday": "Tiistai",
"Type of bed": "Vuodetyyppi",
"Type of room": "Huonetyyppi",
"U-shape": "U-muoto",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Käytä bonussekkiä",
"Use bonus cheque": "Käytä bonussekkiä",
"Use code/voucher": "Käytä koodia/voucheria",
"User information": "Käyttäjän tiedot",
"VAT": "VAT",
@@ -601,6 +619,9 @@
"Where should you go next?": "Mihin menisit seuraavaksi?",
"Where to?": "Minne?",
"Which room class suits you the best?": "Mikä huoneluokka sopii sinulle parhaiten?",
"Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities",
"Windows natural daylight and excellent view": "Windows natural daylight and excellent view",
"Windows with natural daylight": "Ikkunat luonnonvalolla",
"Year": "Vuosi",
"Yes": "Kyllä",
"Yes, discard changes": "Kyllä, hylkää muutokset",
@@ -639,6 +660,7 @@
"booking.selectRoom": "Valitse huone",
"booking.thisRoomIsEquippedWith": "Tämä huone on varustettu",
"friday": "perjantai",
"max {seatings} pers": "max {seatings} pers",
"monday": "maanantai",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "yö",
@@ -674,6 +696,7 @@
"{min} to {max} characters": "{min} to {max} hahmoja",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} saatavilla",
"{number} km to city center": "{number} km Etäisyys kaupunkiin",
"{number} people": "{number} people",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} pistettä",
"{points} spendable points expiring by {date}": "{points} pistettä vanhenee {date} mennessä",

View File

@@ -11,6 +11,7 @@
"About parking": "Om parkering",
"About the hotel": "Om hotellet",
"Accept new price": "Aksepterer ny pris",
"Access size": "Tilgangsstørrelse",
"Accessibility": "Tilgjengelighet",
"Accessibility at {hotel}": "Tilgjengelighet på {hotel}",
"Accessible room": "Tilgjengelighetsrom",
@@ -62,6 +63,7 @@
"Bike friendly": "Sykkelvennlig",
"Birth date": "Fødselsdato",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Bestill",
"Book Reward Night": "Bestill belønningskveld",
"Book a table online": "Bestill bord online",
@@ -90,6 +92,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Ved å betale med en av de tilgjengelige betalingsmetodene godtar jeg vilkårene og betingelsene for denne bestillingen og de generelle <termsAndConditionsLink>vilkårene</termsAndConditionsLink>, og forstår at Scandic vil behandle mine personopplysninger i forbindelse med denne bestillingen i henhold til <privacyPolicyLink> Scandics personvernpolicy</privacyPolicyLink>. Jeg aksepterer at Scandic krever et gyldig kredittkort under mitt besøk i tilfelle noe blir refundert.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "Ved å registrere deg godtar du Scandic Friends <termsAndConditionsLink>vilkår og betingelser</termsAndConditionsLink>. Medlemskapet ditt er gyldig inntil videre, og du kan si opp medlemskapet ditt når som helst ved å sende en e-post til Scandics kundeservice",
"Cabaret seating": "Cabaret seating",
"Campaign": "Kampanje",
"Cancel": "Avbryt",
"Cancellation policy": "Cancellation policy",
@@ -111,6 +114,7 @@
"City": "By",
"City pulse": "Byens puls",
"City/State": "By/Stat",
"Classroom": "Classroom",
"Clear all filters": "Fjern alle filtre",
"Clear searches": "Tømme søk",
"Click here to log in": "Klikk her for å logge inn",
@@ -152,6 +156,7 @@
"Details": "Detaljer",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Dimensjoner",
"Discard changes": "Forkaste endringer",
"Discard unsaved changes?": "Forkaste endringer som ikke er lagret?",
"Discover": "Oppdag",
@@ -201,6 +206,7 @@
"First name is required": "Fornavn kreves",
"Flexibility": "Fleksibilitet",
"Floor preference": "Etasjepreferans",
"Floor {floorNumber}": "Etasje {floorNumber}",
"Follow us": "Følg oss",
"Food options": "Matvalg",
"Former Scandic Hotel": "Tidligere Scandic-hotell",
@@ -213,6 +219,7 @@
"Friendly room rates": "Tjen bonusnetter og poeng",
"Friends with Benefits": "Friends with Benefits",
"From": "Fra",
"Full circle": "Full circle",
"Garage": "Garasje",
"Get inspired": "Bli inspirert",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -226,6 +233,7 @@
"Guest information": "Informasjon til gjester",
"Guests & Rooms": "Gjester & rom",
"Gym": "Treningsstudio",
"Half circle": "Half circle",
"Hi {firstName}!": "Hei {firstName}!",
"High floor": "Høy nivå",
"Highest level": "Høyeste nivå",
@@ -254,6 +262,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Inkludert",
"Indoor pool": "Innendørs basseng",
"Indoor windows and excellent lighting": "Indoor windows and excellent lighting",
"Indoor windows facing the hotel": "Indoor windows facing the hotel",
"Invalid booking code": "Ugyldig bookingkode",
"Is there anything else you would like us to know before your arrival?": "Er det noe annet du vil at vi skal vite før ankomsten din?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det er ikke mulig å administrere kommunikasjonspreferansene dine akkurat nå, prøv igjen senere eller kontakt support hvis problemet vedvarer.",
@@ -281,9 +291,11 @@
"Level up to unlock": "Nivå opp for å låse opp",
"Level upgraded": "Level upgraded",
"Level {level}": "Nivå {level}",
"Lighting": "Belysning",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Beliggenhet",
"Location in hotel": "Plassering på hotellet",
"Locations": "Steder",
"Log in": "Logg Inn",
"Log in here": "Logg inn her",
@@ -356,6 +368,8 @@
"No prices available": "Ingen priser tilgjengelig",
"No results": "Ingen resultater",
"No transactions available": "Ingen transaksjoner tilgjengelig",
"No windows": "No windows",
"No windows but excellent lighting": "No windows but excellent lighting",
"No, keep card": "Nei, behold kortet",
"Non refundable": "Ikke-refunderbart",
"Non-refundable": "Ikke-refunderbart",
@@ -413,6 +427,7 @@
"Previous": "Tidligere",
"Previous victories": "Tidligere seire",
"Price": "Pris",
"Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokale samtalekostnader",
"Price details": "Prisdetaljer",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "Pris exkludert mva",
@@ -513,6 +528,7 @@
"Spice things up": "Krydre tingene",
"Sports": "Sport",
"Standard price": "Standardpris",
"Standing table": "Standing table",
"Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotell i {destination}",
"Street": "Gate",
"Submit": "Submit",
@@ -553,9 +569,11 @@
"Tuesday": "Tirsdag",
"Type of bed": "Sengtype",
"Type of room": "Romtype",
"U-shape": "U-form",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Bruk bonussjekk",
"Use bonus cheque": "Bruk bonussjekk",
"Use code/voucher": "Bruk kode/voucher",
"User information": "Brukerinformasjon",
"VAT": "VAT",
@@ -599,6 +617,9 @@
"Where should you go next?": "Hvor ønsker du å reise neste gang?",
"Where to?": "Hvor skal du?",
"Which room class suits you the best?": "Hvilken romklasse passer deg best?",
"Windows natural daylight and blackout facilities": "Windows natural daylight and blackout facilities",
"Windows natural daylight and excellent view": "Windows natural daylight and excellent view",
"Windows with natural daylight": "Vinduer med naturlig dagslys",
"Year": "År",
"Yes": "Ja",
"Yes, discard changes": "Ja, forkast endringer",
@@ -637,6 +658,7 @@
"booking.selectRoom": "Velg rom",
"booking.thisRoomIsEquippedWith": "Dette rommet er utstyrt med",
"friday": "fredag",
"max {seatings} pers": "max {seatings} pers",
"monday": "mandag",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "natt",
@@ -672,6 +694,7 @@
"{min} to {max} characters": "{min} til {max} tegn",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tilgjengelig",
"{number} km to city center": "{number} km til sentrum",
"{number} people": "{number} people",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} poeng",
"{points} spendable points expiring by {date}": "{points} Brukbare poeng utløper innen {date}",

View File

@@ -11,6 +11,7 @@
"About parking": "Om parkering",
"About the hotel": "Om hotellet",
"Accept new price": "Accepter ny pris",
"Access size": "Åtkomststorlek",
"Accessibility": "Tillgänglighet",
"Accessibility at {hotel}": "Tillgänglighet på {hotel}",
"Accessible room": "Tillgänglighetsrum",
@@ -62,6 +63,7 @@
"Bike friendly": "Cykelvänligt",
"Birth date": "Födelsedatum",
"Birth date is required": "Birth date is required",
"Boardroom": "Boardroom",
"Book": "Boka",
"Book Reward Night": "Boka frinatt",
"Book a table online": "Boka ett bord online",
@@ -90,6 +92,7 @@
"By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.": "By linking your accounts you accept the <sasScandicTermsAndConditionsLink>Scandic Friends & SAS Terms and Conditions</sasScandicTermsAndConditionsLink>. You will be connected throughout the duration of your employment or until further notice, and you can opt out at any time.",
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Terms & Conditions</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>. I also accept that Scandic require a valid credit card during my visit in case anything is left unpaid.": "Genom att betala med någon av de tillgängliga betalningsmetoderna accepterar jag villkoren för denna bokning och de generella <termsAndConditionsLink>Villkoren och villkoren</termsAndConditionsLink>, och förstår att Scandic kommer att behandla min personliga data i samband med denna bokning i enlighet med <privacyPolicyLink>Scandics integritetspolicy</privacyPolicyLink>. Jag accepterar att Scandic kräver ett giltigt kreditkort under min besök i fall att något är tillbaka betalt.",
"By signing up you accept the Scandic Friends <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. Your membership is valid until further notice, and you can terminate your membership at any time by sending an email to Scandic's customer service": "Genom att registrera dig accepterar du Scandic Friends <termsAndConditionsLink>Användarvillkor</termsAndConditionsLink>. Ditt medlemskap gäller tills vidare och du kan när som helst säga upp ditt medlemskap genom att skicka ett mejl till Scandics kundtjänst",
"Cabaret seating": "Cabaret seating",
"Campaign": "Kampanj",
"Cancel": "Avbryt",
"Cancellation policy": "Cancellation policy",
@@ -111,6 +114,7 @@
"City": "Ort",
"City pulse": "Stadspuls",
"City/State": "Ort",
"Classroom": "Klassrum",
"Clear all filters": "Rensa alla filter",
"Clear searches": "Rensa tidigare sökningar",
"Click here to log in": "Klicka här för att logga in",
@@ -152,6 +156,7 @@
"Details": "Detaljer",
"Dialog": "Dialog",
"Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>": "Didn't receive a code? <resendOtpLink>Resend code</resendOtpLink>",
"Dimensions": "Dimensioner",
"Discard changes": "Ignorera ändringar",
"Discard unsaved changes?": "Vill du ignorera ändringar som inte har sparats?",
"Discover": "Upptäck",
@@ -201,6 +206,7 @@
"First name is required": "Förnamn är obligatoriskt",
"Flexibility": "Flexibilitet",
"Floor preference": "Våningpreferens",
"Floor {floorNumber}": "Våning {floorNumber}",
"Follow us": "Följ oss",
"Food options": "Matval",
"Former Scandic Hotel": "Tidigare Scandichotell",
@@ -213,6 +219,7 @@
"Friendly room rates": "Tjäna bonusnätter och poäng",
"Friends with Benefits": "Friends with Benefits",
"From": "Från",
"Full circle": "Full circle",
"Garage": "Garage",
"Get inspired": "Bli inspirerad",
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.": "Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
@@ -226,6 +233,7 @@
"Guest information": "Information till gästerna",
"Guests & Rooms": "Gäster & rum",
"Gym": "Gym",
"Half circle": "Half circle",
"Hi {firstName}!": "Hej {firstName}!",
"High floor": "Högt upp",
"Highest level": "Högsta nivå",
@@ -254,6 +262,8 @@
"In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.": "In order to verify your account linking we will ask you to sign in to your SAS EuroBonus account.",
"Included": "Inkluderad",
"Indoor pool": "Inomhuspool",
"Indoor windows and excellent lighting": "Fönster inomhus och utmärkt belysning",
"Indoor windows facing the hotel": "Inomhusfönster mot hotellet",
"Invalid booking code": "Ogiltig bokningskod",
"Is there anything else you would like us to know before your arrival?": "Är det något mer du vill att vi ska veta innan din ankomst?",
"It is not posible to manage your communication preferences right now, please try again later or contact support if the problem persists.": "Det gick inte att hantera dina kommunikationsinställningar just nu, försök igen senare eller kontakta supporten om problemet kvarstår.",
@@ -281,9 +291,11 @@
"Level up to unlock": "Levla upp för att låsa upp",
"Level upgraded": "Level upgraded",
"Level {level}": "Nivå {level}",
"Lighting": "Ljussättning",
"Link my accounts": "Link my accounts",
"Link your accounts": "Link your accounts",
"Location": "Plats",
"Location in hotel": "Plats på hotellet",
"Locations": "Platser",
"Log in": "Logga in",
"Log in here": "Logga in här",
@@ -356,6 +368,8 @@
"No prices available": "Inga priser tillgängliga",
"No results": "Inga resultat",
"No transactions available": "Inga transaktioner tillgängliga",
"No windows": "Inga fönster",
"No windows but excellent lighting": "Inga fönster men utmärkt belysning",
"No, keep card": "Nej, behåll kortet",
"Non refundable": "Ej återbetalningsbar",
"Non-refundable": "Ej återbetalningsbar",
@@ -413,6 +427,7 @@
"Previous": "Föregående",
"Previous victories": "Tidigare segrar",
"Price": "Pris",
"Price 0,16 €/min + local call charges": "Pris 0,16 €/min + lokalsamtalsavgifter",
"Price details": "Prisdetaljer",
"Price excl VAT": "Price excl VAT",
"Price excluding VAT": "Pris exkl. VAT",
@@ -513,6 +528,7 @@
"Spice things up": "Krydda upp saker och ting",
"Sports": "Sport",
"Standard price": "Standardpris",
"Standing table": "Ståbord",
"Stay at {hotelName} | Hotel in {destination}": "Bo på {hotelName} | Hotell i {destination}",
"Street": "Gata",
"Submit": "Submit",
@@ -553,9 +569,11 @@
"Tuesday": "Tisdag",
"Type of bed": "Sängtyp",
"Type of room": "Rumstyp",
"U-shape": "U-form",
"Unlink accounts": "Unlink accounts",
"Upgrade expires {upgradeExpires, date, short}": "Upgrade expires {upgradeExpires, date, short}",
"Use Bonus Cheque": "Använd bonuscheck",
"Use bonus cheque": "Använd bonuscheck",
"Use code/voucher": "Använd kod/voucher",
"User information": "Användarinformation",
"VAT": "VAT",
@@ -599,6 +617,9 @@
"Where should you go next?": "Låter inte en spontanweekend härligt?",
"Where to?": "Vart?",
"Which room class suits you the best?": "Vilken rumsklass passar dig bäst?",
"Windows natural daylight and blackout facilities": "Fönster med naturligt dagsljus och mörkläggningsmöjligheter",
"Windows natural daylight and excellent view": "Fönster med naturligt dagsljus och utmärkt utsikt",
"Windows with natural daylight": "Fönster med naturligt dagsljus",
"Year": "År",
"Yes": "Ja",
"Yes, discard changes": "Ja, ignorera ändringar",
@@ -637,6 +658,7 @@
"booking.selectRoom": "Välj rum",
"booking.thisRoomIsEquippedWith": "Detta rum är utrustat med",
"friday": "fredag",
"max {seatings} pers": "max {seatings} pers",
"monday": "måndag",
"next level: {nextLevel}": "next level: {nextLevel}",
"night": "natt",
@@ -674,6 +696,7 @@
"{min} to {max} characters": "{min} till {max} tecken",
"{numberOfRooms, plural, one {# room type} other {# room types}} available": "{numberOfRooms, plural, one {# room type} other {# room types}} tillgängliga",
"{number} km to city center": "{number} km till centrum",
"{number} people": "{number} personer",
"{points, number} Bonus points": "{points, number} Bonus points",
"{pointsAmount, number} points": "{pointsAmount, number} poäng",
"{points} spendable points expiring by {date}": "{points} poäng förfaller {date}",

View File

@@ -23,6 +23,7 @@ import { facilitySchema } from "./additionalData"
import { imageSchema } from "./image"
export const attributesSchema = z.object({
id: z.string().optional(),
address: addressSchema,
cityId: z.string(),
cityName: z.string(),

View File

@@ -4,3 +4,4 @@ import type { meetingRoomsSchema } from "@/server/routers/hotels/schemas/meeting
export type MeetingRoomData = z.output<typeof meetingRoomsSchema>
export type MeetingRooms = MeetingRoomData["data"]
export type MeetingRoom = MeetingRooms[number]["attributes"]

View File

@@ -4,5 +4,5 @@ export type MeetingsAndConferencesSidePeekProps = {
meetingFacilities: Hotel["conferencesAndMeetings"]
descriptions: Hotel["hotelContent"]["texts"]["meetingDescription"]
hotelId: string
link?: string
meetingPageUrl: string | undefined
}

View File

@@ -0,0 +1,4 @@
export interface HotelSubpageProps {
hotelId: string
subpage: string
}

View File

@@ -0,0 +1,20 @@
export enum RoomLighting {
WindowsNaturalDaylight = "WindowsNaturalDaylight",
WindowsNaturalDaylightExcellentView = "WindowsNaturalDaylightExcellentView",
WindowsNaturalDaylightBlackoutFacilities = "WindowsNaturalDaylightBlackoutFacilities",
NoWindows = "NoWindows",
NoWindowsExcellentLighting = "NoWindowsExcellentLighting",
IndoorWindowsFacingHotel = "IndoorWindowsFacingHotel",
IndoorWindowsExcellentLighting = "IndoorWindowsExcellentLighting",
}
export enum SeatingType {
UShape = "UShape",
Classroom = "Classroom",
Boardroom = "Boardroom",
Theatre = "Theatre",
Cabaret = "Cabaret",
StandingTable = "StandingTable",
HalfCircle = "HalfCircle",
FullCircle = "FullCircle",
}