This commit is contained in:
dev.daminik00 2025-10-18 23:07:31 +02:00
parent 0700e77a02
commit b7bd5ba61d
31 changed files with 268 additions and 62 deletions

View File

@ -248,7 +248,6 @@
"payment_error": "Something went wrong. Please try again later.", "payment_error": "Something went wrong. Please try again later.",
"select_product_error": "Please select a product", "select_product_error": "Please select a product",
"skip_offer": "Skip offer", "skip_offer": "Skip offer",
"products": { "products": {
"main_ultra_pack": { "main_ultra_pack": {
"title": "ULTRA PACK", "title": "ULTRA PACK",
@ -396,6 +395,7 @@
"reserved-for": "Reserved for {time}" "reserved-for": "Reserved for {time}"
} }
} }
} },
"Soulmate": {}
} }
} }

View File

@ -255,7 +255,6 @@
"payment_error": "Something went wrong. Please try again later.", "payment_error": "Something went wrong. Please try again later.",
"select_product_error": "Please select a product", "select_product_error": "Please select a product",
"skip_offer": "Skip offer", "skip_offer": "Skip offer",
"products": { "products": {
"main_ultra_pack": { "main_ultra_pack": {
"title": "ULTRA PACK", "title": "ULTRA PACK",
@ -607,6 +606,212 @@
"cost-for-one-day": "Your cost for one day after the trial is {cost}" "cost-for-one-day": "Your cost for one day after the trial is {cost}"
} }
} }
},
"Soulmate": {
"v1": {
"Landing": {
"header-timer": {
"title": "Reserved for {time}"
},
"header": {
"title": "Special Offer!",
"description": "Everything is free, trial period included!"
},
"hi-block": {
"title": "Hello, Sunshine 👋",
"description": "Your well-being and happiness are our top priority!",
"card": {
"title": "That's why we've decided to give you a personalised plan and access to a trial version of our app for FREE!",
"image-description": "soulmate portraits delivered today",
"count": "900+"
}
},
"what-get": {
"title": "What you will receive:",
"detailed-portrait": {
"header": {
"title": "A detailed portrait of your other half is ready"
}
},
"guide": {
"header": {
"title": "Guide “Finding the One”"
},
"list": {
"1": "Why love doesn't come - and how to open the way to it",
"2": "7 signs that you have met your soulmate",
"3": "The main secret of couples who stay together",
"4": "Mistakes that destroy even the strongest feelings",
"5": "5 habits that make relationships happy"
}
},
"individual-advice": {
"header": {
"title": "Personalized advice from a personal relationship psychologist"
},
"messages": {
"me": {
"text": "Why do I still doubt whether he loves me?",
"time": "16:38 AM"
},
"advisor": {
"text": "Because you feel that the connection is special. Fate was right—you are reflections of each other.",
"time": "16:39 AM"
}
},
"typing": "typing "
},
"search-compatible-partner": {
"header": {
"title": "Search for the most compatible partner"
},
"content": {
"partner-name": "Your significant other",
"percent": "97%",
"compatibility": "Compatibility",
"bars": {
"1": {
"percent": "92",
"text": "Love",
"colors": {
"path": "#FD4B4B",
"trail": "#FCE7F3"
}
},
"2": {
"percent": "88",
"text": "Sex",
"colors": {
"path": "#8B5CF6",
"trail": "#EDE9FE"
}
},
"3": {
"percent": "79",
"text": "Family",
"colors": {
"path": "#4F46E5",
"trail": "##EEF2FF"
}
}
}
}
}
},
"special-offer": {
"title": "Special price",
"prices": {
"old-price": {
"description": "Regular price"
},
"new-price": {
"description": "Today"
}
},
"trial-offer": {
"title": "DOUBLED!",
"description": "Full access to all materials"
}
},
"plan-also-includes": {
"title": "Your plan also includes:",
"list": {
"items": {
"1": {
"title": "Чат с экспертом",
"text": "Задай свой вопрос и получи первый совет уже сегодня."
},
"2": {
"title": "Анализ совместимости",
"text": "Пойми, почему вы притягиваетесь друг к другу - и какие различия могут мешать гармонии."
},
"3": {
"title": "Как говорить о чувствах и быть понятым",
"text": "Пошаговый гайд, который поможет восстановить близость и искреннее общение."
},
"4": {
"title": "Медитации и аффирмации для сердца",
"text": "Практики, которые открывают внутреннюю уверенность и притягивают любовь."
}
}
}
},
"reviews": {
"title": "What our users say:",
"items": {
"1": {
"username": "@anna.smith28",
"flag": "🇺🇸",
"text": "The drawing was made before we met, and it matched down to the smallest detail: the same gaze, the same mole. We simply couldn't believe it! Now the portrait hangs in our home as a sign of destiny.",
"answer": {
"title": "Response from the support team",
"text": "Anna, it's just the magic of fate! We are very happy that your portrait has become part of your love story. May it remind you how important it is to believe in the signs of the universe 🌹"
}
},
"2": {
"username": "@mike.andrews_89",
"flag": "🇺🇸",
"text": "I decided to check whether my wife was truly my other half. The portrait matched her down to the last detail—the same gaze, the same energy. We both felt as if fate had just confirmed our union.",
"answer": {
"title": "Response from the support team",
"text": "That's amazing! Stories like this prove that true love really does have an impact on an energetic level. May your portrait preserve the warmth of your connection for many years to come!"
}
},
"3": {
"username": "@emily.harris_ang...",
"flag": "🇬🇧",
"text": "The “Finding the One” guide changed my life! The portrait was 100% accurate, and I met my love in a museum, just as predicted! ✨",
"answer": {
"title": "Response from the support team",
"text": "Elena, your story inspires us! Thank you for sharing your success. May your love be strong and long-lasting!"
}
}
}
},
"statistics": {
"title": "899,247",
"description": "People have already found love",
"more-avatars": "+2K",
"period-statistics": {
"month": {
"title": "54K",
"text": "Per month"
},
"today": {
"title": "2K",
"text": "Today"
}
}
},
"real-time-activity": {
"title": "Real-time activity",
"text": "<bold>@elena_art</bold> received a portrait",
"time": "2 мин назад"
},
"money-back-guarantee": {
"title": "100% Money Back Guarantee",
"term": "30 DAYS",
"description": "We are confident that we can help you gain a deeper understanding of your partner and show you what they are really like. After receiving excellent customer reviews, <bold>we are ready to give you a 100% refund</bold> if this report and portrait are not useful to you.",
"footer": "Без вопросов. Без риска."
},
"guaranteed-security-payments": "Guaranteed security payments",
"button-continue": "CONTINUE"
},
"SpecialOffer": {
"title": "Special Offer!",
"start-trial": "Start your {days}-day trial",
"cancel-anytime": "No pressure. Cancel anytime",
"policy": "By continuing you agree that if you don't cancel prior to the end of the {days}-days trial, you will automatically be charged {price} every {billingPeriod} until you cancel in settings. Learn more about cancellation and <refundLink>Refund policy</refundLink> in <subscriptionLink>Subscription terms</subscriptionLink>",
"button-continue": "CONTINUE",
"pricing-summary-total-today": "Total today:",
"pricing-summary-code-applied": "Code applied!",
"pricing-summary-cost-after-trial": "Your cost per 2 weeks after trial",
"pricing-summary-trial-description": "You will be charged only {trialPrice} for your {trialPeriod} trial. Your plan will then cost {price} per {billingPeriod}. Subscription renews automatically until cancelled. You can cancel at any time before the end of the trial.",
"reserved-for": "Reserved for {time}",
"save-every-period": "Save {price} every period",
"cost-for-one-day": "Your cost for one day after the trial is {cost}"
}
}
} }
}, },
"SaveOff": { "SaveOff": {
@ -640,4 +845,4 @@
"month": "{count, plural, zero {#-months} one {#-month} two {#-months} few {#-months} many {#-months} other {#-months}}", "month": "{count, plural, zero {#-months} one {#-month} two {#-months} few {#-months} many {#-months} other {#-months}}",
"year": "{count, plural, zero {#-years} one {#-year} two {#-years} few {#-years} many {#-years} other {#-years}}" "year": "{count, plural, zero {#-years} one {#-year} two {#-years} few {#-years} many {#-years} other {#-years}}"
} }
} }

View File

@ -248,7 +248,6 @@
"payment_error": "Something went wrong. Please try again later.", "payment_error": "Something went wrong. Please try again later.",
"select_product_error": "Please select a product", "select_product_error": "Please select a product",
"skip_offer": "Skip offer", "skip_offer": "Skip offer",
"products": { "products": {
"main_ultra_pack": { "main_ultra_pack": {
"title": "ULTRA PACK", "title": "ULTRA PACK",
@ -396,6 +395,7 @@
"reserved-for": "Reserved for {time}" "reserved-for": "Reserved for {time}"
} }
} }
} },
"Soulmate": {}
} }
} }

View File

@ -23,10 +23,10 @@ import { Currency, ELocalesPlacement } from "@/types";
import styles from "./page.module.scss"; import styles from "./page.module.scss";
const payload = { const payload = {
funnel: ELocalesPlacement.EmailMarketingCompatibilityV2, funnel: ELocalesPlacement.EmailMarketingSoulmateV1,
}; };
export default async function EmailMarketingCompatibilityV1Landing() { export default async function EmailMarketingSoulmateV1Landing() {
const payment = (await loadFunnelPaymentById( const payment = (await loadFunnelPaymentById(
payload, payload,
"main" "main"

View File

@ -9,7 +9,7 @@ import {
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { loadFunnelPaymentById } from "@/entities/session/funnel/loaders"; import { loadFunnelPaymentById } from "@/entities/session/funnel/loaders";
import { IFunnelPaymentPlacement } from "@/entities/session/funnel/types"; import { IFunnelPaymentPlacement } from "@/entities/session/funnel/types";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import { getPeriodTextServer } from "@/shared/utils/period-server"; import { getPeriodTextServer } from "@/shared/utils/period-server";
import { getFormattedPrice } from "@/shared/utils/price"; import { getFormattedPrice } from "@/shared/utils/price";
import { Currency, ELocalesPlacement } from "@/types"; import { Currency, ELocalesPlacement } from "@/types";
@ -19,12 +19,12 @@ import GuaranteeIcon from "./guarantee.svg";
import styles from "./page.module.scss"; import styles from "./page.module.scss";
const payload = { const payload = {
funnel: ELocalesPlacement.EmailMarketingCompatibilityV2, funnel: ELocalesPlacement.EmailMarketingSoulmateV1,
}; };
export default async function SpecialOfferPage() { export default async function SpecialOfferPage() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("SpecialOffer") translatePathEmailMarketingSoulmateV1("SpecialOffer")
); );
const payment = (await loadFunnelPaymentById( const payment = (await loadFunnelPaymentById(

View File

@ -6,13 +6,13 @@ import { useTranslations } from "next-intl";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { useUser } from "@/providers/user-provider"; import { useUser } from "@/providers/user-provider";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./DetailedPortraitCard.module.scss"; import styles from "./DetailedPortraitCard.module.scss";
export default function DetailedPortraitCard() { export default function DetailedPortraitCard() {
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2( translatePathEmailMarketingSoulmateV1(
"Landing.what-get.detailed-portrait" "Landing.what-get.detailed-portrait"
) )
); );

View File

@ -3,13 +3,13 @@ import { useTranslations } from "next-intl";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./GuaranteedSecurityPayments.module.scss"; import styles from "./GuaranteedSecurityPayments.module.scss";
export default function GuaranteedSecurityPayments() { export default function GuaranteedSecurityPayments() {
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2("Landing") translatePathEmailMarketingSoulmateV1("Landing")
); );
return ( return (
<div className={styles.container}> <div className={styles.container}>

View File

@ -2,13 +2,13 @@ import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { BlurComponent } from "@/components/widgets"; import { BlurComponent } from "@/components/widgets";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./GuideCard.module.scss"; import styles from "./GuideCard.module.scss";
export default async function GuideCard() { export default async function GuideCard() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.what-get.guide") translatePathEmailMarketingSoulmateV1("Landing.what-get.guide")
); );
const list = t.raw("list") as Record<string, string>; const list = t.raw("list") as Record<string, string>;

View File

@ -1,13 +1,13 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./Header.module.scss"; import styles from "./Header.module.scss";
export default async function Header() { export default async function Header() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.header") translatePathEmailMarketingSoulmateV1("Landing.header")
); );
return ( return (

View File

@ -5,7 +5,7 @@ import clsx from "clsx";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { useTimer } from "@/hooks/timer/useTimer"; import { useTimer } from "@/hooks/timer/useTimer";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./HeaderTimer.module.scss"; import styles from "./HeaderTimer.module.scss";
@ -13,7 +13,7 @@ type IHeaderTimerProps = React.ComponentProps<"div">;
export default function HeaderTimer({ className }: IHeaderTimerProps) { export default function HeaderTimer({ className }: IHeaderTimerProps) {
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.header-timer") translatePathEmailMarketingSoulmateV1("Landing.header-timer")
); );
const { time } = useTimer({ const { time } = useTimer({
initialSeconds: 600, initialSeconds: 600,

View File

@ -2,13 +2,13 @@ import { getTranslations } from "next-intl/server";
import { Typography, UserAvatar } from "@/components/ui"; import { Typography, UserAvatar } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./HiBlock.module.scss"; import styles from "./HiBlock.module.scss";
export default async function HiBlock() { export default async function HiBlock() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.hi-block") translatePathEmailMarketingSoulmateV1("Landing.hi-block")
); );
return ( return (

View File

@ -9,7 +9,7 @@ import {
} from "@/components/domains/chat"; } from "@/components/domains/chat";
import { Typography, UserAvatar } from "@/components/ui"; import { Typography, UserAvatar } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./IndividualAdviceCard.module.scss"; import styles from "./IndividualAdviceCard.module.scss";
@ -22,7 +22,7 @@ type TMessagesKey = "me" | "advisor";
export default async function IndividualAdviceCard() { export default async function IndividualAdviceCard() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2( translatePathEmailMarketingSoulmateV1(
"Landing.what-get.individual-advice" "Landing.what-get.individual-advice"
) )
); );

View File

@ -6,18 +6,18 @@ import { useTranslations } from "next-intl";
import { Button, Typography } from "@/components/ui"; import { Button, Typography } from "@/components/ui";
import { BlurComponent } from "@/components/widgets"; import { BlurComponent } from "@/components/widgets";
import { ROUTES } from "@/shared/constants/client-routes"; import { ROUTES } from "@/shared/constants/client-routes";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./LandingButtonWrapper.module.scss"; import styles from "./LandingButtonWrapper.module.scss";
export default function LandingButtonWrapper() { export default function LandingButtonWrapper() {
const router = useRouter(); const router = useRouter();
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2("Landing") translatePathEmailMarketingSoulmateV1("Landing")
); );
const handleContinue = () => { const handleContinue = () => {
router.push(ROUTES.emailMarketingCompatibilityV2SpecialOffer()); router.push(ROUTES.emailMarketingSoulmateV1SpecialOffer());
}; };
return ( return (

View File

@ -1,7 +1,7 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import GuaranteeIcon from "./guarantee.svg"; import GuaranteeIcon from "./guarantee.svg";
@ -9,7 +9,7 @@ import styles from "./MoneyBackGuarantee.module.scss";
export default async function MoneyBackGuarantee() { export default async function MoneyBackGuarantee() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.money-back-guarantee") translatePathEmailMarketingSoulmateV1("Landing.money-back-guarantee")
); );
return ( return (
<div className={styles.container}> <div className={styles.container}>

View File

@ -1,7 +1,7 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./PlanAlsoIncludes.module.scss"; import styles from "./PlanAlsoIncludes.module.scss";
@ -12,7 +12,7 @@ interface IListItem {
export default async function PlanAlsoIncludes() { export default async function PlanAlsoIncludes() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.plan-also-includes") translatePathEmailMarketingSoulmateV1("Landing.plan-also-includes")
); );
const listItems = Object.values( const listItems = Object.values(

View File

@ -1,7 +1,7 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import { getFormattedPrice } from "@/shared/utils/price"; import { getFormattedPrice } from "@/shared/utils/price";
import { Currency } from "@/types"; import { Currency } from "@/types";
@ -23,7 +23,7 @@ export default async function Prices({
currency, currency,
}: IPricesProps) { }: IPricesProps) {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.special-offer.prices") translatePathEmailMarketingSoulmateV1("Landing.special-offer.prices")
); );
return ( return (

View File

@ -2,7 +2,7 @@ import { getTranslations } from "next-intl/server";
import clsx from "clsx"; import clsx from "clsx";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import { getPeriodTextServer } from "@/shared/utils/period-server"; import { getPeriodTextServer } from "@/shared/utils/period-server";
import { getFormattedPrice } from "@/shared/utils/price"; import { getFormattedPrice } from "@/shared/utils/price";
import { Currency } from "@/types"; import { Currency } from "@/types";
@ -30,7 +30,7 @@ export default async function PricingSummary({
currency, currency,
}: PricingSummaryProps) { }: PricingSummaryProps) {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("SpecialOffer") translatePathEmailMarketingSoulmateV1("SpecialOffer")
); );
return ( return (

View File

@ -2,13 +2,13 @@ import { getTranslations } from "next-intl/server";
import { Typography, UserAvatar } from "@/components/ui"; import { Typography, UserAvatar } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./RealTimeActivity.module.scss"; import styles from "./RealTimeActivity.module.scss";
export default async function RealTimeActivity() { export default async function RealTimeActivity() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.real-time-activity") translatePathEmailMarketingSoulmateV1("Landing.real-time-activity")
); );
return ( return (

View File

@ -2,7 +2,7 @@ import { useTranslations } from "next-intl";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import Review, { IReviewProps } from "../Review/Review"; import Review, { IReviewProps } from "../Review/Review";
@ -14,7 +14,7 @@ type ILocalReview = Pick<IReviewProps, "stars" | "avatar">;
export default function Reviews() { export default function Reviews() {
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.reviews") translatePathEmailMarketingSoulmateV1("Landing.reviews")
); );
const reviewsFromTranslate = Object.values( const reviewsFromTranslate = Object.values(

View File

@ -5,7 +5,7 @@ import { useTranslations } from "next-intl";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./SearchCompatiblePartnerCard.module.scss"; import styles from "./SearchCompatiblePartnerCard.module.scss";
@ -23,7 +23,7 @@ interface IBar {
export default function SearchCompatiblePartnerCard() { export default function SearchCompatiblePartnerCard() {
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2( translatePathEmailMarketingSoulmateV1(
"Landing.what-get.search-compatible-partner" "Landing.what-get.search-compatible-partner"
) )
); );

View File

@ -2,7 +2,7 @@ import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { IFunnelPaymentVariant } from "@/entities/session/funnel/types"; import { IFunnelPaymentVariant } from "@/entities/session/funnel/types";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import { Currency } from "@/types"; import { Currency } from "@/types";
import { PeriodType } from "@/types/period"; import { PeriodType } from "@/types/period";
@ -27,7 +27,7 @@ export default async function SpecialOffer({
trialPeriod, trialPeriod,
}: ISpecialOfferProps) { }: ISpecialOfferProps) {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.special-offer") translatePathEmailMarketingSoulmateV1("Landing.special-offer")
); );
return ( return (

View File

@ -6,7 +6,7 @@ import { useTranslations } from "next-intl";
import { Button, Typography } from "@/components/ui"; import { Button, Typography } from "@/components/ui";
import { BlurComponent } from "@/components/widgets"; import { BlurComponent } from "@/components/widgets";
import { ROUTES } from "@/shared/constants/client-routes"; import { ROUTES } from "@/shared/constants/client-routes";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./SpecialOfferButtonWrapper.module.scss"; import styles from "./SpecialOfferButtonWrapper.module.scss";
@ -23,7 +23,7 @@ export default function SpecialOfferButtonWrapper({
}: SpecialOfferButtonWrapperProps) { }: SpecialOfferButtonWrapperProps) {
const router = useRouter(); const router = useRouter();
const t = useTranslations( const t = useTranslations(
translatePathEmailMarketingCompatibilityV2("SpecialOffer") translatePathEmailMarketingSoulmateV1("SpecialOffer")
); );
const openPaymentModal = () => { const openPaymentModal = () => {

View File

@ -3,7 +3,7 @@ import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { emailMarketingCompV2Images } from "@/shared/constants/images"; import { emailMarketingCompV2Images } from "@/shared/constants/images";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import styles from "./Statistics.module.scss"; import styles from "./Statistics.module.scss";
@ -13,7 +13,7 @@ const avatarsUrl = Array.from({ length: 6 }, (_, i) =>
export default async function Statistics() { export default async function Statistics() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.statistics") translatePathEmailMarketingSoulmateV1("Landing.statistics")
); );
return ( return (

View File

@ -1,7 +1,7 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import { getPeriodTextServer } from "@/shared/utils/period-server"; import { getPeriodTextServer } from "@/shared/utils/period-server";
import { PeriodType } from "@/types/period"; import { PeriodType } from "@/types/period";
@ -19,7 +19,7 @@ export default async function TrialIntervalOffer({
newTrialInterval, newTrialInterval,
}: ITrialIntervalOfferProps) { }: ITrialIntervalOfferProps) {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2( translatePathEmailMarketingSoulmateV1(
"Landing.special-offer.trial-offer" "Landing.special-offer.trial-offer"
) )
); );

View File

@ -1,7 +1,7 @@
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Typography } from "@/components/ui"; import { Typography } from "@/components/ui";
import { translatePathEmailMarketingCompatibilityV2 } from "@/shared/constants/translate"; import { translatePathEmailMarketingSoulmateV1 } from "@/shared/constants/translate";
import DetailedPortraitCard from "../DetailedPortraitCard/DetailedPortraitCard"; import DetailedPortraitCard from "../DetailedPortraitCard/DetailedPortraitCard";
import GuideCard from "../GuideCard/GuideCard"; import GuideCard from "../GuideCard/GuideCard";
@ -12,7 +12,7 @@ import styles from "./WhatGet.module.scss";
export default async function WhatGet() { export default async function WhatGet() {
const t = await getTranslations( const t = await getTranslations(
translatePathEmailMarketingCompatibilityV2("Landing.what-get") translatePathEmailMarketingSoulmateV1("Landing.what-get")
); );
return ( return (

View File

@ -15,7 +15,7 @@ const profilePrefix = "profile";
const retainingFunnelPrefix = "retaining"; const retainingFunnelPrefix = "retaining";
const emailMarketingPrefix = "em"; const emailMarketingPrefix = "em";
const emailMarketingCompatibilityV1Prefix = `${emailMarketingPrefix}/c/v1`; const emailMarketingCompatibilityV1Prefix = `${emailMarketingPrefix}/c/v1`;
const emailMarketingCompatibilityV2Prefix = `${emailMarketingPrefix}/c/v2`; const emailMarketingSoulmateV1Prefix = `${emailMarketingPrefix}/s/v1`;
export const ROUTES = { export const ROUTES = {
home: () => createRoute([]), home: () => createRoute([]),
@ -91,11 +91,11 @@ export const ROUTES = {
emailMarketingCompatibilityV1SpecialOffer: () => emailMarketingCompatibilityV1SpecialOffer: () =>
createRoute([emailMarketingCompatibilityV1Prefix, "special-offer"]), createRoute([emailMarketingCompatibilityV1Prefix, "special-offer"]),
// Email Marketing Compatibility V2 // Email Marketing Soulmate V1
emailMarketingCompatibilityV2Landing: () => emailMarketingSoulmateV1Landing: () =>
createRoute([emailMarketingCompatibilityV2Prefix, "landing"]), createRoute([emailMarketingSoulmateV1Prefix, "landing"]),
emailMarketingCompatibilityV2SpecialOffer: () => emailMarketingSoulmateV1SpecialOffer: () =>
createRoute([emailMarketingCompatibilityV2Prefix, "special-offer"]), createRoute([emailMarketingSoulmateV1Prefix, "special-offer"]),
// // Compatibility // // Compatibility
// compatibilities: () => createRoute(["compatibilities"]), // compatibilities: () => createRoute(["compatibilities"]),

View File

@ -1,5 +1,5 @@
export const translatePathEmailMarketingCompatibilityV1 = (path: string) => export const translatePathEmailMarketingCompatibilityV1 = (path: string) =>
`EmailMarketing.Compatibility.v1.${path}`; `EmailMarketing.Compatibility.v1.${path}`;
export const translatePathEmailMarketingCompatibilityV2 = (path: string) => export const translatePathEmailMarketingSoulmateV1 = (path: string) =>
`EmailMarketing.Compatibility.v2.${path}`; `EmailMarketing.Soulmate.v1.${path}`;

View File

@ -72,6 +72,7 @@ export enum ELocalesPlacement {
EmailMarketingCompatibilityV1 = "email-marketing-comp-v1", EmailMarketingCompatibilityV1 = "email-marketing-comp-v1",
EmailMarketingPalmistryV2 = "email-marketing-palmistry-v2", EmailMarketingPalmistryV2 = "email-marketing-palmistry-v2",
EmailMarketingCompatibilityV2 = "email-marketing-comp-v2", EmailMarketingCompatibilityV2 = "email-marketing-comp-v2",
EmailMarketingSoulmateV1 = "email-marketing-soulmate-v1",
EmailMarketingCompatibilityV3 = "email-marketing-comp-v3", EmailMarketingCompatibilityV3 = "email-marketing-comp-v3",
EmailMarketingCompatibilityV4 = "email-marketing-comp-v4", EmailMarketingCompatibilityV4 = "email-marketing-comp-v4",
CompatibilityV2 = "compatibility-v2", CompatibilityV2 = "compatibility-v2",