Merged in feat/lokalise-rebuild (pull request #2993)
Feat/lokalise rebuild * chore(lokalise): update translation ids * chore(lokalise): easier to switch between projects * chore(lokalise): update translation ids * . * . * . * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * chore(lokalise): new translations * merge * switch to errors for missing id's * merge * sync translations Approved-by: Linus Flood
This commit is contained in:
@@ -79,6 +79,7 @@ export default function Breakfast() {
|
||||
{hasChildrenInRoom ? (
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.breakfast.childrenFreeInfo",
|
||||
defaultMessage:
|
||||
"Children's breakfast is always free as part of the adult's breakfast.",
|
||||
})}
|
||||
@@ -92,26 +93,31 @@ export default function Breakfast() {
|
||||
value={pkg.code}
|
||||
Icon={BreakfastBuffetIcon}
|
||||
title={intl.formatMessage({
|
||||
id: "common.breakfastBuffet",
|
||||
defaultMessage: "Breakfast buffet",
|
||||
})}
|
||||
subtitle={
|
||||
pkg.code === BreakfastPackageEnum.FREE_MEMBER_BREAKFAST
|
||||
? intl.formatMessage({
|
||||
id: "common.included",
|
||||
defaultMessage: "Included",
|
||||
})
|
||||
: `+ ${formatPrice(intl, pkg.localPrice.price, pkg.localPrice.currency ?? "")}`
|
||||
}
|
||||
subtitleSecondary={intl.formatMessage({
|
||||
id: "common.perAdultNight",
|
||||
defaultMessage: "Per adult/night",
|
||||
})}
|
||||
description={
|
||||
hasChildrenInRoom
|
||||
? intl.formatMessage({
|
||||
id: "enterDetails.breakfast.freeForKidsUnder12",
|
||||
defaultMessage: "Free for kids aged 12 and under.",
|
||||
})
|
||||
: undefined
|
||||
}
|
||||
descriptionSecondary={intl.formatMessage({
|
||||
id: "enterDetails.breakfast.dietaryOptions",
|
||||
defaultMessage:
|
||||
"Includes vegan, gluten-free, and other allergy-friendly options.",
|
||||
})}
|
||||
@@ -122,16 +128,19 @@ export default function Breakfast() {
|
||||
value="false"
|
||||
Icon={NoBreakfastBuffetIcon}
|
||||
title={intl.formatMessage({
|
||||
id: "common.noBreakfast",
|
||||
defaultMessage: "No breakfast",
|
||||
})}
|
||||
subtitle={`+ ${formatPrice(intl, totalPriceForNoBreakfast, packages?.[0].localPrice.currency ?? "")}`}
|
||||
descriptionSecondary={
|
||||
hasChildrenInRoom
|
||||
? intl.formatMessage({
|
||||
id: "enterDetails.breakfast.addAfterBookingChildren",
|
||||
defaultMessage:
|
||||
"Breakfast can be added after booking for an extra cost for adults and kids ages 4 and up.",
|
||||
})
|
||||
: intl.formatMessage({
|
||||
id: "enterDetails.breakfast.addAfterBookingNoChilren",
|
||||
defaultMessage:
|
||||
"Breakfast can be added after booking for an additional fee.",
|
||||
})
|
||||
|
||||
@@ -39,6 +39,7 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.confirmBooking.guaranteeLabel",
|
||||
defaultMessage:
|
||||
"I may arrive later than 18:00 and want to guarantee my booking.",
|
||||
})}
|
||||
@@ -53,7 +54,10 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
>
|
||||
<MaterialIcon icon="info" size={20} color="CurrentColor" />
|
||||
<span className={styles.btnText}>
|
||||
{intl.formatMessage({ defaultMessage: "How it works" })}
|
||||
{intl.formatMessage({
|
||||
id: "common.howItWorks",
|
||||
defaultMessage: "How it works",
|
||||
})}
|
||||
</span>
|
||||
</Button>
|
||||
<ModalOverlay className={styles.overlay} isDismissable>
|
||||
@@ -64,6 +68,7 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
<Typography variant="Title/Subtitle/lg">
|
||||
<h3>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.confirmBooking.guaranteeInfoModalTitle",
|
||||
defaultMessage: "Guarantee for late arrival",
|
||||
})}
|
||||
</h3>
|
||||
@@ -71,6 +76,7 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
<Typography variant="Body/Lead text">
|
||||
<p className={styles.text}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.confirmBooking.guaranteeInfoModalDescription",
|
||||
defaultMessage:
|
||||
"When guaranteeing your booking with a credit card, we will hold the booking until 07:00 the day after check-in.",
|
||||
})}
|
||||
@@ -79,6 +85,7 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<p className={styles.text}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.confirmBooking.guaranteeInfoModalNoShowInfo",
|
||||
defaultMessage:
|
||||
"In case of a no-show, your credit card will be charged for the first night.",
|
||||
})}
|
||||
@@ -92,6 +99,7 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
variant="Secondary"
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "common.close",
|
||||
defaultMessage: "Close",
|
||||
})}
|
||||
</Button>
|
||||
@@ -121,15 +129,19 @@ export default function Guarantee({ savedCreditCards }: GuaranteeProps) {
|
||||
name="paymentMethod"
|
||||
label={
|
||||
savedCreditCards?.length
|
||||
? intl.formatMessage({
|
||||
defaultMessage: "OTHER",
|
||||
})
|
||||
? intl
|
||||
.formatMessage({
|
||||
id: "common.other",
|
||||
defaultMessage: "Other",
|
||||
})
|
||||
.toUpperCase()
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
<PaymentOption
|
||||
value={PaymentMethodEnum.card}
|
||||
label={intl.formatMessage({
|
||||
id: "common.creditCard",
|
||||
defaultMessage: "Credit card",
|
||||
})}
|
||||
/>
|
||||
|
||||
@@ -29,6 +29,7 @@ export default function ConfirmBooking({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.smsConfirmationLabel",
|
||||
defaultMessage:
|
||||
"I would like to get my booking confirmation via sms",
|
||||
})}
|
||||
@@ -52,6 +53,7 @@ export function ConfirmBookingRedemption() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.smsConfirmationLabel",
|
||||
defaultMessage:
|
||||
"I would like to get my booking confirmation via sms",
|
||||
})}
|
||||
@@ -63,6 +65,7 @@ export function ConfirmBookingRedemption() {
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.confirmBooking.redemptionGuaranteeInfo",
|
||||
defaultMessage:
|
||||
"When you confirm the booking the room will be guaranteed for late arrival. If you fail to arrive without cancelling in advance or if you cancel after 18:00 local time, you will be charged for one reward night.",
|
||||
})}
|
||||
|
||||
@@ -58,6 +58,7 @@ export default function MemberPriceModal() {
|
||||
<MagicWandIcon width="265px" />
|
||||
<Title as="h3" level="h1" textTransform="regular">
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.memberPriceModal.title",
|
||||
defaultMessage: "Member room price activated",
|
||||
})}
|
||||
</Title>
|
||||
@@ -66,6 +67,7 @@ export default function MemberPriceModal() {
|
||||
<span className={styles.newPrice}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.memberPriceModal.newPriceLabel",
|
||||
defaultMessage: "The new price is",
|
||||
})}
|
||||
</Body>
|
||||
@@ -81,6 +83,7 @@ export default function MemberPriceModal() {
|
||||
</div>
|
||||
<Button intent="primary" theme="base" onClick={() => setIsOpen(false)}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.memberPriceModal.okButtonLabel",
|
||||
defaultMessage: "OK",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -44,12 +44,14 @@ export default function JoinScandicFriendsCard({
|
||||
<span>
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`${intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.title",
|
||||
defaultMessage: "Get the member room price",
|
||||
})}: `}
|
||||
</span>
|
||||
<span className={styles.price}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.priceForRoom",
|
||||
defaultMessage: "{amount} for room {roomNr}",
|
||||
},
|
||||
{
|
||||
@@ -73,6 +75,7 @@ export default function JoinScandicFriendsCard({
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<div>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.joinBeforeCheckinCheckboxLabel",
|
||||
defaultMessage: "Join Scandic Friends before check-in",
|
||||
})}
|
||||
</div>
|
||||
@@ -83,6 +86,7 @@ export default function JoinScandicFriendsCard({
|
||||
<Footnote color="uiTextPlaceholder">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.terms",
|
||||
defaultMessage:
|
||||
"By joining you accept the <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. The Scandic Friends Membership is valid until further notice, but can at any time be terminated by contacting Scandic Customer Service.",
|
||||
},
|
||||
|
||||
@@ -49,6 +49,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<h2 className={styles.priceContainer}>
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.title",
|
||||
defaultMessage: "Get the member room price",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -57,6 +58,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<span className={styles.price}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.priceForRoom",
|
||||
defaultMessage: "{amount} for room {roomNr}",
|
||||
},
|
||||
{
|
||||
@@ -77,6 +79,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<div>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.joinBeforeCheckinCheckboxLabel",
|
||||
defaultMessage: "Join Scandic Friends before check-in",
|
||||
})}
|
||||
</div>
|
||||
@@ -88,6 +91,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
registerOptions={{ onBlur: updateDetailsStore }}
|
||||
disabled={Boolean(joinValue)}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.membershipIdLabel",
|
||||
defaultMessage: "Already a member? Membership ID",
|
||||
})}
|
||||
/>
|
||||
@@ -97,6 +101,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<Footnote color="uiTextPlaceholder">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.terms",
|
||||
defaultMessage:
|
||||
"By joining you accept the <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. The Scandic Friends Membership is valid until further notice, but can at any time be terminated by contacting Scandic Customer Service.",
|
||||
},
|
||||
|
||||
@@ -184,11 +184,13 @@ export default function Details() {
|
||||
className={styles.fullWidth}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.roomInfo.title",
|
||||
defaultMessage: "Guest information",
|
||||
})}
|
||||
</Footnote>
|
||||
<BookingFlowInput
|
||||
label={intl.formatMessage({
|
||||
id: "common.firstName",
|
||||
defaultMessage: "First name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -201,6 +203,7 @@ export default function Details() {
|
||||
/>
|
||||
<BookingFlowInput
|
||||
label={intl.formatMessage({
|
||||
id: "common.lastName",
|
||||
defaultMessage: "Last name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -220,6 +223,7 @@ export default function Details() {
|
||||
errors.countryCode?.message
|
||||
)}
|
||||
label={intl.formatMessage({
|
||||
id: "common.country",
|
||||
defaultMessage: "Country",
|
||||
})}
|
||||
lang={lang}
|
||||
@@ -229,6 +233,7 @@ export default function Details() {
|
||||
<BookingFlowInput
|
||||
className={styles.fullWidth}
|
||||
label={intl.formatMessage({
|
||||
id: "common.emailAddress",
|
||||
defaultMessage: "Email address",
|
||||
})}
|
||||
name="email"
|
||||
@@ -236,6 +241,7 @@ export default function Details() {
|
||||
/>
|
||||
<Phone
|
||||
countryLabel={intl.formatMessage({
|
||||
id: "common.countryCode",
|
||||
defaultMessage: "Country code",
|
||||
})}
|
||||
countriesWithTranslatedName={getFormattedCountryList(intl)}
|
||||
@@ -247,6 +253,7 @@ export default function Details() {
|
||||
)}
|
||||
className={styles.fullWidth}
|
||||
label={intl.formatMessage({
|
||||
id: "common.phoneNumber",
|
||||
defaultMessage: "Phone number",
|
||||
})}
|
||||
name="phoneNumber"
|
||||
@@ -256,6 +263,7 @@ export default function Details() {
|
||||
<BookingFlowInput
|
||||
className={styles.fullWidth}
|
||||
label={intl.formatMessage({
|
||||
id: "common.membershipId",
|
||||
defaultMessage: "Membership ID",
|
||||
})}
|
||||
name="membershipNo"
|
||||
|
||||
@@ -45,6 +45,7 @@ export function JoinScandicFriendsCard({ name = "join" }: Props) {
|
||||
<span>
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
{`${intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.title",
|
||||
defaultMessage: "Get the member room price",
|
||||
})}: `}
|
||||
</span>
|
||||
@@ -65,6 +66,7 @@ export function JoinScandicFriendsCard({ name = "join" }: Props) {
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<div>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.joinCheckboxLabel",
|
||||
defaultMessage: "Join Scandic Friends now",
|
||||
})}
|
||||
</div>
|
||||
@@ -83,6 +85,7 @@ export function JoinScandicFriendsCard({ name = "join" }: Props) {
|
||||
redirectTo={loginPathname}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.loginButtonText",
|
||||
defaultMessage: "Log in",
|
||||
})}
|
||||
</LoginButton>
|
||||
@@ -92,6 +95,7 @@ export function JoinScandicFriendsCard({ name = "join" }: Props) {
|
||||
<Footnote color="uiTextPlaceholder">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.terms",
|
||||
defaultMessage:
|
||||
"By joining you accept the <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. The Scandic Friends Membership is valid until further notice, but can at any time be terminated by contacting Scandic Customer Service.",
|
||||
},
|
||||
|
||||
@@ -55,6 +55,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<h2 className={styles.priceContainer}>
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.title",
|
||||
defaultMessage: "Get the member room price",
|
||||
})}
|
||||
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
||||
@@ -74,6 +75,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
<div>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.joinCheckboxLabel",
|
||||
defaultMessage: "Join Scandic Friends now",
|
||||
})}
|
||||
</div>
|
||||
@@ -85,6 +87,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
registerOptions={{ onBlur: updateDetailsStore }}
|
||||
disabled={Boolean(joinValue)}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.joinScandicFriendsCard.membershipIdLabel",
|
||||
defaultMessage: "Already a member? Membership ID",
|
||||
})}
|
||||
/>
|
||||
@@ -94,6 +97,7 @@ export function PartnerSASJoinScandicFriendsCard({
|
||||
<Footnote color="uiTextPlaceholder">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.joinScandicFriendsCard.terms",
|
||||
defaultMessage:
|
||||
"By joining you accept the <termsAndConditionsLink>Terms and Conditions</termsAndConditionsLink>. The Scandic Friends Membership is valid until further notice, but can at any time be terminated by contacting Scandic Customer Service.",
|
||||
},
|
||||
|
||||
@@ -22,6 +22,7 @@ export function MembershipNumberInput({
|
||||
label={
|
||||
label ||
|
||||
intl.formatMessage({
|
||||
id: "common.membershipId",
|
||||
defaultMessage: "Membership ID",
|
||||
})
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ export default function Signup({
|
||||
<BookingFlowInput
|
||||
name="zipCode"
|
||||
label={intl.formatMessage({
|
||||
id: "common.zipCode",
|
||||
defaultMessage: "Zip code",
|
||||
})}
|
||||
registerOptions={{ required: true, ...registerOptions }}
|
||||
@@ -57,6 +58,7 @@ export default function Signup({
|
||||
<Caption type="bold">
|
||||
<span className={styles.required}>
|
||||
{intl.formatMessage({
|
||||
id: "common.birthDate",
|
||||
defaultMessage: "Birth date",
|
||||
})}
|
||||
</span>
|
||||
@@ -64,9 +66,18 @@ export default function Signup({
|
||||
</header>
|
||||
<DateSelect
|
||||
labels={{
|
||||
day: intl.formatMessage({ defaultMessage: "Day" }),
|
||||
month: intl.formatMessage({ defaultMessage: "Month" }),
|
||||
year: intl.formatMessage({ defaultMessage: "Year" }),
|
||||
day: intl.formatMessage({
|
||||
id: "common.day",
|
||||
defaultMessage: "Day",
|
||||
}),
|
||||
month: intl.formatMessage({
|
||||
id: "common.month",
|
||||
defaultMessage: "Month",
|
||||
}),
|
||||
year: intl.formatMessage({
|
||||
id: "common.year",
|
||||
defaultMessage: "Year",
|
||||
}),
|
||||
errorMessage: getErrorMessage(
|
||||
intl,
|
||||
config.variant,
|
||||
|
||||
@@ -170,12 +170,14 @@ export default function Details({ user }: DetailsProps) {
|
||||
className={styles.fullWidth}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.roomInfo.title",
|
||||
defaultMessage: "Guest information",
|
||||
})}
|
||||
</Footnote>
|
||||
<BookingFlowInput
|
||||
autoComplete="given-name"
|
||||
label={intl.formatMessage({
|
||||
id: "common.firstName",
|
||||
defaultMessage: "First name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -186,6 +188,7 @@ export default function Details({ user }: DetailsProps) {
|
||||
<BookingFlowInput
|
||||
autoComplete="family-name"
|
||||
label={intl.formatMessage({
|
||||
id: "common.lastName",
|
||||
defaultMessage: "Last name",
|
||||
})}
|
||||
maxLength={30}
|
||||
@@ -196,6 +199,7 @@ export default function Details({ user }: DetailsProps) {
|
||||
<CountrySelect
|
||||
className={styles.fullWidth}
|
||||
label={intl.formatMessage({
|
||||
id: "common.country",
|
||||
defaultMessage: "Country",
|
||||
})}
|
||||
lang={lang}
|
||||
@@ -213,6 +217,7 @@ export default function Details({ user }: DetailsProps) {
|
||||
autoComplete="email"
|
||||
className={styles.fullWidth}
|
||||
label={intl.formatMessage({
|
||||
id: "common.emailAddress",
|
||||
defaultMessage: "Email address",
|
||||
})}
|
||||
name="email"
|
||||
@@ -222,6 +227,7 @@ export default function Details({ user }: DetailsProps) {
|
||||
<Phone
|
||||
className={styles.fullWidth}
|
||||
countryLabel={intl.formatMessage({
|
||||
id: "common.countryCode",
|
||||
defaultMessage: "Country code",
|
||||
})}
|
||||
countriesWithTranslatedName={getFormattedCountryList(intl)}
|
||||
@@ -232,6 +238,7 @@ export default function Details({ user }: DetailsProps) {
|
||||
formState.errors.phoneNumber?.message
|
||||
)}
|
||||
label={intl.formatMessage({
|
||||
id: "common.phoneNumber",
|
||||
defaultMessage: "Phone number",
|
||||
})}
|
||||
name="phoneNumber"
|
||||
|
||||
@@ -19,6 +19,7 @@ export function SpecialRequests({
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<p className={styles.heading}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.specialRequests.heading",
|
||||
defaultMessage: "Special requests (optional)",
|
||||
})}
|
||||
</p>
|
||||
@@ -64,6 +65,7 @@ export function SpecialRequests({
|
||||
/> */}
|
||||
<TextArea
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.specialRequests.commentLabel",
|
||||
defaultMessage:
|
||||
"Is there anything else you would like us to know before your arrival?",
|
||||
})}
|
||||
|
||||
@@ -63,6 +63,7 @@ export default function HotelHeader({
|
||||
restaurants={restaurants}
|
||||
additionalHotelData={additionalData}
|
||||
triggerLabel={intl.formatMessage({
|
||||
id: "destination.seeHotelDetails",
|
||||
defaultMessage: "See hotel details",
|
||||
})}
|
||||
buttonVariant={"secondary"}
|
||||
|
||||
@@ -47,16 +47,19 @@ function useBookingErrorAlert() {
|
||||
switch (errorCode) {
|
||||
case BookingErrorCodeEnum.TransactionCancelled:
|
||||
return intl.formatMessage({
|
||||
id: "enterDetails.bookingAlert.transactionCancelled",
|
||||
defaultMessage: "You have now cancelled your payment.",
|
||||
})
|
||||
case BookingErrorCodeEnum.AvailabilityError:
|
||||
case BookingErrorCodeEnum.NoAvailabilityForRateAndRoomType:
|
||||
return intl.formatMessage({
|
||||
id: "error.availabilityErrorMessage",
|
||||
defaultMessage:
|
||||
"Unfortunately, one of the rooms you selected is sold out. Please choose another room to proceed.",
|
||||
})
|
||||
default:
|
||||
return intl.formatMessage({
|
||||
id: "enterDetails.bookingAlert.genericError",
|
||||
defaultMessage:
|
||||
"We had an issue processing your booking. Please try again. No charges have been made.",
|
||||
})
|
||||
@@ -151,6 +154,7 @@ export default function BookingAlert({ isVisible = false }: BookingAlertProps) {
|
||||
isAvailabilityError
|
||||
? {
|
||||
title: intl.formatMessage({
|
||||
id: "enterDetails.bookingAlert.changeRoomLink",
|
||||
defaultMessage: "Change room",
|
||||
}),
|
||||
url: selectRateReturnUrl,
|
||||
|
||||
@@ -13,6 +13,7 @@ export default function GuaranteeDetails() {
|
||||
<Caption color="burgundy" type="bold" asChild>
|
||||
<summary className={styles.summary}>
|
||||
{intl.formatMessage({
|
||||
id: "common.howItWorks",
|
||||
defaultMessage: "How it works",
|
||||
})}
|
||||
<MaterialIcon
|
||||
@@ -25,12 +26,14 @@ export default function GuaranteeDetails() {
|
||||
<section className={styles.content}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfoDescription",
|
||||
defaultMessage:
|
||||
"When guaranteeing your booking, we will hold the booking until 07:00 until the day after check-in. This will provide you as a guest with added flexibility for check-in times.",
|
||||
})}
|
||||
</Body>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfoWhatToDo",
|
||||
defaultMessage: "What you have to do to guarantee booking:",
|
||||
})}
|
||||
</Body>
|
||||
@@ -38,6 +41,7 @@ export default function GuaranteeDetails() {
|
||||
<Body asChild>
|
||||
<li>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfoCompleteBooking",
|
||||
defaultMessage: "Complete the booking",
|
||||
})}
|
||||
</li>
|
||||
@@ -45,6 +49,7 @@ export default function GuaranteeDetails() {
|
||||
<Body asChild>
|
||||
<li>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfoProvideCard",
|
||||
defaultMessage: "Provide a payment card in the next step",
|
||||
})}
|
||||
</li>
|
||||
@@ -52,6 +57,7 @@ export default function GuaranteeDetails() {
|
||||
</ol>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfoMandatoryNote",
|
||||
defaultMessage:
|
||||
"Please note that this is mandatory, and that your card will only be charged in the event of a no-show.",
|
||||
})}
|
||||
|
||||
@@ -35,9 +35,11 @@ export default function MixedRatePaymentBreakdown({
|
||||
}: MixedRatePaymentBreakdownProps) {
|
||||
const intl = useIntl()
|
||||
const payNowTitle = intl.formatMessage({
|
||||
id: "booking.payNow",
|
||||
defaultMessage: "Pay now",
|
||||
})
|
||||
const payAtCheckInTitle = intl.formatMessage({
|
||||
id: "enterDetails.payment.payAtCheckInOption",
|
||||
defaultMessage: "Pay at check-in",
|
||||
})
|
||||
|
||||
@@ -125,6 +127,7 @@ function PaymentCard({
|
||||
{"/ "}
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -22,12 +22,14 @@ export default function TimeoutSpinner() {
|
||||
<LoadingSpinner />
|
||||
<Subtitle className={styles.heading}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.loadingTitle",
|
||||
defaultMessage: "Taking longer than usual",
|
||||
})}
|
||||
</Subtitle>
|
||||
<Body textAlign="center" className={styles.messageContainer}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.payment.loadingMessage",
|
||||
defaultMessage:
|
||||
"We are still confirming your booking. This is usually a matter of minutes and we do apologise for the wait. Please check your inbox for a booking confirmation email and if you still haven't received it by end of day, please contact our <link>customer support</link>.",
|
||||
},
|
||||
|
||||
@@ -525,8 +525,12 @@ export default function PaymentClient({
|
||||
]
|
||||
)
|
||||
|
||||
const finalStep = intl.formatMessage({ defaultMessage: "Final step" })
|
||||
const finalStep = intl.formatMessage({
|
||||
id: "enterDetails.payment.onlyFlexRatesTitle",
|
||||
defaultMessage: "Final step",
|
||||
})
|
||||
const selectPayment = intl.formatMessage({
|
||||
id: "enterDetails.payment.title",
|
||||
defaultMessage: "Select payment method",
|
||||
})
|
||||
|
||||
@@ -558,6 +562,7 @@ export default function PaymentClient({
|
||||
<section className={styles.section}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.guaranteeInfo",
|
||||
defaultMessage:
|
||||
"To secure your reservation, we kindly ask you to provide your payment card details. Rest assured, no charges will be made at this time.",
|
||||
})}
|
||||
@@ -569,6 +574,7 @@ export default function PaymentClient({
|
||||
{hasMixedRates ? (
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.mixedRatesInfo",
|
||||
defaultMessage:
|
||||
"As your booking includes rooms with different terms, we will be charging part of the booking now and the remainder will be collected by the reception at check-in.",
|
||||
})}
|
||||
@@ -582,6 +588,7 @@ export default function PaymentClient({
|
||||
>
|
||||
<Label className="sr-only">
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.paymentMethods",
|
||||
defaultMessage: "Payment methods",
|
||||
})}
|
||||
</Label>
|
||||
@@ -591,6 +598,7 @@ export default function PaymentClient({
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "payment.mySavedCards",
|
||||
defaultMessage: "My saved cards",
|
||||
})}
|
||||
</span>
|
||||
@@ -612,6 +620,7 @@ export default function PaymentClient({
|
||||
<Typography variant="Title/Overline/sm">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.payment.otherPaymentMethods",
|
||||
defaultMessage: "Other payment methods",
|
||||
})}
|
||||
</span>
|
||||
@@ -621,6 +630,7 @@ export default function PaymentClient({
|
||||
<PaymentOption
|
||||
value={PaymentMethodEnum.card}
|
||||
label={intl.formatMessage({
|
||||
id: "common.creditCard",
|
||||
defaultMessage: "Credit card",
|
||||
})}
|
||||
/>
|
||||
@@ -650,6 +660,7 @@ export default function PaymentClient({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.smsConfirmationLabel",
|
||||
defaultMessage:
|
||||
"I would like to get my booking confirmation via sms",
|
||||
})}
|
||||
@@ -671,6 +682,7 @@ export default function PaymentClient({
|
||||
typography="Body/Supporting text (caption)/smBold"
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.completeBooking",
|
||||
defaultMessage: "Complete booking",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -27,6 +27,7 @@ export default function TermsAndConditions({
|
||||
{isFlexBookingTerms
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.payment.flexBookingTermsAndConditions",
|
||||
defaultMessage:
|
||||
"I accept the terms for this booking and the general <termsAndConditionsLink>Booking & Cancellation Terms</termsAndConditionsLink>, and understand that Scandic will process my personal data for this booking in accordance with <privacyPolicyLink>Scandic's Privacy policy</privacyPolicyLink>.",
|
||||
},
|
||||
@@ -59,6 +60,7 @@ export default function TermsAndConditions({
|
||||
)
|
||||
: intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.payment.termsAndConditions",
|
||||
defaultMessage:
|
||||
"By paying with any of the payment methods available, I accept the terms for this booking and the general <termsAndConditionsLink>Booking & Cancellation Terms</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 requires a valid payment card during my visit in case anything is left unpaid.",
|
||||
},
|
||||
@@ -97,6 +99,7 @@ export default function TermsAndConditions({
|
||||
}}
|
||||
errorCodeMessages={{
|
||||
[paymentError.TERMS_REQUIRED]: intl.formatMessage({
|
||||
id: "common.mustAcceptTermsError",
|
||||
defaultMessage: "You must accept the terms and conditions",
|
||||
}),
|
||||
}}
|
||||
@@ -104,6 +107,7 @@ export default function TermsAndConditions({
|
||||
<Typography variant="Body/Paragraph/mdBold">
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.acceptBookingTerms",
|
||||
defaultMessage: "I accept the booking and cancellation terms",
|
||||
})}
|
||||
</span>
|
||||
|
||||
@@ -52,6 +52,7 @@ export default function PriceChangeSummary({
|
||||
onClick={() => toggleOpen((isOpen) => !isOpen)}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.seePriceDetailsButton",
|
||||
defaultMessage: "See price details",
|
||||
})}
|
||||
<MaterialIcon icon="chevron_right" size={20} color="CurrentColor" />
|
||||
@@ -64,6 +65,7 @@ export default function PriceChangeSummary({
|
||||
<header className={styles.header}>
|
||||
<Subtitle>
|
||||
{intl.formatMessage({
|
||||
id: "common.priceDetails",
|
||||
defaultMessage: "Price details",
|
||||
})}
|
||||
</Subtitle>
|
||||
@@ -88,11 +90,13 @@ export default function PriceChangeSummary({
|
||||
{rooms.length > 1
|
||||
? intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{ roomIndex: roomNumber }
|
||||
)
|
||||
: intl.formatMessage({
|
||||
id: "common.room",
|
||||
defaultMessage: "Room",
|
||||
})}
|
||||
</Body>
|
||||
@@ -100,6 +104,7 @@ export default function PriceChangeSummary({
|
||||
<div className={styles.priceRow}>
|
||||
<Caption color="uiTextMediumContrast">
|
||||
{intl.formatMessage({
|
||||
id: "priceDetails.roomCharge",
|
||||
defaultMessage: "Room charge",
|
||||
})}
|
||||
</Caption>
|
||||
@@ -137,6 +142,7 @@ export default function PriceChangeSummary({
|
||||
<div className={styles.priceRow}>
|
||||
<Caption color="uiTextMediumContrast">
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.breakfastCharge",
|
||||
defaultMessage: "Breakfast charge",
|
||||
})}
|
||||
</Caption>
|
||||
@@ -181,12 +187,14 @@ export default function PriceChangeSummary({
|
||||
<div className={styles.rowContainer}>
|
||||
<Body>
|
||||
{intl.formatMessage({
|
||||
id: "common.total",
|
||||
defaultMessage: "Total",
|
||||
})}
|
||||
</Body>
|
||||
<div className={styles.priceRow}>
|
||||
<Body textTransform="bold">
|
||||
{intl.formatMessage({
|
||||
id: "booking.priceIncludingVat",
|
||||
defaultMessage: "Price including VAT",
|
||||
})}
|
||||
</Body>
|
||||
@@ -203,11 +211,13 @@ export default function PriceChangeSummary({
|
||||
<footer className={styles.footer}>
|
||||
<Button intent="secondary" onClick={onCancel}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.cancelButton",
|
||||
defaultMessage: "Back to room selection",
|
||||
})}
|
||||
</Button>
|
||||
<Button onClick={onAccept}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.acceptButton",
|
||||
defaultMessage: "Continue with new price",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -41,6 +41,7 @@ export default function PriceChangeDialog({
|
||||
}: PriceChangeDialogProps) {
|
||||
const intl = useIntl()
|
||||
const title = intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.title",
|
||||
defaultMessage: "Price change",
|
||||
})
|
||||
const rooms = useEnterDetailsStore((state) => state.rooms)
|
||||
@@ -68,6 +69,7 @@ export default function PriceChangeDialog({
|
||||
|
||||
const roomSelectionMsg = intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.priceChangeDialog.descriptionPreviousRooms",
|
||||
defaultMessage: "{totalRooms, plural, one {room} other {rooms}}",
|
||||
},
|
||||
{
|
||||
@@ -77,6 +79,7 @@ export default function PriceChangeDialog({
|
||||
|
||||
const newRoomSelectionMsg = intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.priceChangeDialog.descriptionNewRooms",
|
||||
defaultMessage:
|
||||
"{totalRooms, plural, one {a new room} other {new rooms}}",
|
||||
},
|
||||
@@ -112,6 +115,7 @@ export default function PriceChangeDialog({
|
||||
<Body textAlign="center">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.priceChangeDialog.description",
|
||||
defaultMessage:
|
||||
"Prices have increased since you selected your {roomSelection}.{linebreak} To continue your booking, accept the updated price,{linebreak} or go back to select {newRoomSelection}.",
|
||||
},
|
||||
@@ -125,6 +129,7 @@ export default function PriceChangeDialog({
|
||||
<div>
|
||||
<Subtitle textAlign="center" color="burgundy">
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.newTotalLabel",
|
||||
defaultMessage: "New total",
|
||||
})}
|
||||
</Subtitle>
|
||||
@@ -148,11 +153,13 @@ export default function PriceChangeDialog({
|
||||
<footer className={styles.footer}>
|
||||
<Button intent="secondary" onClick={onCancel}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.cancelButton",
|
||||
defaultMessage: "Back to room selection",
|
||||
})}
|
||||
</Button>
|
||||
<Button onClick={onAccept}>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.priceChangeDialog.acceptButton",
|
||||
defaultMessage: "Continue with new price",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -41,6 +41,7 @@ export default function Multiroom() {
|
||||
<Title level="h2" as="h4">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
@@ -54,8 +55,14 @@ export default function Multiroom() {
|
||||
|
||||
{room.bedTypes.length ? (
|
||||
<Section
|
||||
header={intl.formatMessage({ defaultMessage: "Bed preference" })}
|
||||
label={intl.formatMessage({ defaultMessage: "Preferred bed type" })}
|
||||
header={intl.formatMessage({
|
||||
id: "booking.bedPreference",
|
||||
defaultMessage: "Bed preference",
|
||||
})}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.bedPreference.description",
|
||||
defaultMessage: "Preferred bed type",
|
||||
})}
|
||||
additionalInfo={bedTypeInfoText}
|
||||
step={EnterDetailsStepEnum.selectBed}
|
||||
>
|
||||
@@ -66,9 +73,11 @@ export default function Multiroom() {
|
||||
{showBreakfastStep ? (
|
||||
<Section
|
||||
header={intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.breakfast.description",
|
||||
defaultMessage: "Select breakfast options",
|
||||
})}
|
||||
step={EnterDetailsStepEnum.breakfast}
|
||||
@@ -79,10 +88,12 @@ export default function Multiroom() {
|
||||
|
||||
<Section
|
||||
header={intl.formatMessage({
|
||||
id: "enterDetails.details.title",
|
||||
defaultMessage: "Details",
|
||||
})}
|
||||
step={EnterDetailsStepEnum.details}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.details.description",
|
||||
defaultMessage: "Contact details",
|
||||
})}
|
||||
>
|
||||
|
||||
@@ -45,6 +45,7 @@ export default function RoomOne({ user }: { user: User | null }) {
|
||||
<Title level="h2" as="h4">
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
@@ -59,8 +60,14 @@ export default function RoomOne({ user }: { user: User | null }) {
|
||||
|
||||
{room.bedTypes ? (
|
||||
<Section
|
||||
header={intl.formatMessage({ defaultMessage: "Bed preference" })}
|
||||
label={intl.formatMessage({ defaultMessage: "Preferred bed type" })}
|
||||
header={intl.formatMessage({
|
||||
id: "booking.bedPreference",
|
||||
defaultMessage: "Bed preference",
|
||||
})}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.bedPreference.description",
|
||||
defaultMessage: "Preferred bed type",
|
||||
})}
|
||||
additionalInfo={bedTypeInfoText}
|
||||
step={EnterDetailsStepEnum.selectBed}
|
||||
>
|
||||
@@ -71,9 +78,11 @@ export default function RoomOne({ user }: { user: User | null }) {
|
||||
{showBreakfastStep ? (
|
||||
<Section
|
||||
header={intl.formatMessage({
|
||||
id: "common.breakfast",
|
||||
defaultMessage: "Breakfast",
|
||||
})}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.breakfast.description",
|
||||
defaultMessage: "Select breakfast options",
|
||||
})}
|
||||
step={EnterDetailsStepEnum.breakfast}
|
||||
@@ -84,10 +93,12 @@ export default function RoomOne({ user }: { user: User | null }) {
|
||||
|
||||
<Section
|
||||
header={intl.formatMessage({
|
||||
id: "enterDetails.details.title",
|
||||
defaultMessage: "Details",
|
||||
})}
|
||||
step={EnterDetailsStepEnum.details}
|
||||
label={intl.formatMessage({
|
||||
id: "enterDetails.details.description",
|
||||
defaultMessage: "Contact details",
|
||||
})}
|
||||
>
|
||||
|
||||
@@ -6,10 +6,12 @@ export function getBedTypeInfoText(
|
||||
hasMultipleBedTypes: boolean
|
||||
) {
|
||||
const availabilityText = intl.formatMessage({
|
||||
id: "booking.subjectToAvailability",
|
||||
defaultMessage: "Subject to availability",
|
||||
})
|
||||
|
||||
const extraBedText = intl.formatMessage({
|
||||
id: "enterDetails.room.extraBedText",
|
||||
defaultMessage: "Extra bed will be provided additionally",
|
||||
})
|
||||
|
||||
|
||||
@@ -34,9 +34,11 @@ export default function Section({
|
||||
const [title, setTitle] = useState(label)
|
||||
|
||||
const noBreakfastTitle = intl.formatMessage({
|
||||
id: "common.noBreakfast",
|
||||
defaultMessage: "No breakfast",
|
||||
})
|
||||
const breakfastTitle = intl.formatMessage({
|
||||
id: "common.breakfastBuffet",
|
||||
defaultMessage: "Breakfast buffet",
|
||||
})
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ export default function SelectedRoom() {
|
||||
>
|
||||
<h2>
|
||||
{intl.formatMessage({
|
||||
id: "common.room",
|
||||
defaultMessage: "Room",
|
||||
})}
|
||||
</h2>
|
||||
@@ -67,6 +68,7 @@ export default function SelectedRoom() {
|
||||
>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "enterDetails.selectedRoom.roomType.description",
|
||||
defaultMessage: "{roomType} <rate>{rateDescription}</rate>",
|
||||
},
|
||||
{
|
||||
@@ -88,6 +90,7 @@ export default function SelectedRoom() {
|
||||
>
|
||||
<MaterialIcon icon="edit_square" size={20} color="CurrentColor" />
|
||||
{intl.formatMessage({
|
||||
id: "common.change",
|
||||
defaultMessage: "Change",
|
||||
})}
|
||||
</Button>
|
||||
@@ -100,6 +103,7 @@ export default function SelectedRoom() {
|
||||
room={selectedRoom}
|
||||
buttonVariant="primary"
|
||||
triggerLabel={intl.formatMessage({
|
||||
id: "hotel.seeRoomDetails",
|
||||
defaultMessage: "See room details",
|
||||
})}
|
||||
wrapping={false}
|
||||
|
||||
@@ -80,6 +80,7 @@ export default function SummaryBottomSheet({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<span className={styles.priceLabel}>
|
||||
{intl.formatMessage({
|
||||
id: "common.totalPrice",
|
||||
defaultMessage: "Total price",
|
||||
})}
|
||||
</span>
|
||||
@@ -117,6 +118,7 @@ export default function SummaryBottomSheet({
|
||||
<span className={styles.seeDetails}>
|
||||
<span>
|
||||
{intl.formatMessage({
|
||||
id: "booking.seeDetails",
|
||||
defaultMessage: "See details",
|
||||
})}
|
||||
</span>
|
||||
@@ -139,6 +141,7 @@ export default function SummaryBottomSheet({
|
||||
form={formId}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "enterDetails.completeBooking",
|
||||
defaultMessage: "Complete booking",
|
||||
})}
|
||||
</Button>
|
||||
|
||||
@@ -26,6 +26,7 @@ export default function Breakfast({
|
||||
const intl = useIntl()
|
||||
|
||||
const breakfastBuffet = intl.formatMessage({
|
||||
id: "common.breakfastBuffet",
|
||||
defaultMessage: "Breakfast buffet",
|
||||
})
|
||||
|
||||
@@ -36,7 +37,10 @@ export default function Breakfast({
|
||||
breakfast.localPrice.price * adults * nights,
|
||||
breakfast.localPrice.currency
|
||||
)
|
||||
: intl.formatMessage({ defaultMessage: "Included" })
|
||||
: intl.formatMessage({
|
||||
id: "common.included",
|
||||
defaultMessage: "Included",
|
||||
})
|
||||
return (
|
||||
<div className={styles.entry}>
|
||||
<div>
|
||||
@@ -55,7 +59,10 @@ export default function Breakfast({
|
||||
}
|
||||
|
||||
if (breakfast === false) {
|
||||
const noBreakfast = intl.formatMessage({ defaultMessage: "No breakfast" })
|
||||
const noBreakfast = intl.formatMessage({
|
||||
id: "common.noBreakfast",
|
||||
defaultMessage: "No breakfast",
|
||||
})
|
||||
return (
|
||||
<div className={styles.entry}>
|
||||
<Typography variant="Body/Paragraph/mdRegular">
|
||||
|
||||
@@ -78,6 +78,7 @@ export default function Room({
|
||||
|
||||
const adultsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfAdults",
|
||||
defaultMessage: "{totalAdults, plural, one {# adult} other {# adults}}",
|
||||
},
|
||||
{ totalAdults: adults }
|
||||
@@ -87,6 +88,7 @@ export default function Room({
|
||||
if (childrenInRoom?.length) {
|
||||
const childrenMsg = intl.formatMessage(
|
||||
{
|
||||
id: "common.numberOfChildren",
|
||||
defaultMessage:
|
||||
"{totalChildren, plural, one {# child} other {# children}}",
|
||||
},
|
||||
@@ -135,6 +137,7 @@ export default function Room({
|
||||
<p className={styles.roomTitle}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.roomIndex",
|
||||
defaultMessage: "Room {roomIndex}",
|
||||
},
|
||||
{
|
||||
@@ -189,6 +192,7 @@ export default function Room({
|
||||
wrapping={false}
|
||||
>
|
||||
{intl.formatMessage({
|
||||
id: "booking.rateDetails",
|
||||
defaultMessage: "Rate details",
|
||||
})}
|
||||
<MaterialIcon
|
||||
@@ -254,6 +258,7 @@ export default function Room({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.subjectToAvailability",
|
||||
defaultMessage: "Subject to availability",
|
||||
})}
|
||||
</p>
|
||||
@@ -274,6 +279,7 @@ export default function Room({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfCribs",
|
||||
defaultMessage: "Crib (child) × {count}",
|
||||
},
|
||||
{ count: childBedCrib }
|
||||
@@ -282,6 +288,7 @@ export default function Room({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.subjectToAvailability",
|
||||
defaultMessage: "Subject to availability",
|
||||
})}
|
||||
</p>
|
||||
@@ -303,6 +310,7 @@ export default function Room({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.extraBedsCount",
|
||||
defaultMessage: "Extra bed (child) × {count}",
|
||||
},
|
||||
{
|
||||
@@ -313,6 +321,7 @@ export default function Room({
|
||||
<Typography variant="Body/Supporting text (caption)/smRegular">
|
||||
<p>
|
||||
{intl.formatMessage({
|
||||
id: "booking.subjectToAvailability",
|
||||
defaultMessage: "Subject to availability",
|
||||
})}
|
||||
</p>
|
||||
|
||||
@@ -56,6 +56,7 @@ export default function SummaryUI({
|
||||
|
||||
const nightsMsg = intl.formatMessage(
|
||||
{
|
||||
id: "booking.numberOfNights",
|
||||
defaultMessage: "{totalNights, plural, one {# night} other {# nights}}",
|
||||
},
|
||||
{ totalNights: nights }
|
||||
@@ -102,6 +103,7 @@ export default function SummaryUI({
|
||||
>
|
||||
<Subtitle className={styles.title} type="two">
|
||||
{intl.formatMessage({
|
||||
id: "booking.bookingSummary",
|
||||
defaultMessage: "Booking summary",
|
||||
})}
|
||||
</Subtitle>
|
||||
@@ -144,6 +146,7 @@ export default function SummaryUI({
|
||||
<p>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.totalPriceInclVat",
|
||||
defaultMessage: "<b>Total price</b> (incl VAT)",
|
||||
},
|
||||
{
|
||||
@@ -161,6 +164,7 @@ export default function SummaryUI({
|
||||
<p className={styles.approxPrice}>
|
||||
{intl.formatMessage(
|
||||
{
|
||||
id: "booking.approxValue",
|
||||
defaultMessage: "Approx. {value}",
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user