Merged in fix/Lokalise-EN-edits-2025-10 (pull request #2962)

Fix/Lokalise English manual updates

* fix: update English keys


Approved-by: Linus Flood
This commit is contained in:
Matilda Landström
2025-10-16 15:04:58 +00:00
parent 038211bf09
commit bacdc669a3
37 changed files with 58 additions and 80 deletions

View File

@@ -63,7 +63,8 @@ export const editProfile = protectedServerActionProcedure
message: issue.message, message: issue.message,
})), })),
message: intl.formatMessage({ message: intl.formatMessage({
defaultMessage: "An error occured when trying to update profile.", defaultMessage:
"An error occurred when trying to update your profile.",
}), }),
status: Status.error, status: Status.error,
} }
@@ -83,7 +84,8 @@ export const editProfile = protectedServerActionProcedure
data: input, data: input,
issues: [], issues: [],
message: intl.formatMessage({ message: intl.formatMessage({
defaultMessage: "An error occured when trying to update profile.", defaultMessage:
"An error occurred when trying to update your profile.",
}), }),
status: Status.error, status: Status.error,
} }
@@ -131,8 +133,9 @@ export const editProfile = protectedServerActionProcedure
} }
if (payload.data[typedKey] !== profile[typedKey]) { if (payload.data[typedKey] !== profile[typedKey]) {
// @ts-ignore if (typedKey === "language") {
body[typedKey] = payload.data[typedKey] body[typedKey] = payload.data[typedKey]
} else body[typedKey] = payload.data[typedKey]
} }
}) })
@@ -176,7 +179,8 @@ export const editProfile = protectedServerActionProcedure
data: input, data: input,
issues: [], issues: [],
message: intl.formatMessage({ message: intl.formatMessage({
defaultMessage: "An error occured when trying to update profile.", defaultMessage:
"An error occurred when trying to update your profile.",
}), }),
status: Status.error, status: Status.error,
} }
@@ -184,7 +188,7 @@ export const editProfile = protectedServerActionProcedure
const json = await apiResponse.json() const json = await apiResponse.json()
if (json.errors?.length) { if (json.errors?.length) {
json.errors.forEach((error: any) => { json.errors.forEach((error: unknown) => {
logger.warn( logger.warn(
"editProfile api patch errors (not aborting)", "editProfile api patch errors (not aborting)",
JSON.stringify({ JSON.stringify({
@@ -212,7 +216,8 @@ export const editProfile = protectedServerActionProcedure
message: issue.message, message: issue.message,
})), })),
message: intl.formatMessage({ message: intl.formatMessage({
defaultMessage: "An error occured when trying to update profile.", defaultMessage:
"An error occurred when trying to update your profile.",
}), }),
status: Status.error, status: Status.error,
} }

View File

@@ -106,7 +106,7 @@ const getErrorContent = (error: string | null, intl: IntlShape) => {
}), }),
message: intl.formatMessage({ message: intl.formatMessage({
defaultMessage: defaultMessage:
"We could not connect your accounts to give you access. Please contact us and we'll help you resolve this issue.", "We couldn't connect your accounts. Please contact us and we'll help you resolve this.",
}), }),
} }

View File

@@ -59,7 +59,7 @@ export default async function SASxScandicLoginPage(
}), }),
unlink: intl.formatMessage({ unlink: intl.formatMessage({
defaultMessage: defaultMessage:
"Log in to your SAS Eurobonus account to confirm account unlinking.", "Log in to your SAS EuroBonus account to confirm account unlinking.",
}), }),
transfer: intl.formatMessage({ transfer: intl.formatMessage({
defaultMessage: defaultMessage:

View File

@@ -128,7 +128,7 @@ async function TransactionCard({
<Typography variant="Body/Paragraph/mdBold"> <Typography variant="Body/Paragraph/mdBold">
<h3> <h3>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "You have enough points for a bonus night!", defaultMessage: "You have enough points for a reward night!",
})} })}
</h3> </h3>
</Typography> </Typography>
@@ -136,7 +136,7 @@ async function TransactionCard({
<p> <p>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: defaultMessage:
"Bonus Nights range from 10 000 - 80 000 points. Book your next stay with us today!", "Redeem your points for cozy stays, delicious meals at our restaurants, or hotel extras to elevate your stay!",
})} })}
</p> </p>
</Typography> </Typography>

View File

@@ -52,7 +52,7 @@ export default async function CampaignHotelListing({
}, },
{ {
label: intl.formatMessage({ label: intl.formatMessage({
defaultMessage: "TripAdvisor rating", defaultMessage: "Tripadvisor rating",
}), }),
value: HotelSortOption.TripAdvisorRating, value: HotelSortOption.TripAdvisorRating,
}, },

View File

@@ -103,7 +103,7 @@ export default async function MyPagesOverviewShortcuts() {
<div className={styles.column}> <div className={styles.column}>
<SectionHeader <SectionHeader
title={intl.formatMessage({ title={intl.formatMessage({
defaultMessage: "Your Membership", defaultMessage: "Your membership",
})} })}
headingAs="h4" headingAs="h4"
headingLevel="h3" headingLevel="h3"

View File

@@ -53,7 +53,7 @@ export default async function MembershipOverviewCard({
<h2 className={styles.levelText} id="membership-level"> <h2 className={styles.levelText} id="membership-level">
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: "LEVEL {level}", defaultMessage: "Level {level}",
}, },
{ level: membershipLevels[user.membership.membershipLevel] } { level: membershipLevels[user.membership.membershipLevel] }
)} )}
@@ -79,7 +79,7 @@ export default async function MembershipOverviewCard({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<h3 className={styles.pointsLabel}> <h3 className={styles.pointsLabel}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "POINTS TO SPEND", defaultMessage: "Points to spend",
})} })}
</h3> </h3>
</Typography> </Typography>

View File

@@ -36,7 +36,7 @@ export default function ExpiringPointsSeeAllButton({
<MaterialIcon icon="chevron_right" color="CurrentColor" /> <MaterialIcon icon="chevron_right" color="CurrentColor" />
</Button> </Button>
<SidePeekSelfControlled <SidePeekSelfControlled
title={intl.formatMessage({ defaultMessage: "Expiring Points" })} title={intl.formatMessage({ defaultMessage: "Expiring points" })}
isOpen={isOpen} isOpen={isOpen}
onClose={() => setIsOpen(false)} onClose={() => setIsOpen(false)}
> >

View File

@@ -66,7 +66,7 @@ export default async function PointsToSpendCard({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<span className={styles.pointsLabel}> <span className={styles.pointsLabel}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "POINTS", defaultMessage: "Points",
})} })}
</span> </span>
</Typography> </Typography>

View File

@@ -27,24 +27,9 @@ export default async function SASLinkAccountBanner(
return null return null
} }
function match() { const headingText = intl.formatMessage({
return ( defaultMessage: "Earn flights with nights",
<span key="match" className={styles.highlight}> })
{intl.formatMessage({
defaultMessage: "MATCH",
})}
</span>
)
}
const headingText = intl.formatMessage(
{
defaultMessage: "A <match></match> MADE IN HEAVEN",
},
{
match,
}
)
const buttonText = const buttonText =
props.link?.text || props.link?.text ||

View File

@@ -82,7 +82,7 @@ export default async function DestinationCityPage({
}, },
{ {
label: intl.formatMessage({ label: intl.formatMessage({
defaultMessage: "TripAdvisor rating", defaultMessage: "Tripadvisor rating",
}), }),
value: HotelSortOption.TripAdvisorRating, value: HotelSortOption.TripAdvisorRating,
}, },
@@ -118,7 +118,7 @@ export default async function DestinationCityPage({
<main className={styles.mainContent}> <main className={styles.mainContent}>
<HotelListing /> <HotelListing />
<Blocks blocks={blocks || []} /> <Blocks blocks={blocks || []} />
<SeoFilters seoFilters={seo_filters} location={city.name} /> <SeoFilters seoFilters={seo_filters} />
</main> </main>
<aside className={styles.sidebar}> <aside className={styles.sidebar}>
<SidebarContentWrapper <SidebarContentWrapper

View File

@@ -134,10 +134,7 @@ export default async function DestinationCountryPage({
<main className={styles.mainContent}> <main className={styles.mainContent}>
<CityListing /> <CityListing />
<Blocks blocks={blocks || []} /> <Blocks blocks={blocks || []} />
<SeoFilters <SeoFilters seoFilters={seo_filters} />
seoFilters={seo_filters}
location={translatedCountry}
/>
</main> </main>
<aside className={styles.sidebar}> <aside className={styles.sidebar}>
<SidebarContentWrapper <SidebarContentWrapper

View File

@@ -14,10 +14,9 @@ import type { DestinationFilters } from "@scandic-hotels/trpc/types/destinations
interface SeoFiltersProps { interface SeoFiltersProps {
seoFilters: DestinationFilters seoFilters: DestinationFilters
location: string
} }
export function SeoFilters({ seoFilters, location }: SeoFiltersProps) { export function SeoFilters({ seoFilters }: SeoFiltersProps) {
const intl = useIntl() const intl = useIntl()
const { basePath } = useDestinationDataStore((state) => ({ const { basePath } = useDestinationDataStore((state) => ({
basePath: state.basePathnameWithoutFilters, basePath: state.basePathnameWithoutFilters,
@@ -33,10 +32,7 @@ export function SeoFilters({ seoFilters, location }: SeoFiltersProps) {
<Accordion className={styles.accordion}> <Accordion className={styles.accordion}>
{facilityFilters.length > 0 ? ( {facilityFilters.length > 0 ? (
<AccordionItem <AccordionItem
title={intl.formatMessage( title={intl.formatMessage({ defaultMessage: "Hotel facilities" })}
{ defaultMessage: "{location} Hotel facilities" },
{ location }
)}
showAsSubtitle showAsSubtitle
titleLevel="h3" titleLevel="h3"
> >
@@ -57,10 +53,7 @@ export function SeoFilters({ seoFilters, location }: SeoFiltersProps) {
) : null} ) : null}
{surroundingsFilters.length > 0 ? ( {surroundingsFilters.length > 0 ? (
<AccordionItem <AccordionItem
title={intl.formatMessage( title={intl.formatMessage({ defaultMessage: "Hotel surroundings" })}
{ defaultMessage: "{location} Hotel surroundings" },
{ location }
)}
showAsSubtitle showAsSubtitle
titleLevel="h3" titleLevel="h3"
> >

View File

@@ -121,7 +121,7 @@ export default function Sidebar({
<h1 className={styles.title}> <h1 className={styles.title}>
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: "Things nearby {hotelName}", defaultMessage: "Nearby {hotelName}",
}, },
{ hotelName } { hotelName }
)} )}

View File

@@ -58,8 +58,7 @@ export default function AdditionalInfoForm({
</Title> </Title>
<Body> <Body>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: defaultMessage: "We need some details to confirm your identity.",
"We need some more details to confirm your identity.",
})} })}
</Body> </Body>
</div> </div>

View File

@@ -34,7 +34,7 @@ export default function DeliveryMethodStep() {
<p> <p>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: defaultMessage:
"All add-ons are delivered at the same time. Changes to delivery times will affect earlier add-ons.", "All extras are delivered together. Changes to delivery times will affect previously ordered extras.",
})} })}
</p> </p>
</Typography> </Typography>

View File

@@ -41,7 +41,7 @@ export function AddedAncillaries({
<div className={styles.header}> <div className={styles.header}>
<Subtitle> <Subtitle>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "My Add-on's", defaultMessage: "My extras",
})} })}
</Subtitle> </Subtitle>

View File

@@ -140,7 +140,7 @@ export default function GuestDetails({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<p> <p>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Your member tier", defaultMessage: "Your member level",
})} })}
</p> </p>
</Typography> </Typography>

View File

@@ -17,7 +17,7 @@ export default async function LocalCallCharges({
<Typography variant="Body/Supporting text (caption)/smRegular"> <Typography variant="Body/Supporting text (caption)/smRegular">
<p className={className}> <p className={className}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Price 0,16 €/min + local call charges", defaultMessage: "Price: €0.16/min + local call charges",
})} })}
</p> </p>
</Typography> </Typography>

View File

@@ -23,7 +23,7 @@ export default async function StatsSection({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<span className={styles.label}> <span className={styles.label}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Points Earned", defaultMessage: "Points earned",
})} })}
</span> </span>
</Typography> </Typography>

View File

@@ -19,7 +19,7 @@ export default function ChangeNameDisclaimer() {
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: defaultMessage:
"Need to change your name? Please get in touch with member support at <phone>+46 8 517 517 00</phone> or <email>member@scandichotels.com</email>.", "Need to update your name? Please get in touch with member service at <phone>+46 8 517 517 00</phone> or <email>member@scandichotels.com</email>.",
}, },
{ {
phone([str]) { phone([str]) {

View File

@@ -100,7 +100,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold"> <Typography variant="Body/Paragraph/mdBold">
<p> <p>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Date of Birth", defaultMessage: "Date of birth",
})} })}
</p> </p>
</Typography> </Typography>

View File

@@ -70,7 +70,7 @@ export function translateSeatingType(type: string, intl: IntlShape) {
}) })
case SeatingType.Theatre: case SeatingType.Theatre:
return intl.formatMessage({ return intl.formatMessage({
defaultMessage: "Theatre", defaultMessage: "Theater",
}) })
case SeatingType.UShape: case SeatingType.UShape:
return intl.formatMessage({ return intl.formatMessage({

View File

@@ -83,13 +83,12 @@ async function getSubpageTitle(
case additionalHotelData.hotelSpecialNeeds?.nameInUrl: case additionalHotelData.hotelSpecialNeeds?.nameInUrl:
const accessibilityTitleLong = intl.formatMessage( const accessibilityTitleLong = intl.formatMessage(
{ {
defaultMessage: defaultMessage: "Accessibility at {hotelName} in {destination}",
"Accessibility information for {hotelName} in {destination}",
}, },
{ hotelName, destination } { hotelName, destination }
) )
const accessibilityTitleShort = intl.formatMessage( const accessibilityTitleShort = intl.formatMessage(
{ defaultMessage: "Accessibility information for {hotelName}" }, { defaultMessage: "Accessibility at {hotelName}" },
{ hotelName } { hotelName }
) )

View File

@@ -37,7 +37,7 @@ export function Promos({ booking }: PromosProps) {
<div className={styles.promos}> <div className={styles.promos}>
<Promo <Promo
buttonText={intl.formatMessage({ buttonText={intl.formatMessage({
defaultMessage: "View and buy add-ons", defaultMessage: "View and buy extras",
})} })}
href={myStayURL} href={myStayURL}
text={intl.formatMessage({ text={intl.formatMessage({

View File

@@ -141,7 +141,7 @@ export function Room({
roomTypeCode={booking.roomTypeCode} roomTypeCode={booking.roomTypeCode}
buttonVariant="primary" buttonVariant="primary"
triggerLabel={intl.formatMessage({ triggerLabel={intl.formatMessage({
defaultMessage: "View room details", defaultMessage: "See room details",
})} })}
wrapping={false} wrapping={false}
/> />

View File

@@ -155,7 +155,7 @@ function getRewardMessage(config: BookingFlowConfig, intl: IntlShape): string {
switch (config.variant) { switch (config.variant) {
case "partner-sas": case "partner-sas":
return intl.formatMessage({ return intl.formatMessage({
defaultMessage: "EuroBonus Points", defaultMessage: "EuroBonus points",
}) })
case "scandic": case "scandic":
return intl.formatMessage({ return intl.formatMessage({

View File

@@ -153,7 +153,7 @@ export default function DatePickerForm({ name = "date" }: DatePickerFormProps) {
<span> <span>
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: "{selectedFromDate} - {selectedToDate}", defaultMessage: "{selectedFromDate} {selectedToDate}",
}, },
{ {
selectedFromDate, selectedFromDate,

View File

@@ -126,7 +126,7 @@ export default function MobileToggleButton({
<span className={styles.placeholder}> <span className={styles.placeholder}>
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: "{selectedFromDate} - {selectedToDate}", defaultMessage: "{selectedFromDate} {selectedToDate}",
}, },
{ {
selectedFromDate, selectedFromDate,
@@ -153,7 +153,7 @@ export default function MobileToggleButton({
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: defaultMessage:
"{selectedFromDate} - {selectedToDate} ({totalNights}) {details}", "{selectedFromDate} {selectedToDate} ({totalNights}) {details}",
}, },
{ {
selectedFromDate, selectedFromDate,

View File

@@ -591,7 +591,7 @@ export default function PaymentClient({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<span> <span>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "MY SAVED CARDS", defaultMessage: "My saved cards",
})} })}
</span> </span>
</Typography> </Typography>
@@ -612,7 +612,7 @@ export default function PaymentClient({
<Typography variant="Title/Overline/sm"> <Typography variant="Title/Overline/sm">
<span> <span>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "OTHER PAYMENT METHODS", defaultMessage: "Other payment methods",
})} })}
</span> </span>
</Typography> </Typography>

View File

@@ -203,7 +203,7 @@ export default function PriceChangeSummary({
<footer className={styles.footer}> <footer className={styles.footer}>
<Button intent="secondary" onClick={onCancel}> <Button intent="secondary" onClick={onCancel}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Back to select room", defaultMessage: "Back to room selection",
})} })}
</Button> </Button>
<Button onClick={onAccept}> <Button onClick={onAccept}>

View File

@@ -148,7 +148,7 @@ export default function PriceChangeDialog({
<footer className={styles.footer}> <footer className={styles.footer}>
<Button intent="secondary" onClick={onCancel}> <Button intent="secondary" onClick={onCancel}>
{intl.formatMessage({ {intl.formatMessage({
defaultMessage: "Back to select room", defaultMessage: "Back to room selection",
})} })}
</Button> </Button>
<Button onClick={onAccept}> <Button onClick={onAccept}>

View File

@@ -92,7 +92,7 @@ export default function FilterAndSortModal({
}, },
{ {
label: intl.formatMessage({ label: intl.formatMessage({
defaultMessage: "TripAdvisor rating", defaultMessage: "Tripadvisor rating",
}), }),
value: SortOrder.TripAdvisorRating, value: SortOrder.TripAdvisorRating,
}, },

View File

@@ -74,7 +74,7 @@ export default function HotelSorter({ discreet }: HotelSorterProps) {
}, },
{ {
label: intl.formatMessage({ label: intl.formatMessage({
defaultMessage: "TripAdvisor rating", defaultMessage: "Tripadvisor rating",
}), }),
value: SortOrder.TripAdvisorRating, value: SortOrder.TripAdvisorRating,
}, },

View File

@@ -49,7 +49,7 @@ export default function RoomSize({ roomSize }: RoomSizeProps) {
<h4> <h4>
{intl.formatMessage( {intl.formatMessage(
{ {
defaultMessage: "{roomSizeMin} - {roomSizeMax} m²", defaultMessage: "{roomSizeMin}{roomSizeMax} m²",
}, },
{ {
roomSizeMin: roomSize.min, roomSizeMin: roomSize.min,

View File

@@ -62,7 +62,7 @@ const RoomImage = memo(function RoomImage({
room={room} room={room}
roomTypeCode={roomTypeCode} roomTypeCode={roomTypeCode}
triggerLabel={intl.formatMessage({ triggerLabel={intl.formatMessage({
defaultMessage: "View room details", defaultMessage: "See room details",
})} })}
buttonVariant="secondary" buttonVariant="secondary"
/> />

View File

@@ -30,7 +30,7 @@ export function SelectPaymentMethod({
}: SelectPaymentMethodProps) { }: SelectPaymentMethodProps) {
const intl = useIntl() const intl = useIntl()
const mySavedCardsLabel = intl.formatMessage({ const mySavedCardsLabel = intl.formatMessage({
defaultMessage: 'MY SAVED CARDS', defaultMessage: 'My saved cards',
}) })
return ( return (