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
@@ -28,12 +28,14 @@ export default async function SASLinkAccountBanner(
}
const headingText = intl.formatMessage({
id: "sas.linkAccountBanner.earnFlightsWithNights",
defaultMessage: "Earn flights with nights",
})
const buttonText =
props.link?.text ||
intl.formatMessage({
id: "sas.linkAccountBanner.readMoreAndLinkAccounts",
defaultMessage: "Read more and link accounts",
})
@@ -41,6 +43,7 @@ export default async function SASLinkAccountBanner(
return (
<span key="scandic-friends" className={styles.brandName}>
{intl.formatMessage({
id: "common.scandicFriends",
defaultMessage: "Scandic Friends",
})}
</span>
@@ -51,6 +54,7 @@ export default async function SASLinkAccountBanner(
return (
<span key="sas-eurobonus" className={styles.brandName}>
{intl.formatMessage({
id: "partnerSas.sasEuroBonus",
defaultMessage: "SAS EuroBonus",
})}
</span>
@@ -59,6 +63,7 @@ export default async function SASLinkAccountBanner(
const descriptionText = intl.formatMessage(
{
id: "sas.linkAccountBanner.description",
defaultMessage:
"Link your <scandicFriends></scandicFriends> and <sasEuroBonus></sasEuroBonus> accounts to earn, use and exchange points between memberships",
},
@@ -17,22 +17,27 @@ export function UnlinkSAS() {
return (
<Dialog
titleText={intl.formatMessage({
id: "partnerSas.unlinkAccount",
defaultMessage: "Are you sure you want to unlink your account?",
})}
bodyText={intl.formatMessage({
id: "partnerSas.unlinkAccountWarning",
defaultMessage:
"This will remove any membership level upgrades gained from the linking. You can re-link your accounts again in 30 days.",
})}
cancelButtonText={intl.formatMessage({
id: "common.goBack",
defaultMessage: "Go back",
})}
proceedText={intl.formatMessage({
id: "partnerSas.yesUnlinkAccount",
defaultMessage: "Yes, unlink my accounts",
})}
proceedHref={`/${params.lang}/sas-x-scandic/login?intent=unlink`}
trigger={
<Button intent="text" theme="base">
{intl.formatMessage({
id: "partnerSas.unlinkAccounts",
defaultMessage: "Unlink accounts",
})}
<MaterialIcon icon="chevron_right" size={20} color="CurrentColor" />
@@ -52,6 +52,7 @@ export default async function SASLinkedAccount({
<p className={styles.caption}>
<MaterialIcon icon="info" size={20} />
{intl.formatMessage({
id: "sas.linkedAccounts.changeDelayInfo",
defaultMessage:
"Changes in your level match can take up to 24 hours to be displayed.",
})}
@@ -96,12 +97,14 @@ async function MatchedAccountInfo() {
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "sas.linkedAccounts.linkedAccount",
defaultMessage: "Linked account",
})}
</Label>
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "partnerSas.sasEuroBonus",
defaultMessage: "SAS EuroBonus",
})}
</p>
@@ -110,6 +113,7 @@ async function MatchedAccountInfo() {
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "common.level",
defaultMessage: "Level",
})}
</Label>
@@ -120,6 +124,7 @@ async function MatchedAccountInfo() {
<div className={cx(styles.stack, styles.accountMemberNumber)}>
<Label>
{intl.formatMessage({
id: "common.membershipId",
defaultMessage: "Membership ID",
})}
</Label>
@@ -154,12 +159,14 @@ async function MatchedAccountInfoSkeleton() {
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "sas.linkedAccounts.linkedAccount",
defaultMessage: "Linked account",
})}
</Label>
<Typography variant="Body/Paragraph/mdBold">
<p>
{intl.formatMessage({
id: "partnerSas.sasEuroBonus",
defaultMessage: "SAS EuroBonus",
})}
</p>
@@ -168,6 +175,7 @@ async function MatchedAccountInfoSkeleton() {
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "common.level",
defaultMessage: "Level",
})}
</Label>
@@ -176,6 +184,7 @@ async function MatchedAccountInfoSkeleton() {
<div className={cx(styles.stack, styles.accountMemberNumber)}>
<Label>
{intl.formatMessage({
id: "common.membershipId",
defaultMessage: "Membership ID",
})}
</Label>
@@ -219,6 +228,7 @@ async function TierMatchMessage({
const messageMap: Record<MatchState, ReactNode> = {
boostedBySAS: intl.formatMessage(
{
id: "sas.linkedAccounts.euroBonusSasUpgradedText",
defaultMessage:
"<sasMark>EuroBonus {sasLevelName}</sasMark> has upgraded your Scandic Friends level to <scandicMark>{scandicLevelName}</scandicMark>.",
},
@@ -226,6 +236,7 @@ async function TierMatchMessage({
),
boostedByScandic: intl.formatMessage(
{
id: "sas.linkedAccounts.scandicFriendsUpgradedText",
defaultMessage:
"Your Scandic Friends level <scandicMark>{scandicLevelName}</scandicMark> has upgraded you to <sasMark>EuroBonus {sasLevelName}</sasMark>.",
},
@@ -233,6 +244,7 @@ async function TierMatchMessage({
),
noBoost: intl.formatMessage(
{
id: "sas.linkedAccounts.euroBonusSasText",
defaultMessage:
"<sasMark>EuroBonus {sasLevelName}</sasMark> and <scandicMark>{scandicLevelName}</scandicMark> are equally matched. Level up in one of your memberships to qualify for an upgrade!",
},
@@ -250,6 +262,7 @@ async function TierMatchMessage({
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "sas.linkedAccounts.levelMatchStatus",
defaultMessage: "Level match status",
})}
</Label>
@@ -270,6 +283,7 @@ async function TierMatchMessageSkeleton() {
<div className={styles.stack}>
<Label>
{intl.formatMessage({
id: "sas.linkedAccounts.levelMatchStatus",
defaultMessage: "Level match status",
})}
</Label>
@@ -307,6 +321,7 @@ async function TierMatchExpiration({
<div className={cx(styles.stack, styles.textRight)}>
<Label>
{intl.formatMessage({
id: "sas.linkedAccounts.upgradeValidUntil",
defaultMessage: "Upgrade valid until",
})}
</Label>
@@ -80,6 +80,7 @@ async function TransferPointsFormContent({
<Typography variant="Tag/sm">
<p>
{intl.formatMessage({
id: "partnerSas.exchangeFrom",
defaultMessage: "Exchange from",
})}
</p>
@@ -89,6 +90,7 @@ async function TransferPointsFormContent({
<Typography variant="Title/Subtitle/md">
<p>
{intl.formatMessage({
id: "partnerSas.sasEuroBonus",
defaultMessage: "SAS EuroBonus",
})}
</p>
@@ -98,6 +100,7 @@ async function TransferPointsFormContent({
<Typography variant="Tag/sm">
<p className={styles.balanceLabel}>
{intl.formatMessage({
id: "partnerSas.balance",
defaultMessage: "Balance",
})}
</p>
@@ -113,6 +116,7 @@ async function TransferPointsFormContent({
<p>
{intl.formatMessage(
{
id: "partnerSas.pointsWithValue",
defaultMessage: "{points, number} p",
},
{ points: sasPoints }
@@ -127,6 +131,7 @@ async function TransferPointsFormContent({
<Typography variant="Body/Paragraph/mdRegular">
<p>
{intl.formatMessage({
id: "partnerSas.noPointsToTransfer",
defaultMessage: "You have no points to transfer.",
})}
</p>
@@ -140,6 +145,7 @@ async function TransferPointsFormContent({
<Typography variant="Tag/sm">
<p>
{intl.formatMessage({
id: "partnerSas.exchangeTo",
defaultMessage: "Exchange to",
})}
</p>
@@ -148,6 +154,7 @@ async function TransferPointsFormContent({
<Typography variant="Title/Subtitle/md">
<p>
{intl.formatMessage({
id: "common.scandicFriends",
defaultMessage: "Scandic Friends",
})}
</p>
@@ -157,6 +164,7 @@ async function TransferPointsFormContent({
<Typography variant="Tag/sm">
<p className={styles.balanceLabel}>
{intl.formatMessage({
id: "partnerSas.balance",
defaultMessage: "Balance",
})}
</p>
@@ -172,6 +180,7 @@ async function TransferPointsFormContent({
<p>
{intl.formatMessage(
{
id: "partnerSas.pointsWithValue",
defaultMessage: "{points, number} p",
},
{ points: scandicPoints }
@@ -191,6 +200,7 @@ async function TransferPointsFormContent({
<Typography variant="Body/Supporting text (caption)/smRegular">
<p style={{ color: "var(--Text-Tertiary)" }}>
{intl.formatMessage({
id: "partnerSas.exchangedPointsNotLevelQualifying",
defaultMessage: "Exchanged points will not be level-qualifying.",
})}
</p>
@@ -67,6 +67,7 @@ export function TransferPointsFormClient({
// Set max value to 1 if sasPoints is 0 since slider requires a range
maxValue={hasNoSasPoints ? 1 : sasPoints}
aria-label={intl.formatMessage({
id: "partnerSas.ebPointsToExchange",
defaultMessage: "EB points to exchange",
})}
formatOptions={{
@@ -88,6 +89,7 @@ export function TransferPointsFormClient({
<TextField type="number" isDisabled={disabled}>
<Input
label={intl.formatMessage({
id: "partnerSas.ebPointsToExchange",
defaultMessage: "EB points to exchange",
})}
type="number"
@@ -109,6 +111,7 @@ export function TransferPointsFormClient({
<p className={styles.conversionRate}>
{/* TODO maybe dynamic string based on exchange rate */}
{intl.formatMessage({
id: "partnerSas.conversionRateInfo",
defaultMessage: "1 EuroBonus point = 2 Scandic Friends points",
})}
</p>
@@ -117,6 +120,7 @@ export function TransferPointsFormClient({
<Typography variant="Label/xsRegular">
<p>
{intl.formatMessage({
id: "partnerSas.sfPointsToReceive",
defaultMessage: "SF points to receive",
})}
</p>
@@ -183,6 +187,7 @@ function ConfirmModal({
disabled={disabled}
>
{intl.formatMessage({
id: "partnerSas.exchangePoints",
defaultMessage: "Exchange points",
})}
</Button>
@@ -197,6 +202,7 @@ function ConfirmModal({
<Typography variant="Title/Subtitle/lg">
<h3>
{intl.formatMessage({
id: "partnerSas.proceedWithPointExchange",
defaultMessage: "Proceed with point exchange?",
})}
</h3>
@@ -205,6 +211,7 @@ function ConfirmModal({
<Typography variant="Body/Paragraph/mdRegular">
<p>
{intl.formatMessage({
id: "partnerSas.youAreAboutToExchange",
defaultMessage: "You are about to exchange:",
})}
</p>
@@ -213,6 +220,7 @@ function ConfirmModal({
<p>
{intl.formatMessage(
{
id: "partnerSas.exchangePointsDetails",
defaultMessage:
"<bold>{sasPoints, number} EuroBonus points</bold> to <bold>{scandicPoints, number} Scandic Friends points</bold>",
},
@@ -232,6 +240,7 @@ function ConfirmModal({
<Typography variant="Body/Supporting text (caption)/smRegular">
<p className={styles.expiryText}>
{intl.formatMessage({
id: "partnerSas.exchangePointsExpiry",
defaultMessage:
"Your exchanged points will retain their original expiry date with a maximum validity of 12 months.",
})}
@@ -245,6 +254,7 @@ function ConfirmModal({
color="none"
>
{intl.formatMessage({
id: "partnerSas.yesIWantToExchangeMyPoints",
defaultMessage: "Yes, I want to exchange my points",
})}
</Link>
@@ -256,6 +266,7 @@ function ConfirmModal({
onClick={() => handleToggle(false)}
>
{intl.formatMessage({
id: "common.cancel",
defaultMessage: "Cancel",
})}
</Button>