Browse Source

feat: implement comprehensive marriage matching system with multi-language support and core UI components

front-test-2
ghorbani 3 weeks ago
parent
commit
12eb4c6f71
  1. BIN
      FAMINELA.OTF
  2. BIN
      FAMINELA.TTF
  3. 41
      src/app/api/dev-reset-profile/route.ts
  4. 11
      src/app/finding-match/page.tsx
  5. 2
      src/app/globals.css
  6. 63
      src/app/intro/page.tsx
  7. 41
      src/app/new-match/page.tsx
  8. 67
      src/app/new-match/profile/page.tsx
  9. 6
      src/app/providers.tsx
  10. 10
      src/app/questions-list/page.tsx
  11. 30
      src/components/Componentes/navigation-button.tsx
  12. 147
      src/components/Componentes/payment-swipe-modal.tsx
  13. 26
      src/components/Componentes/question-answer-storage.tsx
  14. 92
      src/components/Componentes/question-section-flow.tsx
  15. 17
      src/components/Componentes/question-snap-list.tsx
  16. 162
      src/components/Componentes/swipe-button.tsx
  17. 169
      src/components/Componentes/token-switcher.tsx
  18. 614
      src/data/questions/en.json
  19. 614
      src/data/questions/fa.json
  20. 2
      src/hooks/marriage/types.ts
  21. 23
      src/hooks/marriage/use-marriage-config.ts
  22. 25
      src/lib/auth-bridge.ts
  23. 78
      src/translations/locales/ar.json
  24. 78
      src/translations/locales/az.json
  25. 78
      src/translations/locales/bn.json
  26. 78
      src/translations/locales/da.json
  27. 78
      src/translations/locales/de.json
  28. 78
      src/translations/locales/en.json
  29. 78
      src/translations/locales/es.json
  30. 78
      src/translations/locales/fa.json
  31. 78
      src/translations/locales/fr.json
  32. 78
      src/translations/locales/gu.json
  33. 78
      src/translations/locales/ha.json
  34. 78
      src/translations/locales/he.json
  35. 78
      src/translations/locales/hi.json
  36. 78
      src/translations/locales/id.json
  37. 78
      src/translations/locales/ks.json
  38. 78
      src/translations/locales/pt.json
  39. 78
      src/translations/locales/ru.json
  40. 78
      src/translations/locales/sw.json
  41. 78
      src/translations/locales/tg.json
  42. 78
      src/translations/locales/tr.json
  43. 78
      src/translations/locales/ul.json
  44. 78
      src/translations/locales/ur.json
  45. 78
      src/translations/locales/uz.json
  46. 78
      src/translations/locales/zh.json

BIN
FAMINELA.OTF

BIN
FAMINELA.TTF

41
src/app/api/dev-reset-profile/route.ts

@ -0,0 +1,41 @@
import type { NextRequest } from "next/server";
import { exec } from "child_process";
import { promisify } from "util";
const execAsync = promisify(exec);
export const dynamic = "force-dynamic";
export const runtime = "nodejs";
export async function POST(request: NextRequest) {
if (process.env.NODE_ENV !== "development") {
return Response.json({ error: "Forbidden in production" }, { status: 403 });
}
try {
const { userId } = await request.json();
if (!userId) {
return Response.json({ error: "userId is required" }, { status: 400 });
}
const scriptPath = "C:\\Users\\User\\.gemini\\antigravity-ide\\brain\\5015ea2d-f1fc-4e3d-9372-4bb0670449cc\\scratch\\reset_user.py";
// Construct the command safely with numeric userId
const command = `python "${scriptPath}" ${Number(userId)}`;
const { stdout, stderr } = await execAsync(command);
if (stderr) {
console.error("Stderr from reset script:", stderr);
}
console.log("Stdout from reset script:", stdout);
if (stdout.includes("SUCCESS:")) {
return Response.json({ success: true, message: stdout.trim() });
} else {
return Response.json({ error: stdout.trim() }, { status: 500 });
}
} catch (error: any) {
console.error("Failed to reset profile:", error);
return Response.json({ error: error.message || "Internal Server Error" }, { status: 500 });
}
}

11
src/app/finding-match/page.tsx

@ -37,10 +37,7 @@ export default function FindingMatchPage() {
}, [profile, locale, router]);
const copy = t.findingMatch;
const matchImageSrc =
profile?.gender === "female"
? "/assets/images/Group 15978fdsa80467.svg"
: "/assets/images/Group 159788fd0467.svg";
const matchImageSrc = "/assets/images/Group 1597880466.svg";
return (
<>
@ -52,11 +49,11 @@ export default function FindingMatchPage() {
>
<header className="-mx-[6px] flex items-center justify-between pb-3">
<NavigationButton icon="back" />
<h1 className="font-faminela group-16">{t.common.appName}</h1>
<h1 className="font-faminela text-[20px]">{t.common.appName}</h1>
<NavigationButton icon="subscription" iconLabel="Subscribe" />
</header>
<section className="flex flex-1 flex-col items-center mt-32">
<section className="flex flex-1 flex-col items-center mt-20">
<div className="relative h-[124px] w-[130px]" aria-hidden="true">
<Image
src={matchImageSrc}
@ -72,7 +69,7 @@ export default function FindingMatchPage() {
{copy.title}
</h1>
<p className="mt-3 max-w-[320px] group-12 leading-[1.35] font-semibold text-[#747474]">
<p className="mt-3 max-w-[320px] mx-auto text-center group-12 leading-[1.35] font-semibold text-[#747474]">
{copy.description}
</p>
</section>

2
src/app/globals.css

@ -174,7 +174,7 @@ html:lang(ar) body,
[dir="rtl"].font-faminela,
[dir="rtl"].font-ryling,
.font-faminela {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-family: var(--font-faminela-local), "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.app-shell {

63
src/app/intro/page.tsx

@ -8,6 +8,7 @@ import NavigationButton from "@/components/Componentes/navigation-button";
import ReportActionsSheet from "@/components/Componentes/report-actions-sheet";
import type { MarriageProfileResponse } from "@/hooks/marriage/types";
import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import { useMarriageConfigQuery } from "@/hooks/marriage/use-marriage-config";
import { authBridge } from "@/lib/auth-bridge";
import { getSubmitPath } from "@/lib/get-submit-path";
import { localizePath } from "@/translations/config";
@ -25,8 +26,11 @@ export default function Intro() {
const [isReportSheetOpen, setIsReportSheetOpen] = useState(false);
const [isSubmitting, setIsSubmitting] = useState(false);
const [isCheckingRedirect, setIsCheckingRedirect] = useState(true);
const [isPlayerOpen, setIsPlayerOpen] = useState(false);
const isRedirectingRef = useRef(false);
const { data: config } = useMarriageConfigQuery();
useEffect(() => {
let isCancelled = false;
@ -157,7 +161,7 @@ export default function Intro() {
<div className="flex items-center gap-0.5 p-2 border border-[#FD6ABB]/10 rounded-2xl">
<Image
src={"/assets/images/tabler_user-filled.svg"}
alt="User"
alt={t.intro.userProfile}
width={37}
height={37}
/>
@ -171,7 +175,7 @@ export default function Intro() {
<div className="flex items-center gap-0.5 p-2 border border-[#FD6ABB]/10 rounded-2xl">
<Image
src={"/assets/images/icon-park-solid_success.svg"}
alt="User"
alt={t.intro.matches}
width={37}
height={37}
/>
@ -185,7 +189,7 @@ export default function Intro() {
<div className="flex items-center gap-0.5 p-2 border border-[#FD6ABB]/10 rounded-2xl">
<Image
src={"/assets/images/typcn_heart-full-outline.svg"}
alt="User"
alt={t.intro.marriage}
width={37}
height={37}
/>
@ -197,21 +201,64 @@ export default function Intro() {
</div>
</div>
</div>
<div className="mt-14 relative">
<div
className="mt-14 relative cursor-pointer group rounded-2xl overflow-hidden aspect-[344/221] max-w-[344px] w-full mx-auto"
onClick={() => setIsPlayerOpen(true)}
>
<Image
src={"/assets/images/Frame 2095586523.png"}
src={config?.intro_video_thumbnail_url || "/assets/images/Frame 2095586523.png"}
alt={t.intro.videoAlt}
width={344}
height={221}
fill
sizes="344px"
className="object-cover transition-transform duration-300 group-hover:scale-105"
priority
/>
<div className="absolute inset-0 bg-black/10 transition-colors duration-300 group-hover:bg-black/20" />
<Image
src={"/assets/images/Frame 1116607280.svg"}
alt={t.intro.playAlt}
width={68}
height={68}
className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 transition-transform duration-300 group-hover:scale-110 active:scale-95"
/>
</div>
{isPlayerOpen && (
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm p-4">
<div className="relative w-full max-w-[640px] aspect-video rounded-2xl overflow-hidden bg-black shadow-2xl">
<button
onClick={(e) => {
e.stopPropagation();
setIsPlayerOpen(false);
}}
className="absolute top-4 right-4 z-10 flex items-center justify-center w-10 h-10 rounded-full bg-white/20 hover:bg-white/30 text-white transition-colors active:scale-95 cursor-pointer"
aria-label="Close video player"
>
<svg
xmlns="http://www.w3.org/2000/svg"
className="h-6 w-6"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</button>
<video
src={config?.intro_video_url || "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"}
controls
autoPlay
playsInline
className="w-full h-full object-contain"
/>
</div>
</div>
)}
<div className="pointer-events-none fixed bottom-0 left-1/2 z-20 w-full sm:max-w-[375px] -translate-x-1/2 bg-[#F5F5F5]">
<div
style={{ paddingBottom: "calc(20px + var(--safe-bottom))" }}

41
src/app/new-match/page.tsx

@ -3,18 +3,20 @@
import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useEffect, useMemo } from "react";
import { useEffect, useMemo, useState } from "react";
import { FaLock } from "react-icons/fa6";
import AdvisorActionsCard from "@/components/Componentes/advisor-actions-card";
import { DotsLoader } from "@/components/Componentes/button";
import NavigationButton from "@/components/Componentes/navigation-button";
import { PageBackground } from "@/components/Componentes/page-background";
import PaymentSwipeModal from "@/components/Componentes/payment-swipe-modal";
import type {
MarriageField,
MarriageFieldValue,
MarriageMatchSummary,
MarriagePhoneFieldValue,
} from "@/hooks/marriage/types";
import { useHabcoinPaymentMutation } from "@/hooks/marriage/use-habcoin-payment";
import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import { useViewPaddings } from "@/hooks/use-view-paddings";
import { getSubmitPath } from "@/lib/get-submit-path";
@ -212,6 +214,8 @@ export default function NewMatchPage() {
const { dictionary: t, locale } = useI18n();
const { top, bottom } = useViewPaddings();
const { data: profile, isError, isLoading } = useMarriageProfileQuery();
const [paymentError, setPaymentError] = useState<string | null>(null);
const paymentMutation = useHabcoinPaymentMutation();
useEffect(() => {
if (!profile) {
@ -237,9 +241,44 @@ export default function NewMatchPage() {
? "یک گزینه‌ی مناسب برای شما پیدا شده است. در صورت تایید، مشخصات شما جهت ادامه فرآیند معرفی ارزیابی خواهد شد."
: "A matching profile has been found. Information is provided by the candidate's family or introducers. If you approve, we'll share your profile with her family.";
const isMale = profile?.gender === "male";
const hasActiveSub = !!profile?.active_subscription;
const isMatchAvailable = !!profile?.match_summary;
const showPaymentModal = isMale && !hasActiveSub && isMatchAvailable;
const handlePayment = async () => {
const recommendedPlanId = profile?.recommended_plan?.id;
if (!recommendedPlanId) return;
try {
setPaymentError(null);
await paymentMutation.mutateAsync(recommendedPlanId);
} catch (err: any) {
console.error("Payment failed", err);
const msg =
err?.response?.data?.error || err?.message || "Payment failed";
const modalT = (t as any).paymentModal || {};
if (msg === "Not enough coins") {
setPaymentError(
modalT.insufficientCoins ||
"Insufficient coin balance. Please recharge your account.",
);
} else {
setPaymentError(msg);
}
}
};
return (
<>
<PageBackground />
{showPaymentModal && (
<PaymentSwipeModal
onSuccess={handlePayment}
isPaymentPending={paymentMutation.isPending}
errorMessage={paymentError}
/>
)}
<main
style={{

67
src/app/new-match/profile/page.tsx

@ -8,8 +8,9 @@ import DismissReasonSheet from "@/components/Componentes/dismiss-reason-sheet";
import FemaleConsentSheet from "@/components/Componentes/female-consent-sheet";
import InformationSheet from "@/components/Componentes/information-sheet";
import NavigationButton from "@/components/Componentes/navigation-button";
import StickyHeader from "@/components/Componentes/sticky-header";
import { PageBackground } from "@/components/Componentes/page-background";
import StickyHeader from "@/components/Componentes/sticky-header";
import SwipeButton from "@/components/Componentes/swipe-button";
import type {
MarriageCaseStatus,
MarriageField,
@ -219,6 +220,7 @@ export default function NewMatchProfilePage() {
const [isRequestSheetOpen, setIsRequestSheetOpen] = useState(false);
const [isFemaleConsentChecked, setIsFemaleConsentChecked] = useState(false);
const [isRejectSheetOpen, setIsRejectSheetOpen] = useState(false);
const [isMaleRejectWarningOpen, setIsMaleRejectWarningOpen] = useState(false);
const [isDismissReasonSheetOpen, setIsDismissReasonSheetOpen] =
useState(false);
const {
@ -410,6 +412,61 @@ export default function NewMatchProfilePage() {
onClose={() => setIsRejectSheetOpen(false)}
/>
) : null}
{isMaleRejectWarningOpen ? (
<InformationSheet
icon="warning"
title={t.maleRejectionWarning.title}
description={
<div
className="space-y-4 text-right"
dir={
locale === "fa" ||
locale === "ar" ||
locale === "ur" ||
locale === "he" ||
locale === "ks"
? "rtl"
: "ltr"
}
>
<p className="text-sm font-bold text-[#E11D48] leading-relaxed bg-[#FFF1F2] p-3 rounded-xl border border-[#FFE4E6]">
{t.maleRejectionWarning.carefulReview}
</p>
<div className="flex gap-2.5 items-start p-3 bg-gray-50 rounded-xl border border-gray-100">
<span className="text-lg shrink-0">💡</span>
<p className="text-xs text-[#6B7280] leading-relaxed">
{t.maleRejectionWarning.friendlyDelay}
</p>
</div>
<div className="flex gap-2.5 items-start p-3 bg-gray-50 rounded-xl border border-gray-100">
<span className="text-lg shrink-0"></span>
<p className="text-xs text-[#6B7280] leading-relaxed">
{t.maleRejectionWarning.noPenalty}
</p>
</div>
</div>
}
buttons={({ close }) => (
<div className="w-full space-y-3">
<SwipeButton
text={t.maleRejectionWarning.swipeText}
onSuccess={() => {
close();
setIsDismissReasonSheetOpen(true);
}}
/>
<Button
variant="outlined"
className="w-full py-[14px] text-[15px] font-semibold text-gray-500 border-gray-200"
onClick={close}
>
{t.common.cancel}
</Button>
</div>
)}
onClose={() => setIsMaleRejectWarningOpen(false)}
/>
) : null}
{isDismissReasonSheetOpen ? (
<DismissReasonSheet
onClose={() => setIsDismissReasonSheetOpen(false)}
@ -477,7 +534,13 @@ export default function NewMatchProfilePage() {
<button
type="button"
disabled={!caseId || isSubmitting || isMaleAccepted}
onClick={() => setIsRejectSheetOpen(true)}
onClick={() => {
if (isFemaleProfile) {
setIsRejectSheetOpen(true);
} else {
setIsMaleRejectWarningOpen(true);
}
}}
className="inline-flex w-1/3 h-[52px] items-center justify-center rounded-[12px] border border-[#BFBFBF] bg-white px-4 text-[16px] font-semibold text-[#9A9A9A]"
>
Reject

6
src/app/providers.tsx

@ -16,7 +16,13 @@ function AppFocusReloader({ children }: { children: ReactNode }) {
(window as any).__queryClient = queryClient;
}
let lastReloadTime = 0;
const handleReload = () => {
const now = Date.now();
if (now - lastReloadTime < 5000) {
return;
}
lastReloadTime = now;
// Invalidate all active queries so fresh data is reloaded from backend
queryClient.invalidateQueries();
};

10
src/app/questions-list/page.tsx

@ -301,6 +301,16 @@ export default function QuestionsListPage() {
<NavigationButton
icon="back"
iconLabel={t.questions.closeQuestionsList}
onClick={(e) => {
e.preventDefault();
if (typeof window !== "undefined" && (window as any).HabibApp) {
(window as any).HabibApp.postMessage(
JSON.stringify({ action: "close_service" }),
);
} else {
router.push("/");
}
}}
/>
<h1 className="group-16 font-semibold text-[#151515]">
{t.questions.profileRegistration}

30
src/components/Componentes/navigation-button.tsx

@ -5,8 +5,9 @@ import { useRouter } from "next/navigation";
import type { ButtonHTMLAttributes, ReactNode } from "react";
import { useState } from "react";
import { GoArrowLeft } from "react-icons/go";
import HelpModal from "./help-modal";
import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import { useI18n } from "@/translations/provider";
import HelpModal from "./help-modal";
type NavigationButtonIcon =
| "back"
@ -14,7 +15,8 @@ type NavigationButtonIcon =
| "close"
| "info"
| "document"
| "subscription";
| "subscription"
| "consultation";
type NavigationButtonVariant = "default" | "transparent";
export type NavigationButtonProps = Omit<
@ -45,6 +47,14 @@ export function NavigationButton({
const router = useRouter();
const { dictionary: t } = useI18n();
const [isHelpOpen, setIsHelpOpen] = useState(false);
const { data: profile } = useMarriageProfileQuery();
const isFemale = profile?.gender === "female";
const hasActiveSubscription = !!profile?.active_subscription;
if (icon === "subscription" && isFemale) {
return <div className="size-10" />;
}
const iconNode = (() => {
switch (icon) {
@ -57,6 +67,7 @@ export function NavigationButton({
/>
);
case "support":
case "consultation":
return (
<Image
src="/assets/images/support.svg"
@ -92,7 +103,11 @@ export function NavigationButton({
case "subscription":
return (
<Image
src="/assets/images/icon-park-outline_diamond.svg"
src={
hasActiveSubscription
? "/assets/images/diamond-color.png"
: "/assets/images/icon-park-outline_diamond.svg"
}
alt=""
aria-hidden="true"
className="size-6"
@ -122,7 +137,14 @@ export function NavigationButton({
<button
{...props}
type={type}
aria-label={iconLabel ?? (icon === "back" ? t.common.back : icon)}
aria-label={
iconLabel ??
(icon === "back"
? t.common.back
: icon === "consultation"
? (t.common as any).consultation
: icon)
}
onClick={(event) => {
props.onClick?.(event);

147
src/components/Componentes/payment-swipe-modal.tsx

@ -0,0 +1,147 @@
"use client";
import Image from "next/image";
import { authBridge } from "@/lib/auth-bridge";
import { useI18n } from "@/translations/provider";
import { DotsLoader } from "./button";
import SwipeButton from "./swipe-button";
type PaymentSwipeModalProps = {
onSuccess: () => void;
isPaymentPending: boolean;
errorMessage: string | null;
};
export function PaymentSwipeModal({
onSuccess,
isPaymentPending,
errorMessage,
}: PaymentSwipeModalProps) {
const { dictionary: t } = useI18n();
const modalT = (t as any).paymentModal || {};
const currentCoins = authBridge.getCoins();
const handleCloseService = () => {
if (
typeof window !== "undefined" &&
(window as any).HabibApp?.postMessage
) {
(window as any).HabibApp.postMessage(
JSON.stringify({ action: "close_service" }),
);
} else {
window.history.back();
}
};
return (
<div
className="fixed inset-0 z-50 flex items-end justify-center bg-[#171717]/55 backdrop-blur-xs transition-opacity duration-300"
role="dialog"
aria-modal="true"
>
<section className="w-full sm:max-w-[375px] rounded-t-[24px] bg-[#FAF9F9] px-5 pt-6 pb-8 text-center shadow-[0_-8px_30px_rgb(0,0,0,0.12)] animate-slide-up">
{/* Diamond Icon Indicator */}
<div className="mx-auto flex h-[64px] w-[64px] items-center justify-center rounded-full bg-[#FFECEF] shadow-sm mb-3">
<Image
src="/assets/images/icon-park-outline_diamond.svg"
alt="Diamond"
width={36}
height={36}
className="shrink-0"
/>
</div>
{/* Modal Title */}
<h2 className="text-[18px] font-bold text-[#1C1C1E] leading-tight">
{modalT.title || "Verification & Subscription"}
</h2>
{/* Verification Info Panel */}
<div className="mt-4 rounded-[16px] bg-white border border-[#E5E5EA] p-4 text-right">
<p className="text-[13px] leading-[1.6] font-medium text-[#3A3A3C]">
{modalT.verificationText ||
"This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost is 50 Habib Coins."}
</p>
<div className="mt-3 flex items-center justify-between border-t border-[#F2F2F7] pt-2.5">
<span className="text-[12px] font-semibold text-[#8E8E93]">
{modalT.activeFor3Months || "Validity duration"}
</span>
<span className="text-[13px] font-bold text-[#F0445B]">
3 {(t.common as any)?.months || "Months"}
</span>
</div>
<div className="mt-1.5 flex items-center justify-between">
<span className="text-[12px] font-semibold text-[#8E8E93]">
{modalT.cost || "Subscription fee"}
</span>
<span className="inline-flex items-center gap-1 text-[13px] font-bold text-[#F0445B]">
<span>50</span>
<span className="text-[11px] font-medium text-[#8E8E93]">
{(t.common as any)?.coins || "Coins"}
</span>
</span>
</div>
</div>
{/* Quantitative Disclaimer Box */}
<div className="mt-3 rounded-[16px] bg-[#FFF2F4] border border-[#FFCCD4] p-3 text-right">
<p className="text-[11px] leading-[1.5] font-semibold text-[#FF4F67]">
{modalT.disclaimerText ||
"Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users."}
</p>
</div>
{/* User Balance Status */}
<div className="mt-4 flex items-center justify-between px-1.5 text-sm">
<span className="font-semibold text-[#8E8E93]">
{(t.common as any)?.balance || "Your balance"}:
</span>
<span
className={`font-bold ${currentCoins < 50 ? "text-[#FF4F67]" : "text-[#1C1C1E]"}`}
>
{currentCoins} {(t.common as any)?.coins || "Coins"}
</span>
</div>
{/* Error Message Box */}
{errorMessage && (
<div className="mt-3 rounded-[12px] border border-[#FF3B30]/30 bg-[#FF3B30]/10 p-3 text-right">
<p className="text-[12px] font-semibold text-[#FF3B30]">
{errorMessage}
</p>
</div>
)}
{/* Swipe Button / Pending Indicator */}
<div className="mt-5">
{isPaymentPending ? (
<div className="flex h-[56px] w-full items-center justify-center rounded-full bg-[#FFECEF]">
<DotsLoader />
</div>
) : (
<SwipeButton
onSuccess={onSuccess}
text={modalT.swipeToPay || "Swipe to pay 50 Habib Coins"}
disabled={currentCoins < 50}
/>
)}
</div>
{/* Close/Exit link */}
<button
type="button"
onClick={handleCloseService}
className="mt-4 inline-block text-[14px] font-bold text-[#8E8E93] hover:text-[#48484A] transition-colors"
>
{modalT.close || "Exit"}
</button>
</section>
</div>
);
}
export default PaymentSwipeModal;

26
src/components/Componentes/question-answer-storage.tsx

@ -360,6 +360,16 @@ export function QuestionAnswersProvider({
);
}, [slug, storageKey, serverSectionData, questions, canEdit]);
const syncTimeoutRef = useRef<NodeJS.Timeout | null>(null);
useEffect(() => {
return () => {
if (syncTimeoutRef.current !== null) {
clearTimeout(syncTimeoutRef.current);
}
};
}, []);
const getAnswerValue = useCallback(
(question: QuestionField, questionIndex: number) =>
answers[getQuestionFieldKey(question, questionIndex)]?.value,
@ -393,10 +403,20 @@ export function QuestionAnswersProvider({
true,
);
// Sync with the backend immediately when value is updated
setTimeout(() => {
if (syncTimeoutRef.current !== null) {
clearTimeout(syncTimeoutRef.current);
}
const isTextLike =
question.type === "text" ||
question.type === "textarea" ||
question.type === "number";
const delay = isTextLike ? 1000 : 0;
syncTimeoutRef.current = setTimeout(() => {
void flushAnswersRef.current();
}, 0);
}, delay);
return nextAnswers;
});

92
src/components/Componentes/question-section-flow.tsx

@ -3,8 +3,7 @@
import Image from "next/image";
import { useRouter } from "next/navigation";
import type { ReactNode } from "react";
import { useCallback, useState } from "react";
import Button from "./button";
import { useCallback, useEffect, useState } from "react";
import { localizePath } from "@/translations/config";
import { useI18n } from "@/translations/provider";
import { useQuestionAnswers } from "./question-answer-storage";
@ -77,7 +76,80 @@ function SectionFlowContent({
}
}, [exitHref, flushAnswers, isCompleted, locale, router]);
const isDisabled = !isCompleted || isLeaving;
useEffect(() => {
if (!isCompleted || isLeaving) return;
if (activeQuestionIndex !== (questions?.length ?? 0) - 1) return;
let isScheduled = false;
let timerId: NodeJS.Timeout | null = null;
const checkAndSubmit = () => {
const activeEl = document.activeElement;
const isTyping =
activeEl &&
(activeEl.tagName === "INPUT" || activeEl.tagName === "TEXTAREA");
if (!isTyping) {
if (!isScheduled) {
isScheduled = true;
timerId = setTimeout(() => {
void handleContinue();
}, 800);
}
}
};
checkAndSubmit();
const handleBlur = () => {
setTimeout(() => {
const activeEl = document.activeElement;
const stillTyping =
activeEl &&
(activeEl.tagName === "INPUT" || activeEl.tagName === "TEXTAREA");
if (!stillTyping && !isScheduled) {
isScheduled = true;
timerId = setTimeout(() => {
void handleContinue();
}, 400);
}
}, 100);
};
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === "Enter") {
const target = e.target as HTMLElement;
if (
target &&
(target.tagName === "INPUT" || target.tagName === "TEXTAREA")
) {
target.blur();
if (!isScheduled) {
isScheduled = true;
timerId = setTimeout(() => {
void handleContinue();
}, 400);
}
}
}
};
const activeEl = document.activeElement;
if (activeEl) {
activeEl.addEventListener("blur", handleBlur);
}
window.addEventListener("keydown", handleKeyDown);
return () => {
if (activeEl) {
activeEl.removeEventListener("blur", handleBlur);
}
window.removeEventListener("keydown", handleKeyDown);
if (timerId) {
clearTimeout(timerId);
}
};
}, [isCompleted, isLeaving, activeQuestionIndex, questions?.length, handleContinue]);
const age = getStoredAge();
const activeQuestion = questions?.[activeQuestionIndex];
@ -107,20 +179,6 @@ function SectionFlowContent({
height={31}
/>
}
footer={
<Button
className={[
"rounded-[14px] py-[16px] transition-all duration-300 font-bold text-[16px]",
isDisabled
? "!bg-[#E8D9D7] !text-[#9E8E8C] !opacity-60 !shadow-none cursor-not-allowed pointer-events-none"
: "!bg-linear-to-r !from-[#F2465F] !to-[#E03950] !text-white !opacity-100 shadow-[0_12px_28px_rgba(242,70,95,0.38)] cursor-pointer hover:brightness-105 active:scale-[0.99]",
].join(" ")}
disabled={isDisabled}
onClick={() => void handleContinue()}
>
{continueLabel}
</Button>
}
onQuestionExit={handleQuestionExit}
onQuestionTransition={markOptionalQuestionsPassed}
onActiveIndexChange={setActiveQuestionIndex}

17
src/components/Componentes/question-snap-list.tsx

@ -9,8 +9,6 @@ import {
useRef,
useState,
} from "react";
import { GoArrowDown } from "react-icons/go";
import { useI18n } from "@/translations/provider";
import { useQuestionProgress } from "./question-progress-tracker";
@ -412,20 +410,7 @@ export function QuestionSnapList({
{firstQuestionHint}
</div>
) : null}
{justCompleted && activeIndex < questions.length - 1 ? (
<button
type="button"
onClick={() => {
onQuestionExit?.(activeIndex, questions.length - 1);
onQuestionTransition?.(activeIndex, questions.length - 1);
setActiveIndex(questions.length - 1);
}}
className="fixed right-[max(16px,calc(50%-170px))] bottom-6 z-30 inline-flex items-center gap-1.5 rounded-full bg-[#1B1B1B]/90 px-3.5 py-2 text-xs font-semibold text-white shadow-[0_8px_20px_rgba(0,0,0,0.22)] backdrop-blur-md transition-all duration-300 hover:bg-[#1B1B1B] active:scale-95 cursor-pointer animate-in fade-in slide-in-from-right-4"
>
<GoArrowDown className="size-3.5 motion-safe:animate-bounce" />
<span>{t.questions?.moveToEnd ?? "Move to the End"}</span>
</button>
) : null}
</section>
);
}

162
src/components/Componentes/swipe-button.tsx

@ -0,0 +1,162 @@
"use client";
import type React from "react";
import { useEffect, useRef, useState } from "react";
import { GoChevronLeft, GoChevronRight } from "react-icons/go";
import { useI18n } from "@/translations/provider";
type SwipeButtonProps = {
onSuccess: () => void;
text: string;
disabled?: boolean;
};
export function SwipeButton({
onSuccess,
text,
disabled = false,
}: SwipeButtonProps) {
const { locale } = useI18n();
const isRtl =
locale === "fa" ||
locale === "ar" ||
locale === "ur" ||
locale === "he" ||
locale === "ks";
const [dragX, setDragX] = useState(0);
const [isDragging, setIsDragging] = useState(false);
const [swiped, setSwiped] = useState(false);
const containerRef = useRef<HTMLDivElement>(null);
const startX = useRef(0);
const getContainerWidth = () => {
return containerRef.current ? containerRef.current.clientWidth : 0;
};
const handleStart = (clientX: number) => {
if (disabled || swiped) return;
setIsDragging(true);
startX.current = clientX;
};
const handleMove = (clientX: number) => {
if (!isDragging || swiped) return;
const delta = isRtl ? startX.current - clientX : clientX - startX.current;
const containerWidth = getContainerWidth();
const handleWidth = 48; // width of the handle button (w-12 = 48px)
const padding = 8; // padding around the handle (p-1 = 4px on each side -> 8px total)
const maxDrag = containerWidth - handleWidth - padding;
const newDragX = Math.max(0, Math.min(delta, maxDrag));
setDragX(newDragX);
};
const handleEnd = () => {
if (!isDragging) return;
setIsDragging(false);
const containerWidth = getContainerWidth();
const handleWidth = 48;
const padding = 8;
const maxDrag = containerWidth - handleWidth - padding;
if (dragX >= maxDrag * 0.85) {
const finalX = maxDrag;
setDragX(finalX);
setSwiped(true);
onSuccess();
} else {
setDragX(0);
}
};
// Touch handlers
const onTouchStart = (e: React.TouchEvent) => {
handleStart(e.touches[0].clientX);
};
const onTouchMove = (e: React.TouchEvent) => {
handleMove(e.touches[0].clientX);
};
// Mouse handlers
const onMouseDown = (e: React.MouseEvent) => {
handleStart(e.clientX);
};
useEffect(() => {
if (!isDragging) return;
const onGlobalMouseMove = (e: MouseEvent) => {
handleMove(e.clientX);
};
const onGlobalMouseUp = () => {
handleEnd();
};
window.addEventListener("mousemove", onGlobalMouseMove);
window.addEventListener("mouseup", onGlobalMouseUp);
return () => {
window.removeEventListener("mousemove", onGlobalMouseMove);
window.removeEventListener("mouseup", onGlobalMouseUp);
};
}, [isDragging, handleEnd, handleMove]);
const handleStyle = isRtl
? {
transform: `translateX(${-dragX}px)`,
transition: isDragging ? "none" : "transform 0.2s ease-out",
right: "4px",
}
: {
transform: `translateX(${dragX}px)`,
transition: isDragging ? "none" : "transform 0.2s ease-out",
left: "4px",
};
return (
<div
ref={containerRef}
className={`relative flex h-[56px] w-full items-center justify-center rounded-full bg-[#FFECEF] p-1 select-none overflow-hidden ${
disabled ? "opacity-60 cursor-not-allowed" : "cursor-pointer"
}`}
onTouchStart={onTouchStart}
onTouchMove={onTouchMove}
onTouchEnd={handleEnd}
onMouseDown={onMouseDown}
>
{/* Background sliding fill */}
<div
className="absolute inset-y-0 bg-[#FFCCD4]/30"
style={{
left: isRtl ? "auto" : 0,
right: isRtl ? 0 : "auto",
width: `${dragX + 48}px`,
transition: isDragging ? "none" : "width 0.2s ease-out",
}}
/>
{/* Slide text */}
<span className="pointer-events-none z-10 text-[14px] font-bold text-[#F0445B] animate-pulse">
{swiped ? "..." : text}
</span>
{/* Slide handle */}
<div
style={handleStyle}
className="absolute top-1 bottom-1 flex aspect-square items-center justify-center rounded-full bg-[#F0445B] text-white shadow-lg z-20 cursor-grab active:cursor-grabbing"
>
{isRtl ? (
<GoChevronLeft className="size-6 shrink-0" />
) : (
<GoChevronRight className="size-6 shrink-0" />
)}
</div>
</div>
);
}
export default SwipeButton;

169
src/components/Componentes/token-switcher.tsx

@ -39,6 +39,7 @@ export function TokenSwitcher({
const isMale = currentToken === MALE_TOKEN;
const isFemale = currentToken === FEMALE_TOKEN;
const isNoToken = currentToken === "NO_TOKEN" || !currentToken;
const handleSelectToken = (newToken: string) => {
if (typeof window !== "undefined") {
@ -62,6 +63,59 @@ export function TokenSwitcher({
}
};
const handleResetUser = async (userId: number | null, label: string) => {
const message =
userId !== null
? `آیا از پاک کردن تمامی اطلاعات هویتی، پاسخ‌ها و پیشرفت این کاربر (${label}) و شروع مجدد از مرحله اول آنبوردینگ مطمئن هستید؟`
: `آیا از پاک کردن تمامی اطلاعات محلی و کوکی‌های مربوط به این حالت (بدون توکن) و شروع مجدد مطمئن هستید؟`;
if (!window.confirm(message)) {
return;
}
try {
// 1. Clear local/session storage
if (typeof window !== "undefined") {
window.localStorage.clear();
window.sessionStorage.clear();
}
// 2. Call backend reset script via API route if it is a real DB user
if (userId !== null) {
const response = await fetch("/api/dev-reset-profile", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ userId }),
});
if (!response.ok) {
const errData = await response.json();
alert(`خطا در ریست پروفایل: ${errData.error || response.statusText}`);
return;
}
}
// 3. Set the target token in the cookies and redirect to /
const targetToken = userId === 17119 ? MALE_TOKEN : userId === 147714 ? FEMALE_TOKEN : "NO_TOKEN";
setClientCookie(TOKEN_COOKIE_NAME, targetToken);
setClientCookie("habib_token", targetToken);
if (typeof window !== "undefined") {
sessionStorage.setItem(TOKEN_COOKIE_NAME, targetToken);
(window as any).HABIB_TOKEN = targetToken;
setCurrentToken(targetToken);
}
setIsOpen(false);
window.location.href = "/";
} catch (error) {
console.error("Failed to reset user:", error);
alert("خطایی در انجام عملیات رخ داد.");
}
};
return (
<>
<button
@ -80,7 +134,7 @@ export function TokenSwitcher({
.join(" ")}
>
<MdOutlineSwitchAccount className="size-5 text-rose-500" />
<span>{isMale ? "آقا 👨" : isFemale ? "خانم 👩" : "توکن 🔑"}</span>
<span>{isMale ? "آقا 👨" : isFemale ? "خانم 👩" : isNoToken ? "بدون توکن 👤" : "توکن 🔑"}</span>
</button>
{isOpen && (
@ -104,18 +158,20 @@ export function TokenSwitcher({
</div>
<div className="mt-4 flex flex-col gap-3">
{/* Male option */}
<button
type="button"
onClick={() => handleSelectToken(MALE_TOKEN)}
{/* Male option card */}
<div
className={[
"flex items-center justify-between p-3.5 rounded-xl border text-right transition-all dir-rtl",
"flex items-center justify-between rounded-xl border transition-all dir-rtl overflow-hidden",
isMale
? "border-rose-500 bg-rose-50/60 dark:bg-rose-950/30 text-rose-900 dark:text-rose-100 font-semibold shadow-xs"
: "border-slate-200 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700 bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-200",
].join(" ")}
>
<div className="flex items-center gap-3">
<button
type="button"
onClick={() => handleSelectToken(MALE_TOKEN)}
className="flex-1 flex items-center gap-3 p-3.5 text-right"
>
<span className="text-2xl">👨</span>
<div>
<div className="text-sm font-bold">حساب آقا</div>
@ -126,26 +182,38 @@ export function TokenSwitcher({
{MALE_TOKEN}
</div>
</div>
</button>
<div className="flex items-center gap-1.5 pl-3">
{isMale && (
<span className="text-[10px] px-2 py-0.5 rounded-full bg-rose-500 text-white font-medium">
فعال
</span>
)}
<button
type="button"
onClick={() => handleResetUser(17119, "حساب آقا")}
title="پاک کردن اطلاعات و شروع مجدد"
className="p-2 text-slate-400 hover:text-rose-500 hover:bg-rose-50 dark:hover:bg-rose-950/20 rounded-lg transition-colors"
>
🗑
</button>
</div>
{isMale && (
<span className="text-xs px-2.5 py-1 rounded-full bg-rose-500 text-white font-medium">
فعال
</span>
)}
</button>
</div>
{/* Female option */}
<button
type="button"
onClick={() => handleSelectToken(FEMALE_TOKEN)}
{/* Female option card */}
<div
className={[
"flex items-center justify-between p-3.5 rounded-xl border text-right transition-all dir-rtl",
"flex items-center justify-between rounded-xl border transition-all dir-rtl overflow-hidden",
isFemale
? "border-rose-500 bg-rose-50/60 dark:bg-rose-950/30 text-rose-900 dark:text-rose-100 font-semibold shadow-xs"
: "border-slate-200 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700 bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-200",
].join(" ")}
>
<div className="flex items-center gap-3">
<button
type="button"
onClick={() => handleSelectToken(FEMALE_TOKEN)}
className="flex-1 flex items-center gap-3 p-3.5 text-right"
>
<span className="text-2xl">👩</span>
<div>
<div className="text-sm font-bold">حساب خانم</div>
@ -156,16 +224,65 @@ export function TokenSwitcher({
{FEMALE_TOKEN}
</div>
</div>
</button>
<div className="flex items-center gap-1.5 pl-3">
{isFemale && (
<span className="text-[10px] px-2 py-0.5 rounded-full bg-rose-500 text-white font-medium">
فعال
</span>
)}
<button
type="button"
onClick={() => handleResetUser(147714, "حساب خانم")}
title="پاک کردن اطلاعات و شروع مجدد"
className="p-2 text-slate-400 hover:text-rose-500 hover:bg-rose-50 dark:hover:bg-rose-950/20 rounded-lg transition-colors"
>
🗑
</button>
</div>
{isFemale && (
<span className="text-xs px-2.5 py-1 rounded-full bg-rose-500 text-white font-medium">
فعال
</span>
)}
</button>
</div>
{/* No token option card */}
<div
className={[
"flex items-center justify-between rounded-xl border transition-all dir-rtl overflow-hidden",
isNoToken
? "border-rose-500 bg-rose-50/60 dark:bg-rose-950/30 text-rose-900 dark:text-rose-100 font-semibold shadow-xs"
: "border-slate-200 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700 bg-white dark:bg-slate-800 text-slate-700 dark:text-slate-200",
].join(" ")}
>
<button
type="button"
onClick={() => handleSelectToken("NO_TOKEN")}
className="flex-1 flex items-center gap-3 p-3.5 text-right"
>
<span className="text-2xl">👤</span>
<div>
<div className="text-sm font-bold">کاربر بدون توکن</div>
<div className="text-xs text-slate-500 dark:text-slate-400 font-medium">
حالت مهمان / بدون احراز هویت
</div>
</div>
</button>
<div className="flex items-center gap-1.5 pl-3">
{isNoToken && (
<span className="text-[10px] px-2 py-0.5 rounded-full bg-rose-500 text-white font-medium">
فعال
</span>
)}
<button
type="button"
onClick={() => handleResetUser(null, "کاربر بدون توکن")}
title="پاک کردن اطلاعات و شروع مجدد"
className="p-2 text-slate-400 hover:text-rose-500 hover:bg-rose-50 dark:hover:bg-rose-950/20 rounded-lg transition-colors"
>
🗑
</button>
</div>
</div>
</div>
<div className="mt-5 flex justify-end">
<div className="mt-5 flex flex-col gap-2">
<button
type="button"
onClick={() => setIsOpen(false)}

614
src/data/questions/en.json
File diff suppressed because it is too large
View File

614
src/data/questions/fa.json
File diff suppressed because it is too large
View File

2
src/hooks/marriage/types.ts

@ -106,6 +106,8 @@ export type MarriageProfile = {
needs_subscription: boolean;
recommended_plan: MarriageRecommendedPlan | null;
match_summary: MarriageMatchSummary | null;
intro_video_url?: string | null;
intro_video_thumbnail_url?: string | null;
};
export type MarriageProfileResponse = MarriageProfile;

23
src/hooks/marriage/use-marriage-config.ts

@ -0,0 +1,23 @@
"use client";
import { useQuery } from "@tanstack/react-query";
import { http } from "@/lib/http";
export type MarriageConfig = {
intro_video_url: string;
intro_video_thumbnail_url: string;
};
export async function getMarriageConfig() {
const { data } = await http.get<MarriageConfig>("/api/marriage/config/");
return data;
}
export function useMarriageConfigQuery() {
return useQuery({
queryKey: ["marriage", "config"],
queryFn: getMarriageConfig,
staleTime: 5 * 60 * 1000, // 5 minutes cache
refetchOnWindowFocus: false,
});
}

25
src/lib/auth-bridge.ts

@ -196,7 +196,7 @@ class AuthBridge {
}
if (this.syncFromStorage()) {
return this.token;
return this.token === "NO_TOKEN" ? null : this.token;
}
this.setupFlutterResponseListener();
@ -210,13 +210,28 @@ class AuthBridge {
}
public getToken(): string | null {
if (this.token === "NO_TOKEN") {
return null;
}
const cookieToken =
getClientCookie(TOKEN_COOKIE_NAME) ??
getClientCookie("habib_token") ??
(typeof window !== "undefined" ? sessionStorage.getItem(TOKEN_COOKIE_NAME) : null);
if (cookieToken === "NO_TOKEN") {
return null;
}
if (this.token) {
return this.token;
}
if (cookieToken) {
return cookieToken;
}
return (
getClientCookie(TOKEN_COOKIE_NAME) ??
getClientCookie("habib_token") ??
process.env.NEXT_PUBLIC_DEFAULT_TOKEN ??
"f3a7543b44ef0a713d1ee0d4f7866b3825cf1308"
);
@ -227,8 +242,10 @@ class AuthBridge {
}
public isAuthenticated(): boolean {
return !!this.getToken();
const token = this.getToken();
return !!token && token !== "NO_TOKEN";
}
}
export const authBridge = new AuthBridge();

78
src/translations/locales/ar.json

@ -22,15 +22,16 @@
"help": "Help",
"gotIt": "Got it",
"helpDescription": "Psychologically, this practice fosters a sense of empathy and contentment, which can reduce financial stress. Socially, lending strengthens neighborhood bonds and creates support networks that can lead to economic opportunities. This hadith encourages believers to lend dough, bread, and fire to increase their sustenance.",
"other": "أخرى"
"other": "أخرى",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "الخلفية العائلية، الحالة الاجتماعية والأطفال",
"familyMaritalEstimate": "20 دقيقة",
"familyMaritalEstimate": "5 دقيقة",
"notAPriority": "هذا الموضوع ليس أولوية بالنسبة لي.",
"writeOtherTraits": "Write other options...",
"fromAge": "من",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "البحث الخاص بك نشط",
"description": "يقوم نظامنا بالبحث بنشاط عن شركاء متوافقين بناءً على معاييرك. تتطلب هذه العملية الوقت والصبر. سنخطرك فورًا بمجرد أن يكون الملف الشخصي جاهزًا للمراجعة.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "تحذير رفض الاقتراح",
"carefulReview": "قبل اتخاذ القرار النهائي، يرجى قراءة ملف الشخص الآخر بالكامل ومرة أخرى للتأكد من قرارك.",
"friendlyDelay": "يرجى العلم أن رفض هذه الحالة قد يؤدي إلى بعض التأخير في تقديم الاقتراح التالي، ولكن لا يوجد أي إلزام بالقبول وأنت حر تماماً.",
"noPenalty": "تسجيل هذا الرفض لا يترتب عليه أي عقوبة؛ بل يدخل الحالة في فترة اتخاذ قرار مدتها يومين لإنهاء الوضع.",
"swipeText": "اسحب لتأكيد الرفض"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/az.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Digər"
"other": "Digər",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Ailə Keçmişi, Ailə Vəziyyəti və Uşaqlar",
"familyMaritalEstimate": "20 dəqiqə",
"familyMaritalEstimate": "5 dəqiqə",
"notAPriority": "Bu mövzu mənim üçün prioritet deyil.",
"writeOtherTraits": "Write other options...",
"fromAge": "Aşağı",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "AXTARIŞINIZ AKTİVDİR",
"description": "Sistemimiz meyarlarınız əsasında aktiv şəkildə uyğun tərəfdaşlar axtarır. Bu proses vaxt və səbir təlif edir. Profil nəzərdən keçirilmək üçün hazır olan kimi sizə dərhal məlumat verəcəyik.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "İmtina Xəbərdarlığı",
"carefulReview": "Son qərarı verməzdən əvvəl, zəhmət olmasa digər şəxsin profilini tamamilə və yenidən diqqətlə nəzərdən keçirin.",
"friendlyDelay": "Nəzərə alın ki, bu təklifdən imtina etmək növbəti namizədin təqdim olunmasını bir qədər gecikdirə bilər, lakin qəbul etmək məcburiyyəti yoxdur və siz tamamilə azadsınız.",
"noPenalty": "Bu imtinanın təsdiqlənməsi heç bir cəriməyə səbəb olmur; sadəcə vəziyyəti yekunlaşdırmaq üçün 2 günlük qərar pəncərəsinə daxil edir.",
"swipeText": "İmtinanı təsdiqləmək üçün sürüşdürün"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/bn.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "অন্যান্য"
"other": "অন্যান্য",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "পারিবারিক পটভূমি, বৈবাহিক অবস্থা এবং সন্তানাদি",
"familyMaritalEstimate": "20 মিনিট",
"familyMaritalEstimate": "5 মিনিট",
"notAPriority": "এই বিষয়টি আমার জন্য অগ্রাধিকার নয়।",
"writeOtherTraits": "Write other options...",
"fromAge": "থেকে",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "আপনার অনুসন্ধান সক্রিয় আছে",
"description": "আমাদের সিস্টেম আপনার মানদণ্ডের ভিত্তিতে সক্রিয়ভাবে উপযুক্ত সঙ্গী খুঁজছে। এই প্রক্রিয়াটির জন্য সময় এবং ধৈর্যের প্রয়োজন। একটি প্রোফাইল আপনার পর্যালোচনার জন্য প্রস্তুত হলে আমরা আপনাকে অবিলম্বে অবহিত করব।",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "প্রত্যাখ্যানের সতর্কতা",
"carefulReview": "চূড়ান্ত সিদ্ধান্ত নেওয়ার আগে, অনুগ্রহ করে অপর ব্যক্তির প্রোফাইলটি সম্পূর্ণ এবং আবার মনোযোগ সহকারে পর্যালোচনা করুন।",
"friendlyDelay": "অনুগ্রহ করে মনে রাখবেন যে এই প্রস্তাবটি প্রত্যাখ্যান করলে পরবর্তী ম্যাচটি সুপারিশ করতে কিছু বিলম্ব হতে পারে, তবে এটি গ্রহণ করার কোন বাধ্যবাধকতা নেই এবং আপনি সম্পূর্ণরূপে স্বাধীন।",
"noPenalty": "এই প্রত্যাখ্যান নিশ্চিত করার ফলে কোন জরিমানা হবে না; এটি কেবল পরিস্থিতি চূড়ান্ত করার জন্য ২ দিনের সিদ্ধান্তের সময়সীমা শুরু করবে।",
"swipeText": "প্রত্যাখ্যান নিশ্চিত করতে সোয়াইপ করুন"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/da.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Andet"
"other": "Andet",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Familiebaggrund, civilstand og børn",
"familyMaritalEstimate": "20 minutter",
"familyMaritalEstimate": "5 minutter",
"notAPriority": "Dette emne er ikke en prioritet for mig.",
"writeOtherTraits": "Write other options...",
"fromAge": "Fra",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "DIN SØGNING ER AKTIV",
"description": "Vores system søger aktivt efter kompatible partnere baseret på dine kriterier. Denne proces kræver tid og tålmodighed. Vi giver dig besked med det samme, når en profil er klar til din gennemgang.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Advarsel om afvisning",
"carefulReview": "Før du træffer en endelig beslutning, bedes du læse og gennemgå den anden persons profil grundigt igen.",
"friendlyDelay": "Bemærk venligst, at afvisning af dette forslag kan forsinke anbefalingen af det næste match, men der er absolut ingen forpligtelse til at acceptere.",
"noPenalty": "Bekræftelse af denne afvisning medfører ingen bøde; det sætter blot status ind i et 2-dages beslutningsvindue for at færdiggøre sagen.",
"swipeText": "Stryg for at bekræfte afvisning"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/de.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Andere"
"other": "Andere",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Familiärer Hintergrund, Familienstand und Kinder",
"familyMaritalEstimate": "20 Minuten",
"familyMaritalEstimate": "5 Minuten",
"notAPriority": "Dieses Thema hat für mich keine Priorität.",
"writeOtherTraits": "Write other options...",
"fromAge": "Von",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "IHRE SUCHE IST AKTIV",
"description": "Unser System sucht aktiv nach kompatiblen Partnern basierend auf Ihren Kriterien. Dieser Prozess erfordert Zeit und Geduld. Wir werden Sie umgehend benachrichtigen, sobald ein profil zur Überprüfung bereit ist.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Ablehnungswarnung",
"carefulReview": "Bevor Sie eine endgültige Entscheidung treffen, lesen Sie bitte das Profil der anderen Person noch einmal vollständig und sorgfältig durch.",
"friendlyDelay": "Bitte beachten Sie, dass die Ablehnung dieses Vorschlags die Empfehlung des nächsten Partners verzögern kann. Es besteht jedoch keine Verpflichtung zur Annahme.",
"noPenalty": "Die Bestätigung dieser Ablehnung zieht keine Strafe nach sich; sie setzt den Status lediglich in ein 2-tägiges Entscheidungsfenster zur Finalisierung.",
"swipeText": "Wischen, um die Ablehnung zu bestätigen"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/en.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Other"
"other": "Other",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Family Background, Marital Status, and Children",
"familyMaritalEstimate": "20 minutes",
"familyMaritalEstimate": "5 minutes",
"notAPriority": "This is not a priority for me",
"writeOtherTraits": "Write other options...",
"fromAge": "From",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "SEARCH IN PROGRESS",
"description": "Our system is actively looking for compatible partners based on your criteria. This process requires time and patience. We will notify you immediately once a profile is ready for your review.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Rejection Warning",
"carefulReview": "Before making a final decision, please carefully review the other person's profile again completely to make an informed choice.",
"friendlyDelay": "Please note that rejecting this case might cause a delay in recommending the next match, but there is absolutely no obligation to accept and you are fully free to choose.",
"noPenalty": "Confirming this rejection will not result in any penalty. Instead, it simply enters your status into a 2-day decision window to finalize the case.",
"swipeText": "Swipe to confirm rejection"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/es.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Otro"
"other": "Otro",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Antecedentes familiares, estado civil e hijos",
"familyMaritalEstimate": "20 minutos",
"familyMaritalEstimate": "5 minutos",
"notAPriority": "Este tema no es una prioridad para mí.",
"writeOtherTraits": "Write other options...",
"fromAge": "Desde",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "SU BÚSQUEDA ESTÁ ACTIVA",
"description": "Nuestro sistema está buscando activamente parejas compatibles según sus criterios. Este proceso requiere tiempo y paciencia. Le notificaremos de inmediato una vez que un perfil esté listo para su revisión.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Advertencia de Rechazo",
"carefulReview": "Antes de tomar la decisión final, revise detenidamente y por completo el perfil de la otra persona.",
"friendlyDelay": "Tenga en cuenta que rechazar este caso puede retrasar la recomendación de la siguiente persona, pero no hay obligación de aceptar y es totalmente libre de elegir.",
"noPenalty": "Confirmar este rechazo no aplicará ninguna penalización; simplemente iniciará un plazo de decisión de 2 días para finalizar el estado.",
"swipeText": "Deslice para confirmar el rechazo"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/fa.json

@ -22,14 +22,15 @@
"nextPage": "صفحه بعدی",
"previousPage": "صفحه قبلی",
"itemsPerPage": "تعداد موارد در هر صفحه",
"other": "سایر"
"other": "سایر",
"consultation": "مشاوره"
},
"intro": {
"imageAlt": "ازدواج آسمانی",
"title": "مسیری برای ازدواج آسمانی",
"description": "ما با هدف ایجاد مسیری امن و محرمانه برای ازدواج دائم میان مسلمانان کنار هم آمده‌ایم",
"userProfile": "پروفایل کاربر",
"matches": "معرفی‌ها",
"userProfile": "پروفایل کاربری",
"matches": "معرفی",
"marriage": "ازدواج",
"videoAlt": "ویدیو",
"playAlt": "پخش"
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "برای حفظ آرامش، امنیت و شأن شما، روند آشنایی در پلتفرم ما با الگوگیری از رسوم اصیل و محترمانه خانوادگی پیش می‌رود. حضور یک فرد معتمد (ترجیحاً پدر یا مادر) به عنوان رابط، علاوه بر اینکه نشان‌دهنده اصالت شماست، باعث می‌شود طرف مقابل نیز با جدیت، احترام و اطمینان کامل قدم پیش بگذارد.",
"guardianNoticeOver27": "هدف ما شکل‌گیری پیوندهای پایدار بر بستر اعتماد متقابل است. با اینکه ثبت اطلاعات رابط برای شما الزامی نیست، اما معرفی یک فرد معتمد (مانند پدر، مادر یا بزرگتر خانواده) نشان‌دهنده شفافیت و نیت جدی شما برای ازدواج است. پروفایل‌هایی که دارای رابط معتمد هستند، اعتبار بسیار بالاتری دارند و باعث ایجاد اطمینان خاطر بیشتری در خانواده طرف مقابل می‌شوند.",
"familyMaritalTitle": "پیشینه خانوادگی، وضعیت تأهل و فرزندان",
"familyMaritalEstimate": "20 دقیقه",
"familyMaritalEstimate": "۵ دقیقه",
"notAPriority": "این موضوع برایم اولویت ندارد.",
"writeOtherTraits": "سایر موارد را بنویسید...",
"fromAge": "از",
@ -127,8 +128,8 @@
"lockedDescription": "تا زمانی که در حال یافتن گزینه هستیم، امکان ویرایش پروفایل وجود ندارد"
},
"findingMatch": {
"title": "در حال یافتن گزینه ...",
"description": "ما بر اساس ترجیحات شما گزینه‌های مناسب را جستجو می‌کنیم. وقتی گزینه‌ای پیدا شود، پروفایل او را به شما نشان می‌دهیم. اگر تایید کنید، از طرف شما مراحل را ادامه می‌دهیم",
"title": "جستجوی شما فعال است",
"description": "سیستم ما به طور فعال بر اساس معیارهای شما در حال جستجوی همسر مناسب است. این فرآیند به زمان و صبوری نیاز دارد. به محض آماده شدن پروفایل برای بررسی، بلافاصله به شما اطلاع خواهیم داد.",
"advisorTitle": "دریافت مشاور",
"advisorDescription": "نمی‌دانید قدم بعدی چیست؟ بخش روانشناسی ما در هر مرحله شما را راهنمایی می‌کند.",
"getAdvisor": "دریافت مشاور",
@ -163,5 +164,66 @@
"matchProfile": "مشاهده پروفایل گزینه",
"profileLocked": "پروفایل قفل است"
},
"spouseCriteriaConfidentialNotice": "⚠️ این بخش کاملاً محرمانه است و فقط برای مچینگ و بررسی کارشناسان استفاده میشود."
}
"spouseCriteriaConfidentialNotice": "⚠️ این بخش کاملاً محرمانه است و فقط برای مچینگ و بررسی کارشناسان استفاده میشود.",
"paymentModal": {
"title": "تأیید هویت و فعال‌سازی اشتراک",
"verificationText": "این پرداخت به عنوان فرآیند تأیید اعتبار (Verification) حساب کاربری شما عمل می‌کند و یک اشتراک ۳ ماهه برای دریافت معرفی کیس‌های جدید فعال می‌سازد. هزینه این اشتراک معادل ۵۰ حبیب‌کوین می‌باشد.",
"disclaimerText": "توجه داشته باشید که هیچ تضمینی برای ارائه تعداد مشخصی کیس وجود ندارد و حجم ورودی کیس‌ها منحصراً تابع میزان تطابق پروفایل شما با سایر کاربران است.",
"swipeToPay": "برای پرداخت ۵۰ حبیب‌کوین بکشید",
"insufficientCoins": "موجودی سکه شما کافی نیست. لطفا حساب خود را شارژ کنید.",
"activeFor3Months": "معتبر تا ۳ ماه",
"cost": "۵۰ حبیب کوین",
"close": "خروج"
},
"maleRejectionWarning": {
"title": "هشدار رد کردن پیشنهاد",
"carefulReview": "پیش از تصمیم نهایی، لطفاً پروفایل شخص مقابل را به طور کامل و مجدد مطالعه کنید تا با اطمینان تصمیم بگیرید.",
"friendlyDelay": "توجه داشته باشید که رد کردن این مورد ممکن است معرفی مورد بعدی را کمی به تأخیر بیندازد، اما هیچ اجباری در پذیرش وجود ندارد و شما کاملاً آزاد هستید.",
"noPenalty": "ثبت قطعی رد این پیشنهاد هیچ‌گونه جریمه‌ای برای شما ندارد؛ بلکه صرفاً وضعیت شما را وارد یک مهلت تصمیم‌گیری دو روزه برای نهایی‌سازی وضعیت می‌کند.",
"swipeText": "جهت تایید رد کردن، به راست بکشید"
},
"onboarding": {
"submitProcess": "مراحل ثبت اطلاعات",
"termsAndConditions": "قوانین و مقررات",
"welcomeWarning": "کاربر گرامی، ضمن خوش‌آمدگویی به برنامه ازدواج حبیب، لطفاً قبل از استفاده از خدمات این پلتفرم، قوانین و مقررات زیر را به دقت مطالعه فرمایید. ثبت‌نام و استفاده شما از این برنامه به منزله پذیرش کامل این قوانین است.",
"eligibilityTitle": "۱. شرایط عضویت و صلاحیت",
"legalAgeLabel": "سن قانونی:",
"legalAgeValue": "کاربران باید برای ثبت‌نام مستقل به حداقل سن قانونی رسیده باشند.",
"identityVerificationLabel": "احراز هویت:",
"identityVerificationValue": "ارائه مدارک شناسایی معتبر صادر شده توسط دولت در زمان ثبت‌نام الزامی است.",
"singleStatusLabel": "تعهد به وضعیت تجرد:",
"singleStatusValue": "کاربران باید مدارک اثبات تجرد یا در صورت لزوم مدارک طلاق یا فوت همسر را ارائه دهند.",
"intentLabel": "قصد و هدف:",
"intentValue": "تعهد به تک‌همسری و قصد صرفاً برای ازدواج دائم (عدم داشتن روابط موازی یا موقت).",
"healthLabel": "سلامت عمومی:",
"healthValue": "خوداظهاری در مورد سلامت روان، عدم اعتیاد و نداشتن سوءپیشینه کیفری.",
"privacyTitle": "۲. حریم خصوصی و مدیریت داده‌ها",
"contentSecurityLabel": "امنیت محتوا:",
"contentSecurityValue": "جلوگیری فنی از گرفتن اسکرین‌شات از پروفایل‌ها و محیط‌های گفتگو.",
"progressiveDisclosureLabel": "افشای تدریجی:",
"progressiveDisclosureValue": "اطلاعات حساس (عکس چهره، اطلاعات تماس) به صورت گام‌به‌گام و تنها با رضایت طرفین نمایش داده می‌شود.",
"watchVideo": "مشاهده ویدیو",
"videoSpeaker": "دکتر هستی مسعودی",
"videoDescription": "ما با هدف ایجاد مسیری امن و محرمانه برای ازدواج دائم میان مسلمانان کنار هم آمده‌ایم",
"selectGender": "انتخاب جنسیت",
"submitMan": "ثبت‌نام آقا",
"submitWoman": "ثبت‌نام خانم",
"registrationType": "نوع ثبت‌نام",
"readTermsNotice": "قوانین و مقررات را به دقت مطالعه کنید تا در مراحل بعدی با مشکلی مواجه نشوید - مطالعه این بخش الزامی است.",
"registerForSelf": "برای خودم ثبت‌نام می‌کنم",
"registerForOther": "برای شخص دیگری ثبت‌نام می‌کنم",
"finalNotice": "توجه نهایی",
"finalNoticeDesc": "حفظ حریم خصوصی و امنیت شما بالاترین اولویت ماست. ما متعهد به حفظ امنیت اطلاعات شما و اعطای کنترل کامل به شما در طول فرآیند هستیم.",
"noticeItem1": "اطلاعات شما کاملاً محرمانه نگهداری می‌شود.",
"noticeItem2": "اطلاعات شما فقط برای فرآیند تطبیق‌دهی استفاده می‌شود.",
"noticeItem3": "هیچ چیز بدون رضایت شما به اشتراک گذاشته نمی‌شود.",
"noticeItem4": "کنترل مراحل بعدی همیشه در دست شماست.",
"noticeItem5": "اطلاعات تماس شما فقط پس از تأیید خودتان به اشتراک گذاشته می‌شود.",
"noticeItem6": "ما در هر مرحله فضایی امن و محترمانه را فراهم می‌کنیم.",
"closeSlider": "بستن اسلایدر",
"finish": "پایان",
"next": "بعدی",
"back": "قبلی",
"accept": "پذیرش"
}
}

78
src/translations/locales/fr.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Autre"
"other": "Autre",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Antécédents familiaux, état civil et enfants",
"familyMaritalEstimate": "20 minutes",
"familyMaritalEstimate": "5 minutes",
"notAPriority": "Ce sujet n'est pas une priorité pour moi.",
"writeOtherTraits": "Write other options...",
"fromAge": "De",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "VOTRE RECHERCHE EST ACTIVE",
"description": "Notre système recherche activement des partenaires compatibles en fonction de vos critères. Ce processus demande du temps et de la patience. Nous vous informerons immédiatement dès qu'un profil sera prêt à être examiné.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Avertissement de rejet",
"carefulReview": "Avant de prendre une décision finale, veuillez relire attentivement et complètement le profil de l'autre personne.",
"friendlyDelay": "Veuillez noter que le rejet de cette proposition peut entraîner un délai avant la recommandation suivante, mais vous n'avez aucune obligation d'accepter.",
"noPenalty": "Confirmer ce rejet n'entraîne aucune pénalité ; cela place simplement le dossier dans une période de décision de 2 jours pour finaliser le statut.",
"swipeText": "Glissez pour confirmer le rejet"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/gu.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "બીજું"
"other": "બીજું",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "પારિવારિક પૃષ્ઠભૂમિ, વૈવાહિક સ્થિતિ અને બાળકો",
"familyMaritalEstimate": "20 મિનિટ",
"familyMaritalEstimate": "5 મિનિટ",
"notAPriority": "આ વિષય મારા માટે પ્રાથમિકતા નથી.",
"writeOtherTraits": "Write other options...",
"fromAge": "થી",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "તમારી શોધ સક્રિય છે",
"description": "અમારી સિસ્ટમ તમારા માપદંડોના આધારે સુસંગत ભાગીદારોની સક્રિયપણે શોધ કરી રહી છે. આ પ્રક્રિયામાં સમય અને ધીરજની જરૂર છે. પ્રોફાઇલ તમારી સમીક્ષા માટે તૈયાર થતાં જ અમે તમને તાત્કાલિક જાણ કરીશું.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "અસ્વીકાર ચેતવણી",
"carefulReview": "અંતિમ નિર્ણય લેતા પહેલાં, કૃપા કરીને બીજી વ્યક્તિની પ્રોફાઇલને ફરીથી સંપૂર્ણ અને કાળજીપૂર્વક વાંચી લો.",
"friendlyDelay": "કૃપા કરીને નોંધો કે આ પ્રસ્તાવને નકારવાથી આગામી મેચની ભલામણ કરવામાં થોડો વિલંબ થઈ શકે છે, પરંતુ સ્વીકારવા માટે કોઈ દબાણ નથી અને તમે સંપૂર્ણ મુક્ત છો.",
"noPenalty": "આ અસ્વીકારની પુષ્ટિ કરવાથી કોઈ દંડ થશે નહીં; તે માત્ર સ્થિતિને આખરી ઓપ આપવા માટે ૨ દિવસની નિર્ણય લેવાની સમયમર્યાદા શરૂ કરશે.",
"swipeText": "અસ્વીકારની પુષ્ટિ કરવા માટે સ્વાઇપ કરો"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/ha.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Sauran"
"other": "Sauran",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Tarihin Iyali, Yanayin Aure da Yara",
"familyMaritalEstimate": "Minti 20",
"familyMaritalEstimate": "Minti 5",
"notAPriority": "Wannan batu ba fifiko ba ne a gare ni.",
"writeOtherTraits": "Write other options...",
"fromAge": "Daga",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "BINCICKEN KU YANA AIKI",
"description": "Tsarinmu yana aiki don nemo abokan tarayya masu dacewa dangane da ƙa'idodinku. Wannan tsari yana buƙatar lokaci da haƙuri. Za mu sanar da ku nan take da zarar bayanan martaba sun shirya don dubawa.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Gargaɗi Kan Kin Karɓa",
"carefulReview": "Kafin ka yanke shawara ta ƙarshe, da fatan za ka sake duba cikakken bayanin martaba na ɗayan da kyau.",
"friendlyDelay": "Lura cewa kin karɓar wannan shawarar na iya jinkirta gabatar da na gaba, amma babu wani tilas na karɓa kuma kana da cikakken iko.",
"noPenalty": "Tabbatar da wannan kin karɓar ba zai haifar da wani hukunci ba; kawai zai sanya yanayin cikin kwanaki 2 don yanke shawara ta ƙarshe.",
"swipeText": "Gungura don tabbatar da kin karɓa"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/he.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "אחר"
"other": "אחר",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "רקע משפחתי, מצב משפחתי וילדים",
"familyMaritalEstimate": "20 דקות",
"familyMaritalEstimate": "5 דקות",
"notAPriority": "נושא זה אינו בראש סדר העדיפויות שלי.",
"writeOtherTraits": "Write other options...",
"fromAge": "מ-",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "החיפוש שלך פעיל",
"description": "המערכת שלנו מחפשת באופן פעיל שותפים תואמים על סמך הקריטריונים שלך. תהליך זה דורש זמן וסבלנות. אנו נודיע לך מיד ברגע שהפרופיל יהיה מוכן לבדיקתך.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "אזהרת דחיית הצעה",
"carefulReview": "לפני קבלת ההחלטה הסופית, אנא קרא שוב בעיון ובמלואו את הפרופיל של האדם האחר.",
"friendlyDelay": "שים לב שדחיית הצעה זו עלולה לעכב את הצגת ההצעה הבאה, אך אין שום חובה לקבל ואתה חופשי לחלוטין.",
"noPenalty": "אישור הדחייה איno גורר קנס כלשהו; הוא פשוט מעביר את המצב לחלון החלטה של יומיים לצורך סיום התהליך.",
"swipeText": "החלק כדי לאשר דחייה"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/hi.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "अन्य"
"other": "अन्य",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "पारिवारिक पृष्ठभूमि, वैवाहिक स्थिति और बच्चे",
"familyMaritalEstimate": "20 मिनट",
"familyMaritalEstimate": "5 मिनट",
"notAPriority": "यह विषय मेरे लिए प्राथमिकता नहीं है।",
"writeOtherTraits": "Write other options...",
"fromAge": "से",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "आपकी खोज सक्रिय है",
"description": "हमara सिस्टम आपके मानदंडों के आधार पर सक्रिय रूप से संगत भागीदारों की तलाश कर रहा है। इस प्रक्रिया में समय और धैर्य की आवश्यकता होती है। जैसे ही कोई प्रोफ़ाइल आपकी समीक्षा के लिए तैयार होगी, हम आपको तुरंत सूचित करेंगे।",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "अस्वीकृति चेतावनी",
"carefulReview": "अंतिम निर्णय लेने से पहले, कृपया दूसरे व्यक्ति की प्रोफ़ाइल को एक बार फिर से पूरी तरह और ध्यान से पढ़ें।",
"friendlyDelay": "कृपया ध्यान दें कि इस प्रस्ताव को अस्वीकार करने से अगले मिलान की सिफारिश में कुछ देरी हो सकती है, लेकिन स्वीकार करने की कोई बाध्यता नहीं है और आप पूरी तरह स्वतंत्र हैं।",
"noPenalty": "इस अस्वीकृति की पुष्टि करने पर कोई जुर्माना नहीं लगेगा; यह केवल स्थिति को अंतिम रूप देने के लिए 2 दिनों के निर्णय लेने की अवधि में प्रवेश कराएगा।",
"swipeText": "अस्वीकृति की पुष्टि के लिए स्वाइप करें"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/id.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Lainnya"
"other": "Lainnya",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Latar Belakang Keluarga, Status Pernikahan, dan Anak-anak",
"familyMaritalEstimate": "20 menit",
"familyMaritalEstimate": "5 menit",
"notAPriority": "Topik ini bukan prioritas bagi saya.",
"writeOtherTraits": "Write other options...",
"fromAge": "Dari",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "YOUR SEARCH IS ACTIVE",
"description": "Our system is actively looking for compatible partners based on your criteria. This process requires time and patience. We will notify you immediately once a profile is ready for your review.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Rejection Warning",
"carefulReview": "Before making a final decision, please carefully review the other person's profile again completely to make an informed choice.",
"friendlyDelay": "Please note that rejecting this case might cause a delay in recommending the next match, but there is absolutely no obligation to accept and you are fully free to choose.",
"noPenalty": "Confirming this rejection will not result in any penalty. Instead, it simply enters your status into a 2-day decision window to finalize the case.",
"swipeText": "Swipe to confirm rejection"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/ks.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "أخرى"
"other": "أخرى",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "خاندانی پس منظر، ازدواجی حیثیت تہٰ شرے",
"familyMaritalEstimate": "20 منٹ",
"familyMaritalEstimate": "5 منٹ",
"notAPriority": "یہ موضوع چھ نہ میہ خاطرہ ترجیح۔",
"writeOtherTraits": "Write other options...",
"fromAge": "پؠٹھ",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "تہنزر تلاش چھی سرگرم",
"description": "ہمون سیستم چھو تہنزد معیارن ہندس بنیادس پیٹھ سرگرمی سان ہم آہنگ شراکت دار تلاش کران۔ یہ عمل چھو وقت تہ صبر مانگان۔ جیسے ہی کانہہ پروفائل جائزس خاطر تیار گژھی، اسہ کریو توہی فوراً باخبر۔",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "مسترد کرنک انتباہ",
"carefulReview": "آخری فیصلہ کرنہ پتہ، برائے مہربانی دوسرے شخصک پروفائل پورہ تہ دوبارہ غور سان وچھو۔",
"friendlyDelay": "برائے مہربانی یاد تھاویو کہ یہ کیس مسترد کرنہ سیت ہیکہ اگلی تجویز یوان تاخیر گژھتھ، مگر قبول کرنک کانہہ دباؤ چھنہ تہ توہی چھو پورہ آزاد۔",
"noPenalty": "یہ مسترد رجسٹر کرنہ سیت کانہہ جرمانہ گژھنہ؛ بلکہ یہ صرف صورتحال حتمی بناونہ خاطر ۲ دنک فیصلہ وندو منز داخل کر۔",
"swipeText": "مسترد کرنچ تصدیق خاطر سوائپ کریو"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/pt.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Outro"
"other": "Outro",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Histórico familiar, estado civil e filhos",
"familyMaritalEstimate": "20 minutos",
"familyMaritalEstimate": "5 minutos",
"notAPriority": "Este assunto não é uma prioridade para mim.",
"writeOtherTraits": "Write other options...",
"fromAge": "De",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "SUA BUSCA ESTÁ ATIVA",
"description": "Nosso sistema está procurando ativamente parceiros compatíveis com base em seus critérios. Esse processo requer tempo e paciência. Nós o notificaremos imediatamente assim que um perfil estiver pronto para sua revisão.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Aviso de Rejeição",
"carefulReview": "Antes de tomar a decisão final, leia atentamente e por completo o perfil da outra pessoa novamente.",
"friendlyDelay": "Observe que a rejeição deste caso pode atrasar a recomendação do próximo perfil, mas não há nenhuma obrigação de aceitar e você é totalmente livre.",
"noPenalty": "Confirmar esta rejeição não resultará em nenhuma penalidade; apenas colocará a situação em um prazo de decisão de 2 dias para finalização.",
"swipeText": "Deslize para confirmar a rejeição"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/ru.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Другое"
"other": "Другое",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Семейное положение, история брака и дети",
"familyMaritalEstimate": "20 минут",
"familyMaritalEstimate": "5 минут",
"notAPriority": "Эта тема не является приоритетом для меня.",
"writeOtherTraits": "Write other options...",
"fromAge": "От",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "ВАШ ПОИСК АКТИВЕН",
"description": "Наша система активно ищет подходящих партнеров на основе ваших критериев. Этот процесс требует времени и терпения. Мы немедленно уведомим вас, как только профиль будет готов к вашему рассмотрению.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Предупреждение об отклонении",
"carefulReview": "Перед принятием окончательного решения, пожалуйста, еще раз полностью и внимательно изучите профиль кандидата.",
"friendlyDelay": "Обратите внимание, что отклонение этого предложения может немного задержать подбор следующего кандидата, но вы абсолютно не обязаны соглашаться.",
"noPenalty": "Подтверждение этого отклонения не влечет за собой никаких штрафов; оно просто переводит статус в 2-дневное окно принятия решений для его завершения.",
"swipeText": "Проведите для подтверждения отклонения"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/sw.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Nyingine"
"other": "Nyingine",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Historia ya Familia, Hali ya Ndoa na Watoto",
"familyMaritalEstimate": "Dakika 20",
"familyMaritalEstimate": "Dakika 5",
"notAPriority": "Mada hii sio kipaumbele kwangu.",
"writeOtherTraits": "Write other options...",
"fromAge": "Kuanzia",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "UTAFUTAJI WAKO UNAENDELEA",
"description": "Mfumo wetu unatafuta kwa bidii wenzi wanaofaa kulingana na vigezo vyako. Utaratibu huu unahitaji muda na subira. Tutaarifu mara wasifu utakapokuwa tayari kwa mapitio yako.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Onyo la Kukataa",
"carefulReview": "Kabla ya kufanya uamuzi wa mwisho, tafadhali soma na uhakiki tena wasifu wa mtu mwingine kikamilifu.",
"friendlyDelay": "Tafadhali kumbuka kuwa kukataa ombi hili kunaweza kuchelewesha pendekezo la mtu mwingine, lakini hakuna lazima ya kukubali na uko huru kuchagua.",
"noPenalty": "Kuthibitisha kukataa huku hakutaleta adhabu yoyote; badala yake kunaweka hali katika muda wa siku 2 kufanya uamuzi wa kukamilisha.",
"swipeText": "Sogeza ili kuthibitisha kukataa"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/tg.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Дигар"
"other": "Дигар",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Маълумоти оилавӣ, вазъи оилавӣ ва кӯдакон",
"familyMaritalEstimate": "20 дақиқа",
"familyMaritalEstimate": "5 дақиқа",
"notAPriority": "Ин мавзӯъ барои ман афзалият надорад.",
"writeOtherTraits": "Write other options...",
"fromAge": "Аз",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "ҶУСТУҶӮИ ШУМО ФАЪОЛ АСТ",
"description": "Системаи мо дар асоси меъёрҳои шумо шарикони мувофиқро фаъолона меҷӯяд. Ин раванд вақт ва сабрро талаб мекунад. Мо ба шумо фавран хабар медиҳем, ки профил барои баррасии шумо омода аст.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Огоҳӣ аз радди пешниҳод",
"carefulReview": "Пеш аз қарори ниҳоӣ, лутфан профили шахси дигарро пурра ва бори дигар бодиққат омӯзед.",
"friendlyDelay": "Лутфан таваҷҷӯҳ намоед, ки рад кардани ин пешниҳод метавонад боиси таъхир дар муаррифии номзади навбатӣ гардад, аммо ҳеҷ гуна маҷбурият дар қабул нест ва шумо комилан озод ҳастед.",
"noPenalty": "Тасдиқи ин рад ягон ҷарима надорад; он танҳо барои муайян кардани вазъият мӯҳлати 2-рӯзаи қарорро оғоз мекунад.",
"swipeText": "Барои тасдиқи рад кардан кашед"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/tr.json

@ -22,15 +22,16 @@
"help": "Help",
"gotIt": "Got it",
"helpDescription": "Psychologically, this practice fosters a sense of empathy and contentment, which can reduce financial stress. Socially, lending strengthens neighborhood bonds and creates support networks that can lead to economic opportunities. This hadith encourages believers to lend dough, bread, and fire to increase their sustenance.",
"other": "Diğer"
"other": "Diğer",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Aile Geçmişi, Medeni Durum ve Çocuklar",
"familyMaritalEstimate": "20 dakika",
"familyMaritalEstimate": "5 dakika",
"notAPriority": "Bu konu benim için bir öncelik değil.",
"writeOtherTraits": "Write other options...",
"fromAge": "En az",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "ARAMANIZ AKTİF",
"description": "Sistemimiz, kriterlerinize göre aktif olarak uyumlu ortaklar aramaktadır. Bu süreç zaman ve sabır gerektirir. Bir profil incelemeniz için hazır olduğunda sizi hemen bilgilendireceğiz.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Reddetme Uyarısı",
"carefulReview": "Nihai kararınızı vermeden önce, lütfen diğer kişinin profilini tamamen ve tekrar dikkatlice inceleyin.",
"friendlyDelay": "Bu durumu reddetmenin bir sonraki eşleşme önerisinde gecikmeye neden olabileceğini lütfen unutmayın, ancak kabul etme zorunluluğu yoktur ve tamamen özgürsünüz.",
"noPenalty": "Bu reddin onaylanması herhangi bir cezaya yol açmaz; sadece durumu netleştirmek için 2 günlük bir karar verme penceresine girilmesini sağlar.",
"swipeText": "Reddi onaylamak için kaydırın"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/ul.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "باشقا"
"other": "باشقا",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Khandani Pas-manzar, Azdawaji Haisiyat aur Bacche",
"familyMaritalEstimate": "20 minutes",
"familyMaritalEstimate": "5 minutes",
"notAPriority": "بۇ مەسىلە مەن ئۈچۈن مۇھىم ئەمەس.",
"writeOtherTraits": "Write other options...",
"fromAge": "ياشتىن",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "YOUR SEARCH IS ACTIVE",
"description": "Our system is actively looking for compatible partners based on your criteria. This process requires time and patience. We will notify you immediately once a profile is ready for your review.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Rejection Warning",
"carefulReview": "Before making a final decision, please carefully review the other person's profile again completely to make an informed choice.",
"friendlyDelay": "Please note that rejecting this case might cause a delay in recommending the next match, but there is absolutely no obligation to accept and you are fully free to choose.",
"noPenalty": "Confirming this rejection will not result in any penalty. Instead, it simply enters your status into a 2-day decision window to finalize the case.",
"swipeText": "Swipe to confirm rejection"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/ur.json

@ -22,15 +22,16 @@
"help": "Help",
"gotIt": "Got it",
"helpDescription": "Psychologically, this practice fosters a sense of empathy and contentment, which can reduce financial stress. Socially, lending strengthens neighborhood bonds and creates support networks that can lead to economic opportunities. This hadith encourages believers to lend dough, bread, and fire to increase their sustenance.",
"other": "دیگر"
"other": "دیگر",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "خاندانی پس منظر، ازدواجی حیثیت اور بچے",
"familyMaritalEstimate": "20 منٹ",
"familyMaritalEstimate": "5 منٹ",
"notAPriority": "یہ موضوع میرے لیے ترجیح نہیں ہے۔",
"writeOtherTraits": "Write other options...",
"fromAge": "سے",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "آپ کی تلاش فعال ہے",
"description": "ہمارا سسٹم آپ کے معیار کی بنیاد پر فعال طور پر ہم آہنگ شراکت داروں کی تلاش کر رہا ہے۔ اس عمل میں وقت اور صبر کی ضرورت ہے۔ جیسے ہی کوئی پروفائل آپ کے جائزے کے لیے تیار ہوگا ہم آپ کو فوری مطلع کریں گے۔",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "پیشکش مسترد کرنے کی وارننگ",
"carefulReview": "آخری فیصلہ کرنے سے پہلے، براہ کرم دوسرے شخص کا پروفائل مکمل طور پر اور دوبارہ غور سے پڑھیں تاکہ باخبر فیصلہ کیا جا سکے۔",
"friendlyDelay": "براہ کرم نوٹ کریں کہ اس کیس کو مسترد کرنے سے اگلے میچ کی سفارش میں کچھ تاخیر ہو سکتی ہے، لیکن قبول کرنے کی کوئی مجبوری نہیں ہے اور آپ مکمل طور پر آزاد ہیں۔",
"noPenalty": "اس مسترد کو رجسٹر کرنے سے کوئی جرمانہ نہیں ہوگا؛ بلکہ یہ صرف صورتحال کو حتمی شکل دینے کے لیے 2 دن کے فیصلے کی مدت میں داخل کرے گا۔",
"swipeText": "مسترد کرنے کی تصدیق کے لیے سوائپ کریں"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/uz.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Boshqa"
"other": "Boshqa",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "Oila tarixi, oilaviy ahvol va bolalar",
"familyMaritalEstimate": "20 daqiqa",
"familyMaritalEstimate": "5 daqiqa",
"notAPriority": "Bu mavzu men uchun ustuvor emas.",
"writeOtherTraits": "Write other options...",
"fromAge": "Yoshdan",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "QIDIRUVINGIZ FAOLLASHTIRILDI",
"description": "Tizimimiz sizning mezonlaringiz asosida mos sheriklarni faol ravishda qidirmoqda. Ushbu jarayon vaqt va sabr-toqat talab qiladi. Profil ko'rib chiqishga tayyor bo'lishi bilan sizga darhol xabar beramiz.",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "Rad etish ogohlantirishi",
"carefulReview": "Yakuniy qarorni qabul qilishdan oldin, iltimos, boshqa odamning profilini to'liq va qaytadan diqqat bilan o'rganib chiqing.",
"friendlyDelay": "Iltimos, ushbu holatni rad etish keyingi nomzodni tavsiya qilishni biroz kechiktirishi mumkinligini hisobga oling, ammo qabul qilish majburiy emas va siz butunlay erkinsiz.",
"noPenalty": "Ushbu rad etishni tasdiqlash hech qanday jazoga olib kelmaydi; faqat holatni yakunlash uchun 2 kunlik qaror qabul qilish muddatini boshlaydi.",
"swipeText": "Rad etishni tasdiqlash uchun suring"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}

78
src/translations/locales/zh.json

@ -22,15 +22,16 @@
"nextPage": "Next Page",
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "其他"
"other": "其他",
"consultation": "Consultation"
},
"intro": {
"imageAlt": "heavenly marriage",
"title": "A Path to Heavenly Marriage",
"description": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"userProfile": "user profile",
"userProfile": "user profiles",
"matches": "matches",
"marriage": "marriage",
"marriage": "marriages",
"videoAlt": "video",
"playAlt": "play"
},
@ -70,7 +71,7 @@
"guardianNoticeUnder27": "To preserve your peace of mind, security, and dignity, the acquaintance process on our platform follows authentic and respectful family traditions. Having a trusted person (preferably a father or mother) as a representative, in addition to reflecting your noble family background, encourages the other party to step forward with full seriousness, respect, and confidence.",
"guardianNoticeOver27": "Our goal is to establish lasting bonds based on mutual trust. Although registering a representative is not mandatory for you, introducing a trusted person (such as a father, mother, or family elder) demonstrates your transparency and serious intent for marriage. Profiles that feature a trusted representative command significantly higher credibility and provide greater peace of mind to the other party's family.",
"familyMaritalTitle": "家庭背景、婚姻状况和子女",
"familyMaritalEstimate": "20 分钟",
"familyMaritalEstimate": "5 分钟",
"notAPriority": "这个话题对我不重要。",
"writeOtherTraits": "Write other options...",
"fromAge": "从",
@ -127,8 +128,8 @@
"lockedDescription": "You can't edit your profile while we're searching for matches"
},
"findingMatch": {
"title": "Finding Match ...",
"description": "We will search for suitable matches based on your preferences. Once we find one, we'll show you their profile. If you approve, we will proceed on your behalf",
"title": "您的搜寻正在进行中",
"description": "我们的系统正在根据您的标准积极寻找合适的伴侣。这个过程需要时间和耐心。一旦有个人资料可供您查看,我们将立即通知您。",
"advisorTitle": "Get an advisor",
"advisorDescription": "Not sure what to do next? Our psychology section is here to guide you at every step.",
"getAdvisor": "Get Advisor",
@ -163,5 +164,66 @@
"matchProfile": "Match Profile",
"profileLocked": "Profile is locked"
},
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors."
}
"spouseCriteriaConfidentialNotice": "⚠️ This section is completely confidential and is only used for matching and review by advisors.",
"paymentModal": {
"title": "Verification & Subscription Activation",
"verificationText": "This payment acts as a verification process for your account and activates a 3-month subscription to receive new case introductions. The cost of this subscription is 50 Habib Coins.",
"disclaimerText": "Please note that there is no guarantee for a specific number of cases, and the volume of incoming cases is solely subject to profile compatibility with other users.",
"swipeToPay": "Swipe to pay 50 Habib Coins",
"insufficientCoins": "Insufficient coin balance. Please recharge your account.",
"activeFor3Months": "Valid for 3 months",
"cost": "50 Habib Coins",
"close": "Exit"
},
"maleRejectionWarning": {
"title": "拒绝警告",
"carefulReview": "在做出最终决定之前,请再次完整且仔细地阅读对方的个人资料。",
"friendlyDelay": "请注意,拒绝此推荐可能会导致推荐下一个对象的时间有所延迟,但您完全没有接受的义务,可以自由选择。",
"noPenalty": "正式登记此拒绝不会受到任何处罚;它只是将状态放入为期2天的决策窗口内,以等待最终确认。",
"swipeText": "滑动以确认拒绝"
},
"onboarding": {
"submitProcess": "Submit Process",
"termsAndConditions": "terms & conditions",
"welcomeWarning": "Dear user, while welcoming you to the Habib Marij application, please read the following rules and regulations carefully before using the services of this platform. Your registration and use of this application constitutes full acceptance of these rules.",
"eligibilityTitle": "1. Eligibility and Membership Requirements",
"legalAgeLabel": "Legal Age:",
"legalAgeValue": "Users must meet the minimum legal age for independent registration.",
"identityVerificationLabel": "Identity Verification:",
"identityVerificationValue": "Mandatory submission of valid government-issued ID upon registration.",
"singleStatusLabel": "Single Status Commitment:",
"singleStatusValue": "Users must provide proof of being single, or documents confirming divorce or spouse's death upon request.",
"intentLabel": "Intent:",
"intentValue": "Commitment to monogamy and intention for permanent marriage only (no simultaneous or temporary relationships).",
"healthLabel": "General Health:",
"healthValue": "Self-declaration regarding mental health, absence of addiction, and no criminal record.",
"privacyTitle": "2. Privacy and Data Management",
"contentSecurityLabel": "Content Security:",
"contentSecurityValue": "Technical prevention of screenshots from profiles and chat environments.",
"progressiveDisclosureLabel": "Progressive Disclosure:",
"progressiveDisclosureValue": "Sensitive information (face, contact details) revealed step-by-step only with mutual consent.",
"watchVideo": "Watch Video",
"videoSpeaker": "Dr. Hasti Masoudi",
"videoDescription": "We have come together with the goal of creating a secure and confidential path for \"permanent marriage\" among Muslims",
"selectGender": "Select Gender",
"submitMan": "Submit Man",
"submitWoman": "Submit Woman",
"registrationType": "Registration Type",
"readTermsNotice": "Read the terms and conditions carefully so that you don't run into any problems in the next process - reading this section is mandatory.",
"registerForSelf": "Registering for myself",
"registerForOther": "Registering for someone else",
"finalNotice": "Final Notice",
"finalNoticeDesc": "Your privacy and safety are our top priorities. We are committed to keeping your information secure and giving you full control throughout the process.",
"noticeItem1": "Your information is kept strictly confidential.",
"noticeItem2": "Your details are only used for the matching process.",
"noticeItem3": "Nothing is shared without your consent.",
"noticeItem4": "You are always in control of what happens next.",
"noticeItem5": "Contact details are shared only after your approval.",
"noticeItem6": "We provide a safe and respectful environment at every step.",
"closeSlider": "Close slider",
"finish": "Finish",
"next": "Next",
"back": "Back",
"accept": "Accept"
}
}
Loading…
Cancel
Save