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

@@ -23,12 +23,14 @@ export default function CopyMembershipIdButton({
navigator.clipboard.writeText(membershipNumber)
toast.success(
intl.formatMessage({
id: "myPages.membershipIdCopied",
defaultMessage: "Membership ID copied to clipboard",
})
)
} catch {
toast.error(
intl.formatMessage({
id: "errorMessage.copyFailed",
defaultMessage: "Failed to copy",
})
)

View File

@@ -28,9 +28,11 @@ export default function DigitalTeamMemberCardAlert() {
variant="inline"
type={AlertTypeEnum.Success}
heading={intl.formatMessage({
id: "myPages.teamMemberCardAdded",
defaultMessage: "Team Member Card added",
})}
text={intl.formatMessage({
id: "myPages.accessYourTeamMemberCard",
defaultMessage:
"Access your Team Member Card here on My Pages Overview.",
})}

View File

@@ -49,6 +49,7 @@ export default function DigitalTeamMemberCardClient({
<Typography variant="Body/Paragraph/mdRegular">
<p className={styles.footer}>
{intl.formatMessage({
id: "myPages.bookDiscountedStaysForSelfFamilyAndFriends",
defaultMessage:
"Book discounted stays for yourself, family and friends!",
})}
@@ -62,6 +63,7 @@ export default function DigitalTeamMemberCardClient({
>
<span className={styles.link}>
{intl.formatMessage({
id: "myPages.checkOutAllYourBenefits",
defaultMessage: "Check out all your benefits",
})}
<MaterialIcon icon="open_in_new" size={20} color="CurrentColor" />

View File

@@ -120,8 +120,14 @@ export default function DigitalTeamMemberCardContent({
<div className={styles.top}>
<span>
{employeeInfo?.retired
? intl.formatMessage({ defaultMessage: "Senior Team Member" })
: intl.formatMessage({ defaultMessage: "Team Member" })}
? intl.formatMessage({
id: "myPages.seniorTeamMember",
defaultMessage: "Senior Team Member",
})
: intl.formatMessage({
id: "myPages.teamMember",
defaultMessage: "Team Member",
})}
</span>
<span>{employeeInfo?.country || notAvailableText}</span>
</div>
@@ -158,8 +164,14 @@ export default function DigitalTeamMemberCardContent({
<span>{employeeInfo?.location || notAvailableText}</span>
<span>
{employeeInfo?.retired
? intl.formatMessage({ defaultMessage: "Retired" })
: intl.formatMessage({ defaultMessage: "Employee" })}
? intl.formatMessage({
id: "myPages.retired",
defaultMessage: "Retired",
})
: intl.formatMessage({
id: "myPages.employee",
defaultMessage: "Employee",
})}
</span>
</div>
</Typography>

View File

@@ -35,6 +35,7 @@ export default function ProgressSection({
value={progress.percentage}
aria-label={intl.formatMessage(
{
id: "myPages.levelProgressWithPointsEarned",
defaultMessage:
"Level progress: {earned} of {total} points earned",
},
@@ -68,6 +69,7 @@ export default function ProgressSection({
>
{intl.formatMessage(
{
id: "myPages.pointsLeftToKeepLevel",
defaultMessage:
"{pointsAmount} <points>POINTS</points> <support>left to keep level</support>",
},

View File

@@ -23,6 +23,7 @@ export default async function StatsSection({
<Typography variant="Title/Overline/sm">
<span className={styles.label}>
{intl.formatMessage({
id: "myPages.pointsEarned",
defaultMessage: "Points earned",
})}
</span>
@@ -48,6 +49,7 @@ export default async function StatsSection({
<Typography variant="Title/Overline/sm">
<span className={styles.label}>
{intl.formatMessage({
id: "myPages.leftToLevelUp",
defaultMessage: "Left to level up",
})}
</span>

View File

@@ -18,6 +18,7 @@ export default async function SuccessCard({ pointsEarned }: SuccessCardProps) {
<Typography variant="Title/Subtitle/md">
<h3 className={styles.title}>
{intl.formatMessage({
id: "myPages.helloBestFriend",
defaultMessage: "Hello Best Friend!",
})}
</h3>
@@ -27,6 +28,7 @@ export default async function SuccessCard({ pointsEarned }: SuccessCardProps) {
<p>
{intl.formatMessage(
{
id: "myPages.youHaveEarnedPointsThisMemberYear",
defaultMessage:
"You've earned {pointAmount} points this member year.",
},

View File

@@ -58,6 +58,7 @@ export default function LevelProgressModal({
<Typography variant="Title/Subtitle/lg">
<h2 id="level-progress-modal-title" className={styles.title}>
{intl.formatMessage({
id: "myPages.yourMemberYearAndLevelProgress",
defaultMessage: "Your member year and level progress",
})}
</h2>
@@ -65,7 +66,10 @@ export default function LevelProgressModal({
<span>
<Typography variant="Body/Paragraph/mdBold">
<h3 id="level-progress-modal-subtitle">
{intl.formatMessage({ defaultMessage: "Current member year" })}
{intl.formatMessage({
id: "myPages.currentMemberYear",
defaultMessage: "Current member year",
})}
</h3>
</Typography>
<div>
@@ -85,6 +89,7 @@ export default function LevelProgressModal({
<Typography variant="Body/Paragraph/mdRegular">
<p id="level-progress-modal-text">
{intl.formatMessage({
id: "myPages.pointsYouEarnDetermineYourLevel",
defaultMessage:
"The points you earn this year determine your level for both this and the next member year.",
})}
@@ -98,6 +103,7 @@ export default function LevelProgressModal({
textDecoration="underline"
>
{intl.formatMessage({
id: "myPages.compareAllLevels",
defaultMessage: "Compare all levels",
})}
<MaterialIcon icon="arrow_forward" color="CurrentColor" size={24} />
@@ -110,6 +116,7 @@ export default function LevelProgressModal({
textDecoration="underline"
>
{intl.formatMessage({
id: "common.scandicFriendsFaq",
defaultMessage: "Scandic Friends FAQ",
})}
<MaterialIcon icon="arrow_forward" color="CurrentColor" size={24} />

View File

@@ -35,6 +35,7 @@ export default async function LevelProgressCard({
<Typography variant="Title/xs">
<h2 id="level-progress-card-title" className={styles.title}>
{intl.formatMessage({
id: "myPages.yourLevelProgress",
defaultMessage: "Your Level Progress",
})}
</h2>
@@ -42,7 +43,10 @@ export default async function LevelProgressCard({
<Typography variant="Body/Paragraph/mdRegular">
<p className={styles.date}>
{intl.formatMessage(
{ defaultMessage: "Valid until {date}" },
{
id: "myPages.validUntilDate",
defaultMessage: "Valid until {date}",
},
{
date: dt(user.membership.tierExpirationDate)
.locale(lang)

View File

@@ -18,6 +18,7 @@ export default function ChangeNameDisclaimer() {
<p>
{intl.formatMessage(
{
id: "myPages.contactSupportForNameChange",
defaultMessage:
"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>.",
},

View File

@@ -13,6 +13,7 @@ export default async function CommunicationSlot() {
<Typography variant="Title/Subtitle/md">
<h3>
{intl.formatMessage({
id: "myPages.myCommunicationPreferences",
defaultMessage: "My communication preferences",
})}
</h3>
@@ -20,6 +21,7 @@ export default async function CommunicationSlot() {
<Typography variant="Body/Paragraph/mdRegular">
<p>
{intl.formatMessage({
id: "myPages.tellUsWhatInfoYouWouldLikeToReceive",
defaultMessage:
"Tell us what information and updates you'd like to receive, and how, by clicking the link below.",
})}

View File

@@ -19,6 +19,7 @@ export default async function CreditCardSlot() {
<Typography variant="Title/Subtitle/md">
<h3>
{intl.formatMessage({
id: "myPages.myPaymentCards",
defaultMessage: "My payment cards",
})}
</h3>
@@ -26,6 +27,7 @@ export default async function CreditCardSlot() {
<Typography variant="Body/Paragraph/mdRegular">
<p>
{intl.formatMessage({
id: "myPages.checkOutCardsSavedToProfile",
defaultMessage:
"Check out the credit cards saved to your profile. Pay with a saved card when signed in for a smoother web experience.",
})}

View File

@@ -19,6 +19,7 @@ export default async function MembershipCardSlot() {
<Typography variant="Title/Subtitle/md">
<h3>
{intl.formatMessage({
id: "myPages.myMembershipCards",
defaultMessage: "My membership cards",
})}
</h3>
@@ -30,6 +31,7 @@ export default async function MembershipCardSlot() {
<h4 className={styles.subTitle}>
{intl.formatMessage(
{
id: "myPages.nameWithCardMembershipType",
defaultMessage: "Name: {cardMembershipType}",
},
{
@@ -41,6 +43,7 @@ export default async function MembershipCardSlot() {
<span>
{intl.formatMessage(
{
id: "myPages.currentPointsWithPoints",
defaultMessage: "Current Points: {points, number}",
},
{ points: card.currentPoints }
@@ -49,6 +52,7 @@ export default async function MembershipCardSlot() {
<span>
{intl.formatMessage(
{
id: "myPages.memberSinceWithValue",
defaultMessage: "Member Since: {value}",
},
{
@@ -59,6 +63,7 @@ export default async function MembershipCardSlot() {
<span>
{intl.formatMessage(
{
id: "myPages.numberWithValue",
defaultMessage: "Number: {membershipNumber}",
},
{
@@ -69,6 +74,7 @@ export default async function MembershipCardSlot() {
<span>
{intl.formatMessage(
{
id: "myPages.expirationDateWithDate",
defaultMessage: "Expiration Date: {expirationDate}",
},
{
@@ -82,6 +88,7 @@ export default async function MembershipCardSlot() {
<MaterialIcon icon="add_circle" color="CurrentColor" />
<Body color="burgundy" textTransform="underlined">
{intl.formatMessage({
id: "myPages.addNewCard",
defaultMessage: "Add new card",
})}
</Body>

View File

@@ -57,6 +57,7 @@ export default async function Profile() {
addressParts.length > 0
? addressParts.join(", ")
: intl.formatMessage({
id: "common.NA",
defaultMessage: "N/A",
})
@@ -72,6 +73,7 @@ export default async function Profile() {
<Typography variant="Title/xs">
<h2 className={styles.title}>
{intl.formatMessage({
id: "common.welcome",
defaultMessage: "Welcome",
})}
<br />
@@ -87,6 +89,7 @@ export default async function Profile() {
typography="Body/Supporting text (caption)/smBold"
>
{intl.formatMessage({
id: "myPages.editProfile",
defaultMessage: "Edit profile",
})}
</ButtonLink>
@@ -100,6 +103,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "myPages.dateOfBirth",
defaultMessage: "Date of birth",
})}
</p>
@@ -113,6 +117,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "common.phoneNumber",
defaultMessage: "Phone number",
})}
</p>
@@ -126,6 +131,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "common.language",
defaultMessage: "Language",
})}
</p>
@@ -139,6 +145,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "common.email",
defaultMessage: "Email",
})}
</p>
@@ -152,6 +159,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "common.address",
defaultMessage: "Address",
})}
</p>
@@ -165,6 +173,7 @@ export default async function Profile() {
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "common.password",
defaultMessage: "Password",
})}
</p>

View File

@@ -26,6 +26,7 @@ export function SASLevelUpgradeCheck() {
toast.success(
intl.formatMessage(
{
id: "myPages.yourSasLevelUpgradedToWithLevel",
defaultMessage:
"Your SAS EuroBonus level has upgraded you to {level}!",
},

View File

@@ -17,6 +17,7 @@ export default function Card({ title, children }: CardProps) {
width={113}
height={125}
alt={intl.formatMessage({
id: "rewards.surprise",
defaultMessage: "Surprise!",
})}
/>

View File

@@ -77,6 +77,7 @@ export default function SurprisesNotification({
<>
{intl.formatMessage(
{
id: "myPages.countOfGiftsAddedToYourBenefits",
defaultMessage:
"{amount, plural, one {Gift} other {Gifts}} added to your benefits",
},
@@ -85,6 +86,7 @@ export default function SurprisesNotification({
<br />
<Link href={benefitPageUrl} textDecoration="underline">
{intl.formatMessage({
id: "myPages.goToMyBenfits",
defaultMessage: "Go to My Benefits",
})}
</Link>
@@ -97,6 +99,7 @@ export default function SurprisesNotification({
<>
{intl.formatMessage(
{
id: "myPages.somethingWentWrongShowingYourSurprise",
defaultMessage:
"Oops! Something went wrong while showing your surprise. Please refresh the page or try again later. If the issue persists, <link>contact the support.</link>",
},
@@ -174,6 +177,7 @@ export default function SurprisesNotification({
>
<Dialog
aria-label={intl.formatMessage({
id: "myPages.Surprises",
defaultMessage: "Surprises",
})}
className={styles.dialog}
@@ -192,6 +196,7 @@ export default function SurprisesNotification({
<p>
{intl.formatMessage(
{
id: "myPages.AmountOutOfTotalWithValues",
defaultMessage: "{amount} out of {total}",
},
{

View File

@@ -15,6 +15,7 @@ export default function Initial({ totalSurprises, onOpen }: InitialProps) {
return (
<Card
title={intl.formatMessage({
id: "rewards.surprise",
defaultMessage: "Surprise!",
})}
>
@@ -24,6 +25,7 @@ export default function Initial({ totalSurprises, onOpen }: InitialProps) {
<>
{intl.formatMessage(
{
id: "myPages.surprises.giftsWaiting",
defaultMessage:
"You have <b>{amount}</b> gifts waiting for you!",
},
@@ -34,11 +36,13 @@ export default function Initial({ totalSurprises, onOpen }: InitialProps) {
)}
<br />
{intl.formatMessage({
id: "myPages.surprises.willExpire",
defaultMessage: "Hurry up and use them before they expire!",
})}
</>
) : (
intl.formatMessage({
id: "myPages.surprises.giftWaiting",
defaultMessage: "We have a special gift waiting for you!",
})
)}
@@ -47,6 +51,7 @@ export default function Initial({ totalSurprises, onOpen }: InitialProps) {
<Typography variant="Body/Supporting text (caption)/smRegular">
<p>
{intl.formatMessage({
id: "myPages.surprises.findGifts",
defaultMessage: "You'll find all your gifts in 'My benefits'",
})}
</p>
@@ -62,6 +67,7 @@ export default function Initial({ totalSurprises, onOpen }: InitialProps) {
>
{intl.formatMessage(
{
id: "myPages.surprises.openGifts",
defaultMessage: "Open {amount, plural, one {gift} other {gifts}}",
},
{ amount: totalSurprises }

View File

@@ -30,6 +30,7 @@ export default function Navigation({
className={styles.chevron}
/>
{intl.formatMessage({
id: "common.previous",
defaultMessage: "Previous",
})}
</Button>
@@ -41,6 +42,7 @@ export default function Navigation({
typography="Body/Supporting text (caption)/smBold"
>
{intl.formatMessage({
id: "common.next",
defaultMessage: "Next",
})}
<MaterialIcon icon="chevron_right" size={20} color="CurrentColor" />