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:
Joakim Jäderberg
2025-10-22 11:00:03 +00:00
parent bdfe2ab213
commit aafad9781f
499 changed files with 93363 additions and 99164 deletions

View File

@@ -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,

View File

@@ -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.",
})}

View File

@@ -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}",
},
{

View File

@@ -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>.",
},

View File

@@ -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>

View File

@@ -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>