Browse Source

feat: add multilingual support and new navigation components for candidate interaction

front-test-2
ghorbani 3 weeks ago
parent
commit
3c41f10913
  1. 1
      public/assets/images/whatsapp-icon.svg
  2. 69
      src/app/candidate-contact/page.tsx
  3. 66
      src/app/new-match/profile/page.tsx
  4. 177
      src/app/request-accepted/page.tsx
  5. 29
      src/components/Componentes/navigation-button.tsx
  6. 175
      src/components/Componentes/support-sheet.tsx
  7. 18
      src/components/Componentes/swipe-button.tsx
  8. 2
      src/data/questions/en.json
  9. 4
      src/data/questions/fa.json
  10. 7
      src/lib/get-submit-path.ts
  11. 18
      src/translations/locales/ar.json
  12. 18
      src/translations/locales/az.json
  13. 18
      src/translations/locales/bn.json
  14. 18
      src/translations/locales/da.json
  15. 18
      src/translations/locales/de.json
  16. 23
      src/translations/locales/en.json
  17. 18
      src/translations/locales/es.json
  18. 23
      src/translations/locales/fa.json
  19. 18
      src/translations/locales/fr.json
  20. 18
      src/translations/locales/gu.json
  21. 18
      src/translations/locales/ha.json
  22. 18
      src/translations/locales/he.json
  23. 18
      src/translations/locales/hi.json
  24. 18
      src/translations/locales/id.json
  25. 18
      src/translations/locales/ks.json
  26. 18
      src/translations/locales/pt.json
  27. 18
      src/translations/locales/ru.json
  28. 18
      src/translations/locales/sw.json
  29. 18
      src/translations/locales/tg.json
  30. 18
      src/translations/locales/tr.json
  31. 18
      src/translations/locales/ul.json
  32. 18
      src/translations/locales/ur.json
  33. 18
      src/translations/locales/uz.json
  34. 18
      src/translations/locales/zh.json

1
public/assets/images/whatsapp-icon.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>

69
src/app/candidate-contact/page.tsx

@ -33,7 +33,8 @@ export default function CandidateContactPage() {
const [isDismissReasonSheetOpen, setIsDismissReasonSheetOpen] =
useState(false);
const { data: profile, isLoading: isProfileLoading } = useMarriageProfileQuery({
const { data: profile, isLoading: isProfileLoading } =
useMarriageProfileQuery({
refetchInterval: 3000,
});
@ -50,21 +51,21 @@ export default function CandidateContactPage() {
const caseId = profile?.active_case?.case_id;
const caseStatus = profile?.active_case?.status;
const isFemale = profile?.gender === "female";
const isFinalized = caseStatus === "finalized" || profile?.status === "matched";
const isFinalized =
caseStatus === "finalized" || profile?.status === "matched";
const contactStatusMutation = useSubmitMarriageContactStatusMutation(
caseId ?? "",
);
const outcomeMutation = useSubmitMarriageOutcomeMutation(
caseId ?? "",
);
const outcomeMutation = useSubmitMarriageOutcomeMutation(caseId ?? "");
const handleNoContactReport = async () => {
if (!caseId || contactStatusMutation.isPending) return;
await contactStatusMutation.mutateAsync({
action: "no_contact",
custom_note: "No contact reported by female candidate after decision window",
custom_note:
"No contact reported by female candidate after decision window",
});
};
@ -81,27 +82,6 @@ export default function CandidateContactPage() {
// If female, render the beautiful, customized layout matching the design
if (isFemale) {
if (isFinalized) {
return (
<>
<PageBackground />
<main className="-mx-[17px] flex min-h-screen flex-col px-[23px] pt-[max(16px,calc(var(--safe-top)+8px))] pb-[calc(20px+var(--safe-bottom))] justify-center items-center">
<section className="flex flex-col items-center max-w-[320px] text-center">
<div className="relative flex items-center justify-center text-[70px] animate-bounce">
🎉
</div>
<h1 className="mt-8 text-center text-[24px] leading-[1.25] font-bold text-[#E03950]">
{t.candidateContact.congratsTitle}
</h1>
<p className="mt-6 text-[#4A4A4A] group-14 font-medium leading-relaxed">
{t.candidateContact.congratsMessage}
</p>
</section>
</main>
</>
);
}
return (
<>
<PageBackground />
@ -142,6 +122,20 @@ export default function CandidateContactPage() {
<div className="flex flex-1 flex-col justify-between gap-6 pt-4">
<section className="flex flex-col items-center">
{isFinalized ? (
<div className="flex flex-col items-center max-w-[320px] text-center my-auto py-12">
<div className="relative flex items-center justify-center text-[70px] animate-bounce">
🎉
</div>
<h1 className="mt-8 text-center text-[24px] leading-[1.25] font-bold text-[#E03950]">
{t.candidateContact.congratsTitle}
</h1>
<p className="mt-6 text-[#4A4A4A] group-14 font-medium leading-relaxed">
{t.candidateContact.congratsMessage}
</p>
</div>
) : (
<>
{/* Illustration section */}
<div className="relative mt-4 flex items-center justify-center">
<Image
@ -163,15 +157,28 @@ export default function CandidateContactPage() {
{/* Outcome instructions and button */}
<div className="w-full border border-[#ECECEC] bg-white rounded-[15px] mt-8 px-4 py-4 text-center shadow-sm">
<p className="text-[#555555] group-14 font-medium leading-relaxed">
{t.candidateContact.outcomeGuide}
{t.candidateContact.thankYouFeedback}
</p>
</div>
<div className="flex mt-6 w-full gap-3">
<button
type="button"
onClick={() =>
router.push(
localizePath("/new-match/profile", locale),
)
}
className="flex-1 h-[52px] rounded-[15px] border border-[#BFBFBF] bg-white text-[#36363C] font-semibold group-14 flex items-center justify-center transition-transform active:scale-[0.98] cursor-pointer hover:bg-[#F5F5F5]"
>
{t.requestAccepted.actionViewProfile}
</button>
<button
type="button"
onClick={() => setIsOutcomeSheetOpen(true)}
disabled={outcomeMutation.isPending}
className="mt-6 w-full h-[52px] rounded-[15px] bg-gradient-to-r from-[#FE6F82] to-[#E03950] text-white font-semibold group-14 flex items-center justify-center shadow-lg shadow-[#FE6F82]/30 transition-transform active:scale-[0.98] cursor-pointer hover:opacity-95 disabled:opacity-50"
className="flex-1 h-[52px] rounded-[15px] bg-gradient-to-r from-[#FE6F82] to-[#E03950] text-white font-semibold group-14 flex items-center justify-center shadow-lg shadow-[#FE6F82]/30 transition-transform active:scale-[0.98] cursor-pointer hover:opacity-95 disabled:opacity-50"
>
{outcomeMutation.isPending ? (
<DotsLoader className="text-white" />
@ -179,6 +186,7 @@ export default function CandidateContactPage() {
t.candidateContact.submitOutcome
)}
</button>
</div>
</>
) : (
<>
@ -225,6 +233,8 @@ export default function CandidateContactPage() {
</div>
</>
)}
</>
)}
</section>
<div className="space-y-4">
@ -339,4 +349,3 @@ export default function CandidateContactPage() {
</>
);
}

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

@ -85,7 +85,13 @@ function canAcceptProfile(
return status === "introduced";
}
function MatchField({ field, isCandidateFemale }: { field: MarriageField; isCandidateFemale: boolean }) {
function MatchField({
field,
isCandidateFemale,
}: {
field: MarriageField;
isCandidateFemale: boolean;
}) {
const value = formatFieldValue(field.value);
if (!value || isImageField(field)) {
@ -153,7 +159,7 @@ function MatchPublicProfileFields({
if (isCandidateFemale) {
return (
<div className="flex flex-col w-full mt-6" style={{ gap: '14px' }}>
<div className="flex flex-col w-full mt-6" style={{ gap: "14px" }}>
{visibleFields.map((field) => (
<MatchField key={field.key} field={field} isCandidateFemale={true} />
))}
@ -250,7 +256,11 @@ function formatBoldText(text: string) {
const parts = text.split(/\*\*([^*]+)\*\*/g);
return parts.map((part, index) => {
if (index % 2 === 1) {
return <strong key={index} className="font-bold text-[#111111]">{part}</strong>;
return (
<strong key={index} className="font-bold text-[#111111]">
{part}
</strong>
);
}
return part;
});
@ -276,7 +286,19 @@ export default function NewMatchProfilePage() {
return;
}
const targetPath = getSubmitPath(profile);
if (targetPath !== "/new-match" && targetPath !== "/request-sent") {
const caseStatus = profile?.active_case?.status;
const isProfileMatched = profile?.status === "matched";
const isViewingAllowed =
caseStatus === "payment_done" ||
caseStatus === "contacted" ||
caseStatus === "finalized" ||
isProfileMatched;
if (
targetPath !== "/new-match" &&
targetPath !== "/request-sent" &&
!isViewingAllowed
) {
router.replace(localizePath(targetPath, locale));
}
}, [profile, locale, router]);
@ -314,8 +336,7 @@ export default function NewMatchProfilePage() {
}, [profile?.match_summary?.public_info]);
const isCandidateFemale =
profile?.match_summary?.gender === "female" ||
profile?.gender === "male";
profile?.match_summary?.gender === "female" || profile?.gender === "male";
const avatarSrc = isCandidateFemale
? "/assets/images/female_avatar.svg"
: "/assets/images/Group 1597880481.png";
@ -327,11 +348,9 @@ export default function NewMatchProfilePage() {
const isSubmitting = respondMutation.isPending;
const isAcceptProfileEnabled = isFemaleProfile
? !isSubmitting
: (
Boolean(caseId) &&
: Boolean(caseId) &&
!isSubmitting &&
canAcceptProfile(profile?.gender, caseStatus)
);
canAcceptProfile(profile?.gender, caseStatus);
const nameParts = candidateName.trim().split(/\s+/);
const firstName = nameParts[0] || "";
@ -341,9 +360,9 @@ export default function NewMatchProfilePage() {
const mainStyle = {
backgroundImage: `url("/assets/images/islamic_pattern_2_2892_3864.svg"), linear-gradient(178.25deg, rgba(255, 197, 196, 0.2) 1.48%, rgba(251, 237, 237, 0.2) 20.64%)`,
backgroundColor: '#F5F5F5',
backgroundRepeat: 'repeat-y',
backgroundSize: '100% auto, 100% 100%'
backgroundColor: "#F5F5F5",
backgroundRepeat: "repeat-y",
backgroundSize: "100% auto, 100% 100%",
};
return (
@ -582,9 +601,7 @@ export default function NewMatchProfilePage() {
}}
>
{/* Avatar Group */}
<div
className="relative overflow-hidden rounded-full w-[90px] h-[90px]"
>
<div className="relative overflow-hidden rounded-full w-[90px] h-[90px]">
<Image
src={avatarSrc}
alt=""
@ -605,8 +622,8 @@ export default function NewMatchProfilePage() {
className="font-bold text-[22px] leading-[26px] text-[#F0445B] text-center"
style={{
fontFamily: "'Segoe UI', sans-serif",
WebkitTextStroke: '2px rgba(255, 255, 255, 0.5)',
paintOrder: 'stroke fill'
WebkitTextStroke: "2px rgba(255, 255, 255, 0.5)",
paintOrder: "stroke fill",
}}
>
{candidateName}
@ -626,6 +643,18 @@ export default function NewMatchProfilePage() {
className="fixed inset-x-0 bottom-0 z-30 px-[17px]"
>
<div className="mx-auto w-full sm:max-w-[375px] rounded-t-[24px] bg-white px-4 py-4 shadow-[0_12px_30px_rgba(0,0,0,0.14)]">
{caseStatus === "payment_done" ||
caseStatus === "contacted" ||
caseStatus === "finalized" ||
profile?.status === "matched" ? (
<button
type="button"
onClick={() => router.back()}
className="w-full h-[52px] flex items-center justify-center rounded-[12px] bg-[#F5F5F5] text-[#36363C] font-semibold text-[16px] transition-transform active:scale-[0.98] cursor-pointer hover:bg-[#EBEBEB]"
>
{t.common.back}
</button>
) : (
<div className="flex gap-3">
<button
type="button"
@ -666,6 +695,7 @@ export default function NewMatchProfilePage() {
<span>{t.match.acceptProfile}</span>
</button>
</div>
)}
</div>
</div>
</main>

177
src/app/request-accepted/page.tsx

@ -4,19 +4,24 @@ import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useEffect, useState } from "react";
import AdvisorActionsCard from "@/components/Componentes/advisor-actions-card";
import { DotsLoader } from "@/components/Componentes/button";
import CallResultSheet from "@/components/Componentes/call-result-sheet";
import DismissReasonSheet from "@/components/Componentes/dismiss-reason-sheet";
import FemaleConsentSheet from "@/components/Componentes/female-consent-sheet";
import PageHeader from "@/components/Componentes/page-header";
import OutcomeSelectionSheet from "@/components/Componentes/outcome-selection-sheet";
import { PageBackground } from "@/components/Componentes/page-background";
import PageHeader from "@/components/Componentes/page-header";
import SubscriptionRequiredSheet from "@/components/Componentes/subscription-required-sheet";
import type {
MarriageField,
MarriagePhoneFieldValue,
} from "@/hooks/marriage/types";
import { useMarriageContactInfoQuery } from "@/hooks/marriage/use-contact-info";
import { useSubmitMarriageContactStatusMutation } from "@/hooks/marriage/use-contact-status";
import {
useSubmitMarriageContactStatusMutation,
useSubmitMarriageOutcomeMutation,
} from "@/hooks/marriage/use-contact-status";
import {
extractHabcoinPaymentUrl,
useHabcoinPaymentMutation,
@ -26,6 +31,12 @@ import { getSubmitPath } from "@/lib/get-submit-path";
import { localizePath } from "@/translations/config";
import { useI18n } from "@/translations/provider";
const advisorAvatars = [
{ id: "advisor-primary", src: "/assets/images/Avatar Image.png" },
{ id: "advisor-secondary", src: "/assets/images/Ellipse 370.png" },
{ id: "advisor-tertiary", src: "/assets/images/Avatar Image.png" },
];
type ContactInfoPhoneItem = {
key: string;
label: string;
@ -88,9 +99,15 @@ function getContactInfoPhoneItems(
return null;
}
const rawLabel = field.label || field.key;
const label = rawLabel
.replace(/\s+with\s+Country\s+Code/gi, "")
.replace(/\s+با\s+کد\s+کشور/g, "")
.trim();
return {
key: field.key,
label: field.label || field.key,
label,
phoneNumber,
};
})
@ -99,39 +116,50 @@ function getContactInfoPhoneItems(
function ContactInfoPhoneCard({ item }: { item: ContactInfoPhoneItem }) {
return (
<div className="flex items-center justify-between rounded-[15px] border border-[#E4E4E4] bg-[#FBFBFB] px-4 py-3.5 shadow-[0_4px_12px_rgba(0,0,0,0.03)]">
<div className="text-left">
<p className="text-xs font-semibold text-[#8F8F8F]">{item.label}</p>
<div className="flex items-center justify-between rounded-[15px] border border-[#E4E4E4] bg-[#FBFBFB] px-4 py-3.5 shadow-[0_4px_12px_rgba(0,0,0,0.03)] gap-4">
<div className="text-left min-w-0">
<p className="text-xs font-semibold text-[#8F8F8F] break-words">
{item.label}
</p>
<p className="text-base font-bold text-[#1F1F1F] dir-ltr">
{item.phoneNumber}
</p>
</div>
<div className="flex items-center gap-2">
<button
type="button"
onClick={() => {
navigator.clipboard.writeText(item.phoneNumber).catch(() => {});
}}
className="inline-flex p-3 items-center justify-center rounded-[10px] bg-[#F0445B] text-white"
>
<Image
src={"/assets/images/Frame 2095586fdas679.svg"}
width={16}
height={16}
alt="copy"
/>
</button>
<div className="flex items-center gap-2 shrink-0">
<a
href={`tel:${item.phoneNumber}`}
className="inline-flex p-3 items-center justify-center rounded-[10px] bg-[#F0445B] text-white"
onClick={(e) => {
if (typeof window !== "undefined" && "HabibApp" in window) {
e.preventDefault();
try {
const app = (
window as Window & {
HabibApp?: { postMessage: (msg: string) => void };
}
).HabibApp;
app?.postMessage(
JSON.stringify({
action: "open_external_url",
data: {
url: `tel:${item.phoneNumber}`,
mode: "externalApplication",
title: "phone_call",
},
}),
);
} catch (err) {
console.error("Error calling HabibApp bridge", err);
}
}
}}
className="inline-flex p-3 items-center justify-center rounded-[10px] bg-[#F0445B] text-white shrink-0"
>
<Image
src={"/assets/images/Vecfdastor.svg"}
width={16}
height={16}
alt="copy"
alt="call"
/>
</a>
</div>
@ -147,6 +175,7 @@ export default function RequestAcceptedPage() {
useState(false);
const [isContactInfoSheetOpen, setIsContactInfoSheetOpen] = useState(false);
const [isSubscriptionSheetOpen, setIsSubscriptionSheetOpen] = useState(false);
const [isOutcomeSheetOpen, setIsOutcomeSheetOpen] = useState(false);
const profileHref = localizePath("/new-match/profile", locale);
const { data: profile } = useMarriageProfileQuery({
refetchInterval: 3000,
@ -167,6 +196,7 @@ export default function RequestAcceptedPage() {
const caseStatus = profile?.active_case?.status;
const recommendedPlanId = profile?.recommended_plan?.id;
const paymentMutation = useHabcoinPaymentMutation();
const outcomeMutation = useSubmitMarriageOutcomeMutation(caseId ?? "");
const contactStatusMutation = useSubmitMarriageContactStatusMutation(
caseId ?? "",
{
@ -180,7 +210,7 @@ export default function RequestAcceptedPage() {
});
const titleText = isFemaleProfile
? t.requestAccepted.titleFemale
: (caseStatus === "payment_done" || caseStatus === "contacted")
: caseStatus === "payment_done" || caseStatus === "contacted"
? t.requestAccepted.titleMalePaymentDone
: t.requestAccepted.titleMalePaymentPending;
const primaryActionText = isFemaleProfile
@ -188,7 +218,7 @@ export default function RequestAcceptedPage() {
: t.requestAccepted.primaryMale;
const secondaryActionText = isFemaleProfile
? t.requestAccepted.secondaryFemale
: (caseStatus === "payment_done" || caseStatus === "contacted")
: caseStatus === "payment_done" || caseStatus === "contacted"
? t.requestAccepted.secondaryMalePaymentDone
: t.requestAccepted.secondaryMalePaymentPending;
const contactInfoPhoneItems = getContactInfoPhoneItems(
@ -254,6 +284,9 @@ export default function RequestAcceptedPage() {
});
};
const isFinalized =
caseStatus === "finalized" || profile?.status === "matched";
return (
<>
<PageBackground />
@ -278,8 +311,8 @@ export default function RequestAcceptedPage() {
onClose={() => setIsDismissReasonSheetOpen(false)}
onSubmit={async (value) => {
if (caseId) {
await contactStatusMutation.mutateAsync({
action: "contacted",
await outcomeMutation.mutateAsync({
status: "failure",
custom_note: value,
});
}
@ -287,6 +320,23 @@ export default function RequestAcceptedPage() {
/>
) : null}
{isOutcomeSheetOpen ? (
<OutcomeSelectionSheet
onClose={() => setIsOutcomeSheetOpen(false)}
onSubmit={async (status) => {
if (status === "success") {
if (caseId) {
await outcomeMutation.mutateAsync({
status: "success",
});
}
} else {
setIsDismissReasonSheetOpen(true);
}
}}
/>
) : null}
{isContactInfoSheetOpen ? (
<FemaleConsentSheet
title={t.requestAccepted.contactDetailTitle}
@ -321,6 +371,20 @@ export default function RequestAcceptedPage() {
<div className="flex flex-1 flex-col justify-between gap-6 pt-4">
<section className="flex flex-col items-center">
{isFinalized ? (
<div className="flex flex-col items-center max-w-[320px] text-center my-auto py-12">
<div className="relative flex items-center justify-center text-[70px] animate-bounce">
🎉
</div>
<h1 className="mt-8 text-center text-[24px] leading-[1.25] font-bold text-[#E03950]">
{t.candidateContact.congratsTitle}
</h1>
<p className="mt-6 text-[#4A4A4A] group-14 font-medium leading-relaxed">
{t.candidateContact.congratsMessage}
</p>
</div>
) : (
<>
<div className="relative isolate flex items-center justify-center">
<Image
src="/assets/images/Group 15978804fdasf68.svg"
@ -336,10 +400,46 @@ export default function RequestAcceptedPage() {
{titleText}
</h1>
{caseStatus === "contacted" ? (
<div className="w-full border border-[#ECECEC] bg-white rounded-[15px] mt-6 px-4 py-4 text-center shadow-sm max-w-[315px]">
<p className="text-[#555555] group-14 font-medium leading-relaxed">
{t.candidateContact.thankYouFeedback}
</p>
</div>
) : (
<p className="mt-4 max-w-[315px] group-12 leading-[1.45] font-semibold text-[#777777]">
{isFemaleProfile ? t.candidateContact.title : t.requestAccepted.description}
{isFemaleProfile
? t.candidateContact.title
: t.requestAccepted.description}
</p>
)}
{caseStatus === "contacted" ? (
<div className="flex mt-8 w-full gap-3">
<button
type="button"
onClick={() =>
router.push(localizePath("/new-match/profile", locale))
}
className="flex-1 h-[52px] rounded-[15px] border border-[#BFBFBF] bg-white text-[#36363C] font-semibold group-14 flex items-center justify-center transition-transform active:scale-[0.98] cursor-pointer hover:bg-[#F5F5F5]"
>
{t.requestAccepted.actionViewProfile}
</button>
<button
type="button"
onClick={() => setIsOutcomeSheetOpen(true)}
disabled={outcomeMutation.isPending}
className="flex-1 h-[52px] rounded-[15px] bg-gradient-to-r from-[#FE6F82] to-[#E03950] text-white font-semibold group-14 flex items-center justify-center shadow-lg shadow-[#FE6F82]/30 transition-transform active:scale-[0.98] cursor-pointer hover:opacity-95 disabled:opacity-50"
>
{outcomeMutation.isPending ? (
<DotsLoader className="text-white" />
) : (
t.candidateContact.submitOutcome
)}
</button>
</div>
) : (
<div className="flex mt-9 w-full justify-center gap-4">
{isFemaleProfile ? (
<button
@ -381,15 +481,30 @@ export default function RequestAcceptedPage() {
</div>
</button>
</div>
)}
{caseStatus !== "contacted" ? (
<div className="border border-[#F0445B] bg-[#F0445B]/10 rounded-xl mt-4">
<p className="text-[#F0445B] group-12 font-semibold py-2.5 px-3.5">
{t.candidateContact.contactWarning}
<p className="text-[#F0445B] group-12 font-semibold py-2.5 px-3.5 whitespace-pre-line">
{t.requestAccepted.contactWarning}
</p>
</div>
) : null}
</>
)}
</section>
<div className="space-y-8">
{/* Advisor section */}
<AdvisorActionsCard
title={t.findingMatch.advisorTitle}
description={t.findingMatch.advisorDescription}
avatars={advisorAvatars}
extraCount={7}
getAdvisorLabel={t.findingMatch.getAdvisor}
getAdvisorHref="/questions-list"
/>
<section className="flex flex-col items-center text-center">
<div className="flex items-center justify-center w-full gap-1 rounded-[11px] bg-[#DBDBDB] py-3.5">
<Image

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

@ -8,6 +8,7 @@ import { GoArrowLeft } from "react-icons/go";
import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import { useI18n } from "@/translations/provider";
import HelpModal from "./help-modal";
import SupportSheet from "./support-sheet";
type NavigationButtonIcon =
| "back"
@ -47,22 +48,14 @@ export function NavigationButton({
const router = useRouter();
const { dictionary: t } = useI18n();
const [isHelpOpen, setIsHelpOpen] = useState(false);
const [isSupportOpen, setIsSupportOpen] = useState(false);
const { data: profile } = useMarriageProfileQuery();
const isFemale = profile?.gender === "female";
const isMale = profile?.gender === "male";
const hasActiveSubscription = !!profile?.active_subscription;
// خانم‌ها: باید وضعیت پرونده Waiting یا بعد از آن باشد (کامل کردن مشخصات اولیه)
const hasFemaleSupportAccess =
isFemale &&
profile?.status !== "pending_onboarding" &&
profile?.status !== "pending_info";
// آقایان: باید حسابشان Pro باشد (دارای اشتراک فعال)
const hasMaleSupportAccess = isMale && hasActiveSubscription;
const hasSupportAccess = hasFemaleSupportAccess || hasMaleSupportAccess;
// پشتیبانی برای هم خانم‌ها و هم آقایان در هر وضعیتی فعال و در دسترس است
const hasSupportAccess = true;
if (icon === "subscription" && isFemale) {
return <div className="size-10" />;
@ -179,14 +172,7 @@ export function NavigationButton({
} else if (icon === "close") {
router.back();
} else if (icon === "support") {
if (typeof window !== "undefined" && (window as any).HabibApp) {
(window as any).HabibApp.postMessage(
JSON.stringify({
action: "open_consultant_page",
data: { consultant: "habib@gmail.com" },
}),
);
}
setIsSupportOpen(true);
}
}
}
@ -211,6 +197,11 @@ export function NavigationButton({
buttonText={helpButtonText}
/>
) : null}
<SupportSheet
isOpen={isSupportOpen}
onClose={() => setIsSupportOpen(false)}
/>
</>
);
}

175
src/components/Componentes/support-sheet.tsx

@ -0,0 +1,175 @@
"use client";
import Image from "next/image";
import { useEffect, useState } from "react";
import { createPortal } from "react-dom";
import { FiHeadphones } from "react-icons/fi";
import { useI18n } from "@/translations/provider";
const EXIT_ANIMATION_MS = 220;
export type SupportSheetProps = {
isOpen: boolean;
onClose: () => void;
};
export function SupportSheet({ isOpen, onClose }: SupportSheetProps) {
const { dictionary: t } = useI18n();
const [isVisible, setIsVisible] = useState(isOpen);
const [isEntering, setIsEntering] = useState(true);
const [isClosing, setIsClosing] = useState(false);
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
const closeSheet = () => {
if (isClosing) return;
setIsClosing(true);
};
// Sync with isOpen prop
useEffect(() => {
if (isOpen) {
setIsVisible(true);
setIsClosing(false);
setIsEntering(true);
}
}, [isOpen]);
// Entry animation
useEffect(() => {
if (!isVisible) return;
const frameId = window.requestAnimationFrame(() => {
setIsEntering(false);
});
return () => window.cancelAnimationFrame(frameId);
}, [isVisible]);
// Lock body scroll
useEffect(() => {
if (!isVisible) return;
const previousBodyOverflow = document.body.style.overflow;
const previousHtmlOverflow = document.documentElement.style.overflow;
document.body.style.overflow = "hidden";
document.documentElement.style.overflow = "hidden";
return () => {
document.body.style.overflow = previousBodyOverflow;
document.documentElement.style.overflow = previousHtmlOverflow;
};
}, [isVisible]);
// Exit animation
useEffect(() => {
if (!isClosing) return;
const timeoutId = window.setTimeout(() => {
setIsVisible(false);
onClose();
}, EXIT_ANIMATION_MS);
return () => window.clearTimeout(timeoutId);
}, [isClosing, onClose]);
const handleSupportContact = () => {
if (typeof window !== "undefined" && "HabibApp" in window) {
try {
const app = (
window as Window & {
HabibApp?: { postMessage: (msg: string) => void };
}
).HabibApp;
app?.postMessage(
JSON.stringify({
action: "open_consultant_page",
data: { consultant: "habib@gmail.com" },
}),
);
} catch (err) {
console.error("Error calling HabibApp bridge", err);
}
} else {
window.open("mailto:habib@gmail.com", "_blank");
}
closeSheet();
};
if (!isVisible || !mounted) return null;
return createPortal(
<div
className={[
"fixed inset-0 z-[100] flex items-end justify-center transition-all duration-[220ms] select-none",
isClosing || isEntering
? "bg-[#171717]/0 opacity-0"
: "bg-[#171717]/55 opacity-100",
]
.filter(Boolean)
.join(" ")}
role="dialog"
aria-modal="true"
onClick={(event) => {
if (event.target === event.currentTarget) {
closeSheet();
}
}}
>
<section
className={[
"w-full sm:max-w-[375px] rounded-t-[15px] bg-[#EBEBEB] px-[14px] py-[14px] text-center shadow-[0_20px_60px_rgba(15,23,42,0.08)] transition-transform duration-[220ms] ease-out will-change-transform flex flex-col items-center",
isClosing || isEntering ? "translate-y-full" : "translate-y-0",
]
.filter(Boolean)
.join(" ")}
>
<div className="flex flex-col items-center w-full gap-[11px]">
{/* Support Icon */}
<div className="flex h-[38px] w-[38px] items-center justify-center">
<FiHeadphones className="size-[27px] shrink-0 text-[#21C17D]" strokeWidth={2} />
</div>
{/* Text Content */}
<div className="flex flex-col items-start gap-[14px] w-full">
<h3 className="w-full font-bold text-[16px] leading-[20px] text-[#111111] text-center">
{t.common.supportTitle}
</h3>
<p className="w-full font-normal text-[14px] leading-[20px] text-[#747474] text-center">
{t.common.supportDescription}
</p>
</div>
</div>
{/* Buttons Row */}
<div className="flex w-full items-center gap-3 mt-[14px]">
{/* Cancel Button */}
<button
type="button"
onClick={closeSheet}
className="flex-1 h-[52px] rounded-[11px] border border-[#747474] bg-transparent text-[#747474] font-semibold text-[16px] flex items-center justify-center cursor-pointer transition-transform active:scale-[0.98]"
>
{t.common.cancel}
</button>
{/* Contact WhatsApp Button */}
<button
type="button"
onClick={handleSupportContact}
className="flex-1 h-[52px] rounded-[11px] bg-[#00AC78] text-white font-bold text-[16px] flex items-center justify-center gap-1 cursor-pointer transition-transform active:scale-[0.98]"
>
<Image
src="/assets/images/whatsapp-icon.svg"
alt=""
width={21}
height={21}
className="shrink-0 brightness-0 invert"
/>
{t.common.supportSwipeText}
</button>
</div>
</section>
</div>,
document.body,
);
}
export default SupportSheet;

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

@ -9,12 +9,14 @@ type SwipeButtonProps = {
onSuccess: () => void;
text: string;
disabled?: boolean;
theme?: "default" | "green";
};
export function SwipeButton({
onSuccess,
text,
disabled = false,
theme = "default",
}: SwipeButtonProps) {
const { locale } = useI18n();
const isRtl =
@ -117,10 +119,16 @@ export function SwipeButton({
left: "4px",
};
const isGreen = theme === "green";
const containerBg = isGreen ? "bg-[#E8F8F3]" : "bg-[#FFECEF]";
const fillBg = isGreen ? "bg-[#00AC78]/15" : "bg-[#FFCCD4]/30";
const textColor = isGreen ? "text-[#00AC78]" : "text-[#F0445B]";
const handleBg = isGreen ? "bg-[#00AC78]" : "bg-[#F0445B]";
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 ${
className={`relative flex h-[56px] w-full items-center justify-center rounded-full ${containerBg} p-1 select-none overflow-hidden ${
disabled ? "opacity-60 cursor-not-allowed" : "cursor-pointer"
}`}
onTouchStart={onTouchStart}
@ -130,7 +138,7 @@ export function SwipeButton({
>
{/* Background sliding fill */}
<div
className="absolute inset-y-0 bg-[#FFCCD4]/30"
className={`absolute inset-y-0 ${fillBg}`}
style={{
left: isRtl ? "auto" : 0,
right: isRtl ? 0 : "auto",
@ -140,14 +148,16 @@ export function SwipeButton({
/>
{/* Slide text */}
<span className="pointer-events-none z-10 text-[14px] font-bold text-[#F0445B] animate-pulse">
<span
className={`pointer-events-none z-10 text-[14px] font-bold ${textColor} 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"
className={`absolute top-1 bottom-1 flex aspect-square items-center justify-center rounded-full ${handleBg} text-white shadow-lg z-20 cursor-grab active:cursor-grabbing`}
>
{isRtl ? (
<GoChevronLeft className="size-6 shrink-0" />

2
src/data/questions/en.json

@ -296,7 +296,7 @@
"private": true
},
{
"title": "Representative's Contact Number with Country Code",
"title": "Representative's Contact Number",
"type": "phone",
"required": false,
"requiredWhen": {

4
src/data/questions/fa.json

@ -166,7 +166,7 @@
"description": "اطلاعات تماس و سکونت.",
"questions": [
{
"title": "شماره تماس شخصی با کد کشور",
"title": "شماره تماس شخصی",
"type": "phone",
"required": true,
"extras": {
@ -296,7 +296,7 @@
"private": true
},
{
"title": "شماره تماس رابط با کد کشور",
"title": "شماره تماس رابط",
"type": "phone",
"required": false,
"requiredWhen": {

7
src/lib/get-submit-path.ts

@ -16,9 +16,14 @@ export function getSubmitPath(profile: MarriageProfileResponse | undefined) {
if (activeCase) {
const caseStatus = activeCase.status;
const myAction = activeCase.my_action;
const isFemale = profile.gender === "female";
if (caseStatus === "payment_done" || caseStatus === "finalized" || caseStatus === "contacted") {
if (
caseStatus === "payment_done" ||
caseStatus === "finalized" ||
caseStatus === "contacted"
) {
if (isFemale) {
return "/candidate-contact";
}

18
src/translations/locales/ar.json

@ -23,7 +23,10 @@
"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": "أخرى",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "الاتصال بالدعم",
"supportDescription": "إذا واجهت أي مشكلة، لا تتردد في التواصل مع فريق الدعم عبر واتساب",
"supportSwipeText": "تواصل"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "تفاصيل الاتصال",
"contactDetailDescription": "يُرجى الإشارة أثناء المكالمة إلى أنه تم تعريفكم عبر تطبيق حبيب للزواج.",
"contactNotAvailable": "معلومات الاتصال ليست متاحة بعد."
"contactNotAvailable": "معلومات الاتصال ليست متاحة بعد.",
"contactWarning": "يرجى العلم أنه من وقت هذا التعريف، لديك 48 ساعة (يومين) للاتصال بالشخص أو بعائلته الكريمة لإعلان استعدادك وبدء عملية التعارف. في هذه المرحلة، يكفي مجرد اتصال أولي للإعلان عن وجودك، ويعتمد التخطيط للخطوات التالية (مثل الاجتماع الشخصي) تمامًا على اتفاقياتكم المتبادلة اللاحقة.\n\nنظرًا لأن عدم الاتصال خلال الوقت المحدد قد يعتبر غير لائق اجتماعيًا، إذا لم يتم اتخاذ أي إجراء خلال هذين اليومين، فسيتم إزالة الشريك المقدم وفقًا لقواعد المنصة. ونذكرك أيضًا بأن هذا الأمر قد يؤدي إلى قيود مثل التأخير في التعارف المستقبلي وعقوبات مالية."
},
"findingMatch": {
"title": "البحث الخاص بك نشط",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "تأكيد الاتصال",
"noContactYet": "الإبلاغ عن عدم الاتصال",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "للحفاظ على سير العملية بسلاسة، فإن الطرف الآخر لديه مهلة 48 ساعة (يومين) لإجراء اتصال أولي معك أو مع عائلتك. إذا لم يتم الاتصال بعد يومين، فلديك خيار رفض طلبه أو إخطارنا بأنه لم يتصل.",
"thankYouFeedback": "شكراً لك على إرسال ملاحظاتك، سنكون سعداء جداً بإخبارنا بالنتيجة النهائية أيضاً.",
"marriageSuccess": "لقد تفاهمنا",
"marriageFailure": "لم نتفاهم",
"outcomeTitle": "ماذا كانت نتيجة تواصلكما؟"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/az.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Digər",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Dəstəklə Əlaqə",
"supportDescription": "Hər hansı bir probleminiz varsa, WhatsApp-da dəstək mütəxəssislərimizlə əlaqə saxlayın",
"supportSwipeText": "Əlaqə"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Əlaqə məlumatı",
"contactDetailDescription": "Zəng zamanı Habib Marriage tətbiqi vasitəsilə tanış olduğunuzu qeyd edin.",
"contactNotAvailable": "Əlaqə məlumatı hələ mövcud deyil."
"contactNotAvailable": "Əlaqə məlumatı hələ mövcud deyil.",
"contactWarning": "Nəzərə çatdırırıq ki, bu tanışlıq vaxtından etibarən, hazır olduğunuzu bildirmək və tanışlıq prosesinə başlamaq üçün həmin şəxs və ya onun hörmətli ailəsi ilə əlaqə saxlamaq üçün 48 saat (2 gün) vaxtınız var. Bu mərhələdə sadəcə varlığınızı bildirmək üçün ilkin zəng kifayətdir və növbəti addımların planlaşdırılması (məsələn, şəxsən görüş) tamamilə sizin sonrakı qarşılıqlı razılaşmalarınızdan asılıdır.\n\nMüəyyən edilmiş müddət ərzində əlaqə saxlamamaq sosial baxımdan hörmətsizlik hesab edilə biləcəyi üçün, bu 2 gün ərzində heç bir tədbir görülməzsə, təqdim olunan uyğunluq platformanın qaydalarına uyğun olaraq silinəcəkdir. Həmçinin xatırladırıq ki, bu məsələ gələcək təqdimatlarda gecikmələr və maliyyə cərimələri kimi məhdudiyyətlərə səbəb ola bilər."
},
"findingMatch": {
"title": "AXTARIŞINIZ AKTİVDİR",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Əlaqəni təsdiqlə",
"noContactYet": "Əlaqə yoxdur hesabatı",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Prosesin rəvan getməsi üçün qarşı tərəfin sizinlə və ya ailənizlə ilkin əlaqə saxlaması üçün 48 saatlıq (2 günlük) vaxtı var. 2 gündən sonra əlaqə qurulmazsa, onun sorğusunu rədd etmək və ya bizə onun əlaqə saxlamadığını bildirmək seçiminiz var.",
"thankYouFeedback": "Rəy bildirdiyiniz üçün təşəkkür edirik, son nəticəni də bizə bildirsəniz çox şad olarıq.",
"marriageSuccess": "Razılığa gəldik",
"marriageFailure": "Razılığa gələ bilmədik",
"outcomeTitle": "Əlaqənizin nəticəsi necə oldu?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/bn.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "অন্যান্য",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "পشتیبانیর সাথে যোগাযোগ",
"supportDescription": "কোনো সমস্যা হলে, দয়া করে হোয়াটসঅ্যাপে আমাদের সাপোর্ট বিশেষজ্ঞদের সাথে যোগাযোগ করুন",
"supportSwipeText": "যোগাযোগ"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "যোগাযোগের বিবরণ",
"contactDetailDescription": "অনুগ্রহ করে কল করার সময় উল্লেখ করবেন যে হাবিব ম্যারেজ অ্যাপের মাধ্যমে আপনাদের পরিচয় হয়েছে।",
"contactNotAvailable": "যোগাযোগের তথ্য এখনও উপলব্ধ নয়।"
"contactNotAvailable": "যোগাযোগের তথ্য এখনও উপলব্ধ নয়।",
"contactWarning": "অনুগ্রহ করে অবগত থাকুন যে এই পরিচয়ের সময় থেকে, আপনার প্রস্তুতি ঘোষণা করতে এবং পরিচিতি প্রক্রিয়া শুরু করতে ব্যক্তি বা তার শ্রদ্ধেয় পরিবারের সাথে যোগাযোগ করার জন্য আপনার কাছে ৪৮ ঘণ্টা (২ দিন) সময় আছে। এই পর্যায়ে, আপনার উপস্থিতি ঘোষণা করার জন্য কেবল একটি প্রাথমিক কলই যথেষ্ট এবং পরবর্তী পদক্ষেপগুলির পরিকল্পনা (যেমন সরাসরি সাক্ষাৎ) সম্পূর্ণরূপে আপনার পরবর্তী পারস্পরিক চুক্তির উপর নির্ভর করে।\n\nযেহেতু নির্দিষ্ট সময়ের মধ্যে যোগাযোগ করতে ব্যর্থ হওয়া সামাজিকভাবে অসম্মানজনক বলে বিবেচিত হতে পারে, তাই এই ২ দিনের মধ্যে কোনো পদক্ষেপ না নেওয়া হলে, প্ল্যাটফর্মের নিয়ম অনুযায়ী প্রবর্তিত মিলটি সরিয়ে দেওয়া হবে। আমরা আপনাকে আরও মনে করিয়ে দিচ্ছি যে এই সমস্যাটির কারণে ভবিষ্যতে মিল প্রবর্তনে বিলম্ব এবং আর্থিক জরিমানার মতো নিষেধাজ্ঞা আরোপ হতে পারে।"
},
"findingMatch": {
"title": "আপনার অনুসন্ধান সক্রিয় আছে",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "যোগাযোগ নিশ্চিত করুন",
"noContactYet": "যোগাযোগ না হওয়ার রিপোর্ট",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "প্রক্রিয়াটি সুচারুভাবে চালিয়ে যাওয়ার জন্য, অন্য পক্ষের আপনার বা আপনার পরিবারের সাথে প্রাথমিক যোগাযোগ করার জন্য ৪৮ ঘণ্টা (২ দিন) সময় রয়েছে। যদি ২ দিন পরেও কোনো যোগাযোগ স্থাপন করা না হয়, তাহলে আপনার কাছে তার অনুরোধ প্রত্যাখ্যান করার বা তিনি যোগাযোগ করেননি তা আমাদের জানানোর বিকল্প রয়েছে।",
"thankYouFeedback": "আমাদের মতামত দেওয়ার জন্য আপনাকে ধন্যবাদ, আপনি যদি আমাদের চূড়ান্ত ফলাফলও জানান তবে আমরা খুব খুশি হব।",
"marriageSuccess": "আমরা ঐকমত্যে পৌঁছেছি",
"marriageFailure": "আমরা ঐকমত্যে পৌঁছাতে পারিনি",
"outcomeTitle": "আপনাদের যোগাযোগের ফলাফল কী হলো?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/da.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Andet",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Kontakt Support",
"supportDescription": "Hvis du støder på problemer, er du velkommen til at kontakte vores supportspecialister på WhatsApp",
"supportSwipeText": "Kontakt"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Kontaktoplysninger",
"contactDetailDescription": "Nævn venligst under opkaldet, at I blev introduceret via Habib Marriage-appen.",
"contactNotAvailable": "Kontaktoplysninger er ikke tilgængelige endnu."
"contactNotAvailable": "Kontaktoplysninger er ikke tilgængelige endnu.",
"contactWarning": "Vær venligst opmærksom på, at du fra tidspunktet for denne introduktion har 48 timer (2 dage) til at kontakte personen eller dennes respekterede familie for at erklære din parathed og påbegynde bekendtskabsprocessen. På dette stadium er det tilstrækkeligt med et indledende opkald for at meddele din tilstedeværelse, og planlægning af yderligere trin (såsom et personligt møde) afhænger helt af jeres efterfølgende gensidige aftaler.\n\nDa manglende kontakt inden for den angivne tid kan betragtes som socialt respektløst, vil det introducerede match blive fjernet i henhold til platformens regler, hvis der ikke gøres noget inden for disse 2 dage. Vi påminder dig også om, at dette problem kan føre til restriktioner såsom forsinkelser i fremtidige introduktioner og økonomiske bøder."
},
"findingMatch": {
"title": "DIN SØGNING ER AKTIV",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Bekræft kontakt",
"noContactYet": "Rapporter manglende kontakt",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "For at holde processen kørende uden problemer har den anden part et vindue på 48 timer (2 dage) til at etablere den første kontakt med dig eller din familie. Hvis der ikke er etableret kontakt efter 2 dage, har du mulighed for at afvise hans anmodning eller give os besked om, at han ikke har henvendt sig.",
"thankYouFeedback": "Tak for din feedback, vi vil blive meget glade, hvis du også vil lade os vide det endelige resultat.",
"marriageSuccess": "Vi nåede til enighed",
"marriageFailure": "Vi nåede ikke til enighed",
"outcomeTitle": "Hvad var resultatet af jeres kontakt?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/de.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Andere",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Support kontaktieren",
"supportDescription": "Bei Problemen kontaktieren Sie bitte unsere Support-Spezialisten über WhatsApp",
"supportSwipeText": "Kontakt"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Kontaktdetails",
"contactDetailDescription": "Bitte erwähnen Sie während des Telefonats, dass Sie über die Habib Marriage-App vermittelt wurden.",
"contactNotAvailable": "Kontaktinformationen sind noch nicht verfügbar."
"contactNotAvailable": "Kontaktinformationen sind noch nicht verfügbar.",
"contactWarning": "Bitte beachten Sie, dass Sie ab dem Zeitpunkt dieser Vorstellung 48 Stunden (2 Tage) Zeit haben, um die Person oder ihre geschätzte Familie zu kontaktieren, um Ihre Bereitschaft zu erklären und den Kennenlernprozess zu beginnen. In dieser Phase reicht ein erster Anruf aus, um Ihre Präsenz anzukündigen, und die Planung weiterer Schritte (wie ein persönliches Treffen) hängt ganz von Ihren späteren gegenseitigen Vereinbarungen ab.\n\nDa eine Kontaktaufnahme innerhalb der angegebenen Zeit als gesellschaftlich respektlos angesehen werden kann, wird das vorgestellte Match gemäß den Regeln der Plattform entfernt, wenn innerhalb dieser 2 Tage keine Maßnahmen ergriffen werden. Wir erinnern Sie auch daran, dass dies zu Einschränkungen wie Verzögerungen bei zukünftigen Vorstellungen und finanziellen Strafen führen kann."
},
"findingMatch": {
"title": "IHRE SUCHE IST AKTIV",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Kontakt bestätigen",
"noContactYet": "Keinen Kontakt melden",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Um einen reibungslosen Ablauf zu gewährleisten, hat die andere Partei ein Zeitfenster von 48 Stunden (2 Tagen), um den ersten Kontakt mit Ihnen oder Ihrer Familie herzustellen. Wenn nach 2 Tagen kein Kontakt hergestellt wurde, haben Sie die Möglichkeit, seine Anfrage abzulehnen oder uns darüber zu informieren, dass er sich nicht gemeldet hat.",
"thankYouFeedback": "Vielen Dank für Ihr Feedback. Wir würden uns sehr freuen, wenn Sie uns auch das Endergebnis mitteilen würden.",
"marriageSuccess": "Wir haben uns geeinigt",
"marriageFailure": "Wir haben uns nicht geeinigt",
"outcomeTitle": "Was war das Ergebnis Ihres Kontakts?"
},
"sheets": {
"informationSheet": "Information sheet",

23
src/translations/locales/en.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Other",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Contact Support",
"supportDescription": "If you encounter any issues, please feel free to contact our support specialists in WhatsApp",
"supportSwipeText": "Contact"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Contact Detail",
"contactDetailDescription": "Please mention during the call that you were introduced by the Habib Marriage app.",
"contactNotAvailable": "Contact information is not available yet."
"contactNotAvailable": "Contact information is not available yet.",
"contactWarning": "Please be informed that from the time of this introduction, you have 48 hours (2 days) to contact the person or their respected family to declare your readiness and begin the acquaintance process. At this stage, merely an initial call to announce your presence is sufficient, and planning for further steps (such as an in-person meeting) depends entirely on your subsequent mutual agreements.\n\nSince failing to make contact within the specified time might be considered socially disrespectful, if no action is taken within these 2 days, the introduced match will be removed according to the platform's rules. We also remind you that this issue may lead to restrictions such as delays in future introductions and financial penalties."
},
"findingMatch": {
"title": "SEARCH IN PROGRESS",
@ -165,17 +169,18 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Confirm Contacted",
"noContactYet": "Report No Contact",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us.",
"contactWarning": "To keep the process moving smoothly, the other party has a 48-hour (2-day) window to make initial contact with you or your family. If no contact is established after 2 days, you have the option to decline his request or notify us that he hasn't reached out.",
"submitOutcome": "Submit Final Outcome",
"outcomeGuide": "Please report the final outcome of the proposal and communication to the system.",
"outcomeTitle": "Declare Proposal Outcome",
"marriageSuccess": "Agreed to marry (Success)",
"marriageFailure": "Did not agree (No fit)",
"outcomeTitle": "What was the outcome of your contact?",
"marriageSuccess": "We reached an agreement",
"marriageFailure": "We did not reach an agreement",
"congratsTitle": "Congratulations! 🎉",
"congratsMessage": "Wishing you a lifetime of love, joy, and happiness. Your profile has been successfully closed."
"congratsMessage": "Wishing you a lifetime of love, joy, and happiness. Your profile has been successfully closed.",
"thankYouFeedback": "Thank you for giving us feedback, we would be very happy if you also let us know the final result."
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/es.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Otro",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Contactar Soporte",
"supportDescription": "Si tiene algún problema, no dude en ponerse en contacto con nuestros especialistas de soporte en WhatsApp",
"supportSwipeText": "Contactar"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Detalles de contacto",
"contactDetailDescription": "Por favor, mencione durante la llamada que fue presentado a través de la aplicación Habib Marriage.",
"contactNotAvailable": "La información de contacto aún no está disponible."
"contactNotAvailable": "La información de contacto aún no está disponible.",
"contactWarning": "Tenga en cuenta que, a partir del momento de esta presentación, tiene 48 horas (2 días) para ponerse en contacto con la persona o su respetada familia para declarar su disposición y comenzar el proceso de conocimiento. En esta etapa, basta con una llamada inicial para anunciar su presencia, y la planificación de los pasos posteriores (como una reunión en persona) depende enteramente de sus acuerdos mutuos posteriores.\n\nDado que el no ponerse en contacto dentro del tiempo especificado podría considerarse una falta de respeto social, si no se toma ninguna medida dentro de estos 2 días, la pareja presentada será eliminada de acuerdo con las reglas de la plataforma. También le recordamos que este problema puede dar lugar a restricciones, como retrasos en futuras presentaciones y penalizaciones financieras."
},
"findingMatch": {
"title": "SU BÚSQUEDA ESTÁ ACTIVA",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Confirmar contacto",
"noContactYet": "Reportar falta de contacto",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Para que el proceso siga avanzando sin problemas, la otra parte tiene un plazo de 48 horas (2 días) para establecer contacto inicial con usted o su familia. Si no se establece contacto después de 2 días, tiene la opción de rechazar su solicitud o notificarnos que no se ha puesto en contacto.",
"thankYouFeedback": "Gracias por enviarnos sus comentarios. Estaremos muy contentos si también nos comunica el resultado final.",
"marriageSuccess": "Llegamos a un acuerdo",
"marriageFailure": "No llegamos a un acuerdo",
"outcomeTitle": "¿Cuál fue el resultado de su contacto?"
},
"sheets": {
"informationSheet": "Information sheet",

23
src/translations/locales/fa.json

@ -23,7 +23,10 @@
"previousPage": "صفحه قبلی",
"itemsPerPage": "تعداد موارد در هر صفحه",
"other": "سایر",
"consultation": "مشاوره"
"consultation": "مشاوره",
"supportTitle": "ارتباط با پشتیبانی",
"supportDescription": "اگر مشکلی دارید، لطفاً با تیم پشتیبانی ما در واتس‌اپ تماس بگیرید",
"supportSwipeText": "تماس"
},
"intro": {
"imageAlt": "ازدواج آسمانی",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "پرداخت و دریافت تماس",
"contactDetailTitle": "جزئیات تماس",
"contactDetailDescription": "لطفاً در طول تماس اشاره کنید که از طریق برنامه همسریابی حبیب معرفی شده‌اید.",
"contactNotAvailable": "اطلاعات تماس هنوز در دسترس نیست."
"contactNotAvailable": "اطلاعات تماس هنوز در دسترس نیست.",
"contactWarning": "به اطلاع می‌رساند که از زمان این معرفی، شما ۴۸ ساعت (۲ روز) فرصت دارید تا برای اعلام آمادگی و شروع فرآیند آشنایی، با فرد یا خانواده محترم ایشان تماس بگیرید. در این مرحله، صرفاً یک تماس اولیه جهت اعلام حضور کافی است و برنامه‌ریزی برای مراحل بعدی (مانند ملاقات حضوری) کاملاً به توافقات متقابل بعدی شما بستگی دارد.\n\nاز آنجا که عدم تماس در زمان مقرر ممکن است از نظر اجتماعی بی‌احترامی تلقی شود، در صورت عدم اقدام در این ۲ روز، طبق قوانین پلتفرم، معرفی مورد نظر حذف خواهد شد. همچنین یادآوری می‌کنیم که این موضوع می‌تواند منجر به محدودیت‌هایی مانند تأخیر در معرفی‌های آینده و جریمه‌های مالی شود."
},
"findingMatch": {
"title": "جستجوی شما فعال است",
@ -165,17 +169,18 @@
"candidateContact": {
"imageAlt": "وضعیت تماس گزینه انتخاب‌شده",
"title": "گزینه انتخاب‌شده به‌زودی با خانواده شما تماس می‌گیرد.",
"contacted": "تماس گرفته شد",
"noContactYet": "هنوز تماس نگرفته؟",
"contacted": ایید تماس",
"noContactYet": "گزارش عدم تماس",
"afterTwoDays": "(بعد از ۲ روز)",
"contactWarning": "اگر ظرف ۲ روز با شما تماس نگرفتند، لطفاً به ما اطلاع دهید.",
"contactWarning": "برای حفظ روند روان فرآیند، طرف مقابل ۴۸ ساعت (۲ روز) فرصت دارد تا با شما یا خانواده‌تان تماس اولیه برقرار کند. اگر بعد از ۲ روز تماسی برقرار نشد، این امکان را دارید که درخواست او را رد کنید یا به ما اطلاع دهید که تماسی نگرفته است.",
"submitOutcome": "اعلام نتیجه نهایی خواستگاری و ارتباط",
"outcomeGuide": "لطفاً نتیجه نهایی خواستگاری و ارتباط خود را به سیستم اعلام کنید تا وضعیت پرونده شما بروزرسانی شود.",
"outcomeTitle": "اعلام نتیجه نهایی خواستگاری",
"marriageSuccess": "توافق برای ازدواج (اعلام موفقیت)",
"marriageFailure": "عدم توافق (رد کیس)",
"outcomeTitle": "نتیجه ارتباط و خواستگاری شما چه شد؟",
"marriageSuccess": "به تفاهم رسیدیم",
"marriageFailure": "به تفاهم نرسیدیم",
"congratsTitle": "پیوندتان مبارک! 🎉",
"congratsMessage": "با آرزوی شادمانی، خوشبختی و سلامتی برای ادامه زندگی مشترک و زیبای شما. پرونده کاربری شما با موفقیت بسته شد."
"congratsMessage": "با آرزوی شادمانی، خوشبختی و سلامتی برای ادامه زندگی مشترک و زیبای شما. پرونده کاربری شما با موفقیت بسته شد.",
"thankYouFeedback": "ممنون از اینکه به ما فیدبک دادید، بسیار خوشحال میشویم نتیجه نهایی را نیز به ما اعلام کنید"
},
"sheets": {
"informationSheet": "پنل اطلاعات",

18
src/translations/locales/fr.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Autre",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Contacter le Support",
"supportDescription": "Si vous rencontrez des problèmes, n'hésitez pas à contacter nos spécialistes du support sur WhatsApp",
"supportSwipeText": "Contact"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Détails de contact",
"contactDetailDescription": "Veuillez mentionner lors de l'appel que vous avez été présenté par l'application Habib Marriage.",
"contactNotAvailable": "Les coordonnées ne sont pas encore disponibles."
"contactNotAvailable": "Les coordonnées ne sont pas encore disponibles.",
"contactWarning": "Veuillez noter qu'à compter du moment de cette introduction, vous disposez de 48 heures (2 jours) pour contacter la personne ou sa respectée famille afin de déclarer votre volonté et de commencer le processus de connaissance. À ce stade, un simple appel initial pour annoncer votre présence suffit, et la planification des étapes ultérieures (comme une rencontre en personne) dépend entièrement de vos accords mutuels ultérieurs.\n\nÉtant donné que le fait de ne pas prendre contact dans le délai spécifié pourrait être considéré comme un manque de respect social, si aucune mesure n'est prise dans ces 2 jours, la mise en relation introduite sera supprimée conformément aux règles de la plateforme. Nous vous rappelons également que ce problème peut entraîner des restrictions telles que des retards dans les futures introductions et des sanctions financières."
},
"findingMatch": {
"title": "VOTRE RECHERCHE EST ACTIVE",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Confirmer le contact",
"noContactYet": "Signaler l'absence de contact",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Pour assurer le bon déroulement du processus, l'autre partie dispose d'un délai de 48 heures (2 jours) pour établir un premier contact avec vous ou votre famille. Si aucun contact n'est établi après 2 jours, vous avez la possibilité de refuser sa demande ou de nous informer qu'il n'a pas pris contact.",
"thankYouFeedback": "Merci pour vos commentaires, nous serions très heureux que vous nous communiquiez également le résultat final.",
"marriageSuccess": "Nous sommes parvenus à un accord",
"marriageFailure": "Nous ne sommes pas parvenus à un accord",
"outcomeTitle": "Quel a été le résultat de votre contact ?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/gu.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "બીજું",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "સંપર્ક સપોર્ટ",
"supportDescription": "જો તમને કોઈ સમસ્યા આવે, તો કૃપા કરીને WhatsApp પર અમારા સપોર્ટ નિષ્ણાતોનો સંપર્ક કરો",
"supportSwipeText": "સંપર્ક"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "સંપર્ક વિગત",
"contactDetailDescription": "કૃપા કરીને કૉલ દરમિયાન ઉલ્લેખ કરો કે તમને હબીબ મેરેજ એપ્લિકેશન દ્વારા પરિચય કરાવવામાં આવ્યો હતો.",
"contactNotAvailable": "સંપર્ક માહિતી હજી ઉપલબ્ધ નથી."
"contactNotAvailable": "સંપર્ક માહિતી હજી ઉપલબ્ધ નથી.",
"contactWarning": "કૃપા કરીને જાણો કે આ પરિચયના સમયથી, તમારી તૈયારી જાહેર કરવા અને ઓળખાણ પ્રક્રિયા શરૂ કરવા માટે તમારી પાસે તે વ્યક્તિ અથવા તેમના આદરણીય પરિવારનો સંપર્ક કરવા માટે ૪૮ કલાક (૨ દિવસ) છે. આ તબક્કે, તમારી હાજરીની જાહેરાત કરવા માટે માત્ર પ્રારંભિક કોલ પૂરતો છે, અને આગળના પગલાંનું આયોજન (જેમ કે રૂબરૂ મુલાકાત) સંપૂર્ણપણે તમારી અનુગામી પરસ્પર સમજૂતી પર આધારિત છે.\n\nનિયત સમયમાં સંપર્ક કરવામાં નિષ્ફળ જવું એ સામાજિક રીતે અનાદર ગણી શકાય, તેથી જો આ ૨ દિવસમાં કોઈ પગલાં લેવામાં નહીં આવે, તો પ્લેટફોર્મના નિયમો અનુસાર રજૂ કરાયેલ મેચને દૂર કરવામાં આવશે. અમે તમને એ પણ યાદ અપાવીએ છીએ કે આ સમસ્યા ભવિષ્યના પરિચયોમાં વિલંબ અને નાણાકીય દંડ જેવી મર્યાદાઓ તરફ દોરી શકે છે."
},
"findingMatch": {
"title": "તમારી શોધ સક્રિય છે",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "સંપર્કની પુષ્ટિ કરો",
"noContactYet": "સંપર્ક ન થયાનો અહેવાલ",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "પ્રક્રિયાને સરળ રીતે ચાલુ રાખવા માટે, બીજી પક્ષ પાસે તમારી અથવા તમારા પરિવાર સાથે પ્રારંભிக் સંપર્ક કરવા માટે 48 કલાક (2 દિવસ) નો સમય છે. જો 2 દિવસ પછી કોઈ સંપર્ક સ્થાપિત ન થાય, તો તમારી પાસે તેમની વિનંતીને નકારવાનો અથવા અમને જાણ કરવાનો વિકલ્પ છે કે તેમણે સંપર્ક કર્યો નથી.",
"thankYouFeedback": "અમને પ્રતિસાદ આપવા બદલ આભાર, જો તમે અમને અંતિમ પરિણામ પણ જણાવશો તો અમને ખૂબ જ આનંદ થશે.",
"marriageSuccess": "અમે એક કરાર પર પહોંચ્યા",
"marriageFailure": "અમે કરાર પર પહોંચી શક્યા નહીં",
"outcomeTitle": "તમારા સંપર્કનું પરિણામ શું આવ્યું?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/ha.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Sauran",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Tuntuɓi Taimako",
"supportDescription": "Idan kun ci karo da matsala, ku tuntuɓi ƙwararrun tallafi a WhatsApp",
"supportSwipeText": "Tuntuɓa"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Cikakken Bayani na Tuntuɓa",
"contactDetailDescription": "Da fatan za a ambata lokacin kiran cewa an gabatar da ku ta hanyar aikace-aikacen Habib Marriage.",
"contactNotAvailable": "Bayanin tuntuɓa bai kasance ba tukuna."
"contactNotAvailable": "Bayanin tuntuɓa bai kasance ba tukuna.",
"contactWarning": "Da fatan za a sani cewa tun daga lokacin da aka yi wannan gabatarwar, kuna da sa'o'i 48 (kwanaki 2) don tuntuɓar mutumin ko danginsa masu daraja don bayyana shirye-shiryenku da fara aiwatar da sanin juna. A wannan matakin, kiran farko kawai don sanar da kasancewar ku ya isa, kuma tsara ƙarin matakai (kamar taron ido-da-ido) ya dogara gaba ɗaya kan yarjejeniyoyin ku na gaba.\n\nTunda rashin tuntuɓar juna a cikin lokacin da aka kayyade ana iya ɗaukar shi a matsayin rashin girmamawa ga al'umma, idan ba a ɗauki wani mataki ba a cikin waɗannan kwanaki 2, za a cire matches ɗin da aka gabatar daidai da dokokin dandamali. Hakanan muna tunatar da ku cewa wannan matsalar na iya haifar da iyakancewa kamar jinkiri a cikin gabatarwa na gaba da tara na kuɗi."
},
"findingMatch": {
"title": "BINCICKEN KU YANA AIKI",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Tabbatar da tuntuɓa",
"noContactYet": "Rahoton rashin tuntuɓa",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Don ci gaba da tafiyar da tsari cikin sauƙi, ɗayan ɓangaren yana da damar sa'o'i 48 (kwanaki 2) don tuntuɓar ku ko dangin ku. Idan ba a tuntuɓi juna ba bayan kwanaki 2, kuna da zaɓi na ƙin buƙatarsa ko sanar da mu cewa bai tuntuɓe ku ba.",
"thankYouFeedback": "Godiya da kuka ba mu ra'ayoyinku, za mu yi farin ciki sosai idan kuka sanar da mu sakamakon ƙarshe.",
"marriageSuccess": "Mun cimma yarjejeniya",
"marriageFailure": "Ba mu cimma yarjejeniya ba",
"outcomeTitle": "Mene ne sakamakon tuntuɓarku?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/he.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "אחר",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "צור קשר עם התמיכה",
"supportDescription": "אם נתקלת בבעיה כלשהי, אל תהסס לפנות למומחי התמיכה שלנו בוואטסאפ",
"supportSwipeText": "צור קשר"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "פרטי קשר",
"contactDetailDescription": "אנא ציינו במהלך השיחה שהופניתם דרך אפליקציית Habib Marriage.",
"contactNotAvailable": "פרטי הקשר אינם זמינים עדיין."
"contactNotAvailable": "פרטי הקשר אינם זמינים עדיין.",
"contactWarning": "לידיעתך, מרגע הצגה זו, עומדות לרשותך 48 שעות (יומיים) ליצור קשר עם האדם או עם משפחתו המכובדת כדי להצהיר על מוכנותך ולהתחיל בתהליך ההיכרות. בשלב זה, די בשיחה ראשונית בלבד כדי להודיع על נוכחותך, ותכנון שלבים נוספים (כגון פגישה פרונטלית) תלوي לחלוטין בהסכמות ההדדיות הבאות שלכם.\n\nמכיוون שאי יצירת קשר בתוך הזمان שנקבע עלולה להיחשב כחوسر כבוד חברתי, אם לא יינקטו צعדים בתוך יומיים אלה, ההתאמה שהוצגה תוסر בהתאם לכללי הפלטפורمة. אנו גם מזכירים לך שנושא זה עלול להוביל להגבלات כגون עיכوبים בהיכרות עתידית וקنسות כספיים."
},
"findingMatch": {
"title": "החיפוש שלך פעיל",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "אשר יצירת קשר",
"noContactYet": "דווח על חוסر קשר",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "כדי שהתהליך יתקדם בצורה חלקה, לצד השני יש חלون זמן של 48 שעות (יומיים) ליצור קשר ראשוני איתך או עם משפחתך. אם לא נוצר קשר לאחר יומיים, יש לך אפשרות לדחות את בקשתו أو להודיע לנו שהוא לא יצר קשר.",
"thankYouFeedback": "תודה על המשוב שלך, נשמח מאוד אם תעדכן אותנו גם בתוצאה הסופית.",
"marriageSuccess": "הגענו להסכמה",
"marriageFailure": "לא הגענו להסכמה",
"outcomeTitle": "מה הייתה תוצאת יצירת הקשר שלכם?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/hi.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "अन्य",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "सहायता से संपर्क करें",
"supportDescription": "किसी भी समस्या के लिए, कृपया व्हाट्सएप पर हमारे सहायता विशेषज्ञों से संपर्क करें",
"supportSwipeText": "संपर्क"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "संपर्क विवरण",
"contactDetailDescription": "कृपया कॉल के दौरान उल्लेख करें कि आपका परिचय हबीब मैरिज ऐप के माध्यम से कराया गया था।",
"contactNotAvailable": "संपर्क जानकारी अभी उपलब्ध नहीं है।"
"contactNotAvailable": "संपर्क जानकारी अभी उपलब्ध नहीं है।",
"contactWarning": "कृपया ध्यान दें कि इस परिचय के समय से, अपनी तैयारी की घोषणा करने और परिचय प्रक्रिया शुरू करने के लिए आपके पास उस व्यक्ति या उनके सम्मानित परिवार से संपर्क करने के लिए 48 घंटे (2 दिन) का समय है। इस चरण में, अपनी उपस्थिति की घोषणा करने के लिए केवल एक प्रारंभिक कॉल ही पर्याप्त है, और आगे के चरणों की योजना बनाना (जैसे कि व्यक्तिगत बैठक) पूरी तरह से आपके बाद के आपसी समझौतों पर निर्भर करता है।\n\nचूंकि निर्दिष्ट समय के भीतर संपर्क करने में विफल होना सामाजिक रूप से अपमानजनक माना जा सकता है, यदि इन 2 दिनों के भीतर कोई कार्रवाई नहीं की जाती है, तो प्लेटफॉर्म के नियमों के अनुसार पेश किए गए मैच को हटा दिया जाएगा। हम आपको यह भी याद दिलाते हैं कि इस समस्या के कारण भविष्य के परिचय में देरी और वित्तीय दंड जैसे प्रतिबंध लग सकते हैं।"
},
"findingMatch": {
"title": "आपकी खोज सक्रिय है",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "संपर्क की पुष्टि करें",
"noContactYet": "संपर्क न होने की रिपोर्ट",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "प्रक्रिया को सुचारू रूप से चलाने के लिए, दूसरे पक्ष के पास आपसे या आपके परिवार से प्रारंभिक संपर्क करने के लिए 48 घंटे (2 दिन) का समय है। यदि 2 दिनों के बाद कोई संपर्क स्थापित नहीं होता है, तो आपके पास उनके अनुरोध को अस्वीकार करने या हमें सूचित करने का विकल्प है कि उन्होंने संपर्क नहीं किया है।",
"thankYouFeedback": "हमें प्रतिक्रिया देने के लिए धन्यवाद, यदि आप हमें अंतिम परिणाम भी बताते हैं तो हमें बहुत खुशी होगी।",
"marriageSuccess": "हम एक समझौते पर पहुँचे",
"marriageFailure": "हम समझौते पर नहीं पहुँच सके",
"outcomeTitle": "आपके संपर्क का क्या परिणाम रहा?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/id.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Lainnya",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Hubungi Dukungan",
"supportDescription": "Jika Anda mengalami masalah, silakan hubungi spesialis dukungan kami di WhatsApp",
"supportSwipeText": "Hubungi"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Detail Kontak",
"contactDetailDescription": "Harap sebutkan selama panggilan bahwa Anda diperkenalkan melalui aplikasi Habib Marriage.",
"contactNotAvailable": "Informasi kontak belum tersedia."
"contactNotAvailable": "Informasi kontak belum tersedia.",
"contactWarning": "Harap informasikan bahwa sejak perkenalan ini, Anda memiliki waktu 48 jam (2 hari) to menghubungi orang tersebut atau keluarganya yang dihormati untuk menyatakan kesiapan Anda dan memulai proses perkenalan. Pada tahap ini, panggilan awal saja untuk mengumumkan kehadiran Anda sudah cukup, dan perencanaan langkah lebih lanjut (seperti pertemuan langsung) sepenuhnya bergantung pada kesepakatan bersama Anda selanjutnya.\n\nKarena kegagalan untuk menghubungi dalam waktu yang ditentukan dapat dianggap tidak sopan secara sosial, jika tidak ada tindakan yang diambil dalam waktu 2 hari ini, kecocokan yang diperkenalkan akan dihapus sesuai dengan aturan platform. Kami juga mengingatkan Anda bahwa masalah ini dapat menyebabkan pembatasan seperti keterlambatan dalam pengenalan di masa mendatang dan denda keuangan."
},
"findingMatch": {
"title": "YOUR SEARCH IS ACTIVE",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Konfirmasi kontak",
"noContactYet": "Laporkan tidak ada kontak",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Agar proses berjalan lancar, pihak lain memiliki waktu 48 jam (2 hari) to melakukan kontak awal dengan Anda atau keluarga Anda. Jika tidak ada kontak yang terjalin setelah 2 hari, Anda memiliki opsi untuk menolak permintaannya atau memberi tahu kami bahwa dia belum menghubungi.",
"thankYouFeedback": "Terima kasih telah memberikan masukan, kami akan sangat senang jika Anda juga memberi tahu kami hasil akhirnya.",
"marriageSuccess": "Kami mencapai kesepakatan",
"marriageFailure": "Kami tidak mencapai kesepakatan",
"outcomeTitle": "Bagaimana hasil dari kontak Anda?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/ks.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "أخرى",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "رابطہ سپورٹ",
"supportDescription": "اگر کانہہ مسئلہ پیش آو، واٹس اَپس پیٹھ سٲنین سپورٹ ماہرین سیتۍ رابطہ کٔرِو",
"supportSwipeText": "رابطہ"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "رابطہ تفصیِل",
"contactDetailDescription": "مہربانی کٔرتھ فون کَرنہ وِزِ کٔرِو زِکِر زِ تُہیہ آیو متعارف کَرنہ حبیب میرج ایپ ذٔریعہ۔",
"contactNotAvailable": "رابطہ معلومات چھنہ ونی دستیاب۔"
"contactNotAvailable": "رابطہ معلومات چھنہ ونی دستیاب۔",
"contactWarning": "توجہہ دیو کہ یتھ تعارُفکِس وقتہ پیٹھہ، تُہہ چھِ ۴۸ گھنتہ (۲ دۄہ) أمِس شَخصَس یا أمۍ سٕندِس عِزت دار خاندانس سیتۍ رابطہ کرنہ خٲطرہ تاکہ تُہہ پَننۍ تیاری ظاہر کٔرِو تہٰ جان پہچان ہُنٛد عمل شروٗع کٔرِو۔ یَتھ مٔرحَلس مَنڅ، صِرِف اکھ شروٗعاتی کال پَنُن تعارُف کرنہ خٲطرہ کافی چھُ، تہٰ برونہہ کُن قَدمن ہنز مَنصوٗبہ بندی (جِسمانی ملاقات ہۍ مٹ) چھِ پوٗرہ پٲٹھۍ تُہنٛدین باہمی اِتِفاقن پیٹھ مُنحَصِر۔\n\nتکِہ رابطہ نہ کرُن مُقرر وقتس مَنڅ ہیٚکہِ سماجی طور غٲر سَنجیدگی سمجھنہ یِتھ، یَتھ صورتس مَنڅ اگر یِمن ۲ دۄہن مَنڅ کانہہ قَدم تُلنہ نہ آو، پِلیٹ فارمٕکۍ قَواینِن مُطٲبِق یِیہِ یِہ معرفی ہٹاونہ۔ أسی چھِ تُہہ یِہ تہِ یاد دِلاوان کہ یَتھ مَسٔلس سیتۍ ہیٚکن پگہکۍ متعارف گژھنس مَنڅ تاخیر تہٰ مٲلی جٔرمانہ ہۍ مٹ پٲبندۍ لَگتھ۔"
},
"findingMatch": {
"title": "تہنزر تلاش چھی سرگرم",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "رابطہٕچ تصدیق",
"noContactYet": "رابطہ نہ گژھنُک رپوٹ",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "عَمَل صٔحیح پٲٹھۍ عیلاونہ خٲطرہ، أمِس دۆیمِس فٔریقَس چھِ ۴٨ گھنٹہ (٢ دۄہ) تُہہ سیتۍ یا تُہنٛدِ خاندانس سیتۍ اِبتدٲیی رابطہ کرنہ خٲطرہ۔ اگر ٢ دۄہن پَتہ تہِ کانہہ رابطہ نہ سَپُد، تُہہ ہٚیکِو أمۍ سٕنٛز دَرخواست رَد کٔرتھ یا اَسہِ اِطلاع دِتھ کہ أمۍ نِہ کانہہ رابطہ کَرُن۔",
"thankYouFeedback": "شکریہ فیڈبیک دینے کی خاطر، اسہ گژھہ واریاہ خوشی اگر توہہ فائنل رزلٹ تہِ اسہ ونِیو۔",
"marriageSuccess": "ہم آیہ تفاهمس پیٹھ",
"marriageFailure": "ہم آیہ نہ تفاهمس پیٹھ",
"outcomeTitle": "کیاہ دراو نتیجہ توہہ رابطس؟"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/pt.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Outro",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Contatar Suporte",
"supportDescription": "Se encontrar qualquer problema, entre em contato com nossos especialistas de suporte no WhatsApp",
"supportSwipeText": "Contatar"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Detalhes de contato",
"contactDetailDescription": "Por favor, mencione durante a chamada que você foi apresentado através do aplicativo Habib Marriage.",
"contactNotAvailable": "As informações de contato ainda não estão disponíveis."
"contactNotAvailable": "As informações de contato ainda não estão disponíveis.",
"contactWarning": "Tenha em atenção que, a partir do momento desta introdução, tem 48 horas (2 dias) para contactar a pessoa ou a sua respeitada família para declarar a sua prontidão e iniciar o processo de conhecimento. Nesta fase, basta uma chamada inicial para anunciar a sua presença, e o planeamento de etapas posteriores (como um encontro presencial) depende inteiramente dos seus acordos mútuos subsequentes.\n\nUma vez que a falta de contacto dentro do prazo especificado pode ser considerada socialmente desrespeitosa, se nenhuma ação for tomada dentro destes 2 dias, o par introduzido será removido de acordo com as regras da plataforma. Lembramos também que este problema pode levar a restrições, tais como atrasos em futuras introduções e penalizações financeiras."
},
"findingMatch": {
"title": "SUA BUSCA ESTÁ ATIVA",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Confirmar contato",
"noContactYet": "Relatar falta de contato",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Para manter o processo fluindo sem problemas, a outra parte tem um prazo de 48 horas (2 dias) para fazer o contato inicial com você ou sua família. Se nenhum contato for estabelecido após 2 dias, você tem a opção de recusar a solicitação dele ou de nos notificar de que ele não entrou em contato.",
"thankYouFeedback": "Obrigado por nos dar o seu feedback, ficaríamos muito felizes se também nos informasse o resultado final.",
"marriageSuccess": "Chegamos a um acordo",
"marriageFailure": "Não chegamos a um acordo",
"outcomeTitle": "Qual foi o resultado do seu contato?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/ru.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Другое",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Связаться с поддержкой",
"supportDescription": "Если у вас возникли проблемы, свяжитесь с нашими специалистами поддержки в WhatsApp",
"supportSwipeText": "Связаться"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Контактная информация",
"contactDetailDescription": "Пожалуйста, упомяните во время разговора, что вас познакомили через приложение Habib Marriage.",
"contactNotAvailable": "Контактная информация пока недоступна."
"contactNotAvailable": "Контактная информация пока недоступна.",
"contactWarning": "Обратите внимание, что с момента этого представления у вас есть 48 часов (2 дня), чтобы связаться с человеком или его уважаемой семьей, чтобы заявить о своей готовности и начать процесс знакомства. На этом этапе достаточно простого первоначального звонка, чтобы объявить о своем присутствии, а планирование дальнейших шагов (например, личной встречи) полностью зависит от ваших последующих взаимных договоренностей.\n\nПоскольку отсутствие контакта в указанное время может быть сочтено социально неуважительным, если в течение этих 2 дней не будет предпринято никаких действий, представленное совпадение будет удалено в соответствии с правилами платформы. Мы также напоминаем вам, что эта проблема может привести к таким ограничениям, как задержки в будущих представлениях и финансовые штрафы."
},
"findingMatch": {
"title": "ВАШ ПОИСК АКТИВЕН",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Подтвердить контакт",
"noContactYet": "Сообщить об отсутствии контакта",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Чтобы процесс продвигался гладко, у другой стороны есть 48 часов (2 дня), чтобы установить первоначальный контакт с вами или вашей семьей. Если по истечении 2 дней контакт не установлен, у вас есть возможность отклонить его запрос или уведомить нас о том, что он не связался.",
"thankYouFeedback": "Спасибо за ваш отзыв, мы будем очень рады, если вы также сообщите нам окончательный результат.",
"marriageSuccess": "Мы пришли к согласию",
"marriageFailure": "Мы не пришли к согласию",
"outcomeTitle": "Каков был результат вашего контакта?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/sw.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Nyingine",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Wasiliana na Usaidizi",
"supportDescription": "Ukikutana na tatizo lolote, tafadhali wasiliana na wataalamu wetu wa usaidizi kwenye WhatsApp",
"supportSwipeText": "Wasiliana"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Maelezo ya Mawasiliano",
"contactDetailDescription": "Tafadhali taja wakati wa simu kwamba ulitambulishwa kupitia programu ya Habib Marriage.",
"contactNotAvailable": "Maelezo ya mawasiliano bado hayapatikani."
"contactNotAvailable": "Maelezo ya mawasiliano bado hayapatikani.",
"contactWarning": "Tafadhali fahamishwa kuwa tangu wakati wa utambulisho huu, una saa 48 (siku 2) kuwasiliana na mtu huyo au familia yake inayoheshimika ili kutangaza utayari wako na kuanza mchakato wa kufahamiana. Katika hatua hii, simu ya kwanza tu ya kutangaza uwepo wako inatosha, na kupanga hatua zaidi (kama vile mkutano wa ana kwa ana) inategemea kabisa makubaliano yenu ya baadaye.\n\nKwa kuwa kutowasiliana ndani ya muda uliowekwa kunaweza kuchukuliwa kuwa kutokuwa na heshima kijamii, ikiwa hakuna hatua itakayochukuliwa ndani ya siku hizi 2, mechi iliyotambulishwa itaondolewa kulingana na sheria za jukwaa. Pia tunakukumbusha kuwa suala hili linaweza kusababisha vizuizi kama vile kucheleweshwa kwa utambulisho wa baadaye na adhabu za kifedha."
},
"findingMatch": {
"title": "UTAFUTAJI WAKO UNAENDELEA",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Thibitisha mawasiliano",
"noContactYet": "Ripoti hakuna mawasiliano",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Ili mchakato uendelee vizuri, upande mwingine una muda wa saa 48 (siku 2) kuwasiliana na wewe au familia yako. Ikiwa hakuna mawasiliano yoyote yatakayofanywa baada ya siku 2, una chaguo la kukataa ombi lake au kutuarifu kuwa hajawasiliana.",
"thankYouFeedback": "Asante kwa kutupa maoni yako, tutafurahi sana ikiwa utatujulisha matokeo ya mwisho pia.",
"marriageSuccess": "Tulifikia makubaliano",
"marriageFailure": "Hatukufikia makubaliano",
"outcomeTitle": "Matokeo ya mawasiliano yenu yalikuwa nini?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/tg.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Дигар",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Тамос бо дастгирӣ",
"supportDescription": "Агар мушкилие дучор шавед, лутфан бо мутахассисони дастгирии мо дар WhatsApp тамос гиред",
"supportSwipeText": "Тамос"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Тафсилоти тамос",
"contactDetailDescription": "Лутфан ҳангоми занг қайд куنید, ки шумо тавассути барномаи Habib Marriage шинос карда шудаед.",
"contactNotAvailable": "Маъلوмоти тамос ҳанӯз дастрас нест."
"contactNotAvailable": "Маъلوмоти тамос ҳанӯз дастрас нест.",
"contactWarning": "Ба маълумоти шумо мерасонем, ки аз вақти ин муаррифӣ, шумо 48 соат (2 рӯз) имкон доред, ки бо шахс ё оилаи мӯҳтарами ӯ тамос гиред, то омодагии худро изҳор кунед ва раванди шиносоиро оғоз намоед. Дар ин марҳила, танҳо як тамоси аввалия барои эълон кардани ҳузури шумо кифоя аст ва банақшагирии қадамҳои минбаъда (масалан, вохӯрии ҳузурӣ) комилан аз мувофиқаи мутақобилаи навбатии шумо вобаста аст.\n\nАзбаски натавонистани тамос дар вақти муқарраршуда метавонад аз назари иҷтимоӣ беэҳтиромӣ ҳисобида шавад, агар дар давоми ин 2 рӯз ягон чорае андешида нашавад, муаррифии пешниҳодшуда мувофиқи қоидаҳои платформа нест карда мешавад. Мо инчунин ба шумо хотиррасон мекунем, ки ин масъала метавонад ба маҳдудиятҳо, ба монанди таъхир дар муаррифии оянда ва ҷаримаҳои молиявӣ оварда расонад."
},
"findingMatch": {
"title": "ҶУСТУҶӮИ ШУМО ФАЪОЛ АСТ",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Тасдиқи тамос",
"noContactYet": "Гузориши адам тамос",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Барои осон рафтани раванд, тарафи дигар 48 соат (2 рӯз) вақт дорад, ки бо шумо ё оилаатон тамоси аввалия барқарор кунад. Агар пас аз 2 рӯз тамос барқарор нашавад, шумо имкон доред, ки дархости ӯро рад кунед ё ба мо хабар диҳед, ки ӯ тамос нагирифтааст.",
"thankYouFeedback": "Ташаккур барои фикру мулоҳизаҳоятон, агар натиҷаи ниҳоиро низ ба мо хабар диҳед, хеле шод хоҳем шуд.",
"marriageSuccess": "Мо ба созиш расидем",
"marriageFailure": "Мо ба созиш нарасидем",
"outcomeTitle": "Натиҷаи тамоси шумо чӣ шуд?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/tr.json

@ -23,7 +23,10 @@
"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",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Destekle İletişime Geç",
"supportDescription": "Herhangi bir sorunla karşılaşırsanız, lütfen WhatsApp üzerinden destek uzmanlarımızla iletişime geçin",
"supportSwipeText": "İletişim"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "İletişim Detayları",
"contactDetailDescription": "Lütfen arama sırasında Habib Marriage uygulaması aracılığıyla tanıştırıldığınızı belirtin.",
"contactNotAvailable": "İletişim bilgileri henüz mevcut değil."
"contactNotAvailable": "İletişim bilgileri henüz mevcut değil.",
"contactWarning": "Bu tanıtım anından itibaren, hazır olduğunuzu beyan etmek ve tanışma sürecini başlatmak için kişiyle veya saygıdeğer ailesiyle iletişime geçmek için 48 saatiniz (2 gün) olduğunu lütfen unutmayın. Bu aşamada, varlığınızı bildirmek için sadece ilk bir arama yeterlidir ve sonraki adımların planlanması (yüz yüze görüşme gibi) tamamen daha sonraki karşılıklı anlaşmalarınıza bağlıdır.\n\nBelirtilen süre içinde iletişime geçilmemesi sosyal açıdan saygısızlık olarak kabul edilebileceğinden, bu 2 gün içinde herhangi bir işlem yapılmaması durumunda tanıtılan eşleşme platform kuralları gereği kaldırılacaktır. Ayrıca bu durumun gelecekteki tanıtımlarda gecikmeler ve mali cezalar gibi kısıtlamalara yol açabileceğini de hatırlatırız."
},
"findingMatch": {
"title": "ARAMANIZ AKTİF",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "İletişimi onayla",
"noContactYet": "İletişim yok bildir",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Sürecin sorunsuz ilerlemesi için, karşı tarafın sizinle veya ailenizle ilk teması kurmak üzere 48 saatlik (2 günlük) bir süresi vardır. 2 gün sonra iletişim kurulmazsa, talebini reddetme veya bize ulaşmadığını bildirme seçeneğine sahipsiniz.",
"thankYouFeedback": "Geri bildiriminiz için teşekkür ederiz, nihai sonucu da bize bildirirseniz çok memnun oluruz.",
"marriageSuccess": "Anlaşmaya vardık",
"marriageFailure": "Anlaşmaya varamadık",
"outcomeTitle": "İletişiminizin sonucu ne oldu?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/ul.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "باشقا",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "قوللاش بىلەن ئالاقىلىشىڭ",
"supportDescription": "مەسىلىگە يولۇقسىڭىز، WhatsApp ئارقىلىق قوللاش مۇتەخەسسىسلىرىمىز بىلەن ئالاقىلىشىڭ",
"supportSwipeText": "ئالاقە"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "ئالاقە تەپسىلاتى",
"contactDetailDescription": "تېلېفوندا ھەبىب نىكاھ ئەپى ئارقىلىق تونۇشتۇرۇلغانلىقىڭىزنى تىلغا ئېلىڭ.",
"contactNotAvailable": "ئالاقىلىشىش ئۇچۇرى تېخى يوق."
"contactNotAvailable": "ئالاقىلىشىش ئۇچۇرى تېخى يوق.",
"contactWarning": "شۇنى بىلىشىڭىز كېرەككى، بۇ تونۇشتۇرۇش ۋاقتىدىن باشلاپ، تەييارلىقىڭىزنى جاكارلاش ۋە تونۇشۇش جەريانىنى باشلاش ئۈچۈن، شۇ كىشى ياكى ئۇنىڭ ھۆرمەتلىك ئائىلىسىدىكىلەر بىلەن ألاقىلىشىشقا 48 سائەت (2 كۈن) ۋاقتىڭىز بار. بۇ باسقۇچتا، پەقەت مەۋجۇتلۇقىڭىزنى بىلدۈرۈش ئۈچۈن دەسلەپكى تېلېفون قىlsىڭىزلا كاپايە قىلىدۇ، يەنىمۇ أىلگىرىلىگەن قەدەملەرنى پىلانلاش (مەسىلەن، يۈزمۇ-يۈز كۆرۈشۈش) پۈتۈنلەي سىلەرنىڭ كېيىنكى ئۆز-ئارا كېلىشىمىڭلارغا باغلىق.\n\nبەلگىلەنگەن ۋاقىt ئىچىدە ئالاقىلاشمىغانلىق ئىجتىمائىي جەھەتتىن ھۆرمەتسىزلىك دەپ قارىلىشى مۇمكىن بولغاچقا، ئەگەر بۇ 2 كۈن ئىچىدە ھېچقانداق تەدبىر قوللىنىلمىسا، تونۇشتۇرۇلغان جۈپ سۇپىنىڭ قائىدىسىگە ئاساسەن ئۆچۈرۈۋېتىلىدۇ. بىز يەنە سىزگە شۇنى ئەسكەرتىمىزكى، بۇ مەسىلە كەلگۈسىدىكى تونۇشتۇرۇشنىڭ كېچىكىشى ۋە پۇل جازاسى قاتارلىق چەكلىمىلەرنى كەلتۈرۈپ چىقىرىشى مۇمكىن."
},
"findingMatch": {
"title": "YOUR SEARCH IS ACTIVE",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "ئالاقىنى جەزملەشتۈرۈش",
"noContactYet": "ئالاقە قىلىنمىغانلىق دوكلاتى",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "مۇشۇ جەرياننىڭ ئوڭۇشلۇق ئېلىپ بېرىلىشى ئۈچۈن، قارشى تەرەپنىڭ سىز ياكى ئائىلىڭىزدىكىلەر بىلەن دەسلەپكى ئالاقىنى ئورنىتىشقا 48 سائەت (2 كۈن) ۋاقتى بار. ئەگەر 2 كۈندىن كېيىن ھېچقانداق ئالاقە ئورنىتىلمىسا، سىزنىڭ ئۇنىڭ تەلىپىنى رەت قىلىش ياكى بىزگە ئۇنىڭ ئالاقە قىلمىغانلىقىنى ئۇقتۇرۇش ھوقۇقىڭىز بار。",
"thankYouFeedback": "پىكىر بەرگىنىڭىزگە رەھمەت، ئاخىرقى نەتىجىنىمۇ بىزگە ئۇقتۇرۇپ قويسىڭىز بەكمۇ خۇشال بولىمىز.",
"marriageSuccess": "بىز ئۆزئارا كېلىشتۇق",
"marriageFailure": "بىز ئۆزئارا كېلىشەلمىدۇق",
"outcomeTitle": "ئالاقىڭىزنىڭ نەتىجىسى قانداق بولدى؟"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/ur.json

@ -23,7 +23,10 @@
"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": "دیگر",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "سپورٹ سے رابطہ",
"supportDescription": "کسی بھی مسئلے کی صورت میں، واٹس ایپ پر ہمارے سپورٹ ماہرین سے رابطہ کریں",
"supportSwipeText": "رابطہ"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "رابطے کی تفصیل",
"contactDetailDescription": "براہ کرم کال کے دوران ذکر کریں کہ آپ کا تعارف حبیب میرج ایپ کے ذریعے کرایا گیا تھا۔",
"contactNotAvailable": "رابطے کی معلومات ابھی دستیاب نہیں ہیں۔"
"contactNotAvailable": "رابطے کی معلومات ابھی دستیاب نہیں ہیں۔",
"contactWarning": "براہ کرم مطلع رہیں کہ اس تعارف کے وقت سے، آپ کے پاس اپنی تیاری کا اعلان کرنے اور جان پہچان کا عمل شروع کرنے کے لیے اس شخص یا ان کے معزز خاندان سے رابطہ کرنے کے لیے 48 گھنٹے (2 دن) کا وقت ہے۔ اس مرحلے پر، اپنی موجودگی کا اعلان کرنے کے لیے صرف ایک ابتدائی کال ہی کافی ہے، اور اگلے مراحل کی منصوبہ بندی (جیسے آمنے سامنے ملاقات) مکمل طور پر آپ کے بعد کے باہمی معاہدوں پر بھی منحصر ہے۔\n\nچونکہ مقررہ وقت کے اندر رابطہ کرنے میں ناکامی کو سماجی طور پر بے ادبی سمجھا جا سکتا ہے، اگر ان 2 دنوں کے اندر کوئی کارروائی نہیں کی گئی تو متعارف کرایا گیا میچ پلیٹ فارم کے قوانین کے مطابق ہٹا جائے گا۔ ہم آپ کو یہ بھی یاد دلاتے ہیں کہ اس مسئلے کی وجہ سے مستقبل کے تعارف میں تاخیر اور مالی جرمانے جیسی پابندیاں لگ سکتی ہیں۔"
},
"findingMatch": {
"title": "آپ کی تلاش فعال ہے",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "رابطے کی تصدیق کریں",
"noContactYet": "رابطہ نہ ہونے کی رپورٹ",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "عمل کو آسانی سے جاری رکھنے کے لیے، دوسرے فریق کے پاس آپ یا آپ کے خاندان سے ابتدائی رابطہ کرنے کے لیے 48 گھنٹے (2 دن) کا وقت ہے۔ اگر 2 دن کے بعد کوئی رابطہ قائم نہیں ہوتا ہے، تو آپ کے پاس اس کی درخواست کو مسترد کرنے یا ہمیں مطلع کرنے کا اختیار ہے کہ اس نے رابطہ نہیں کیا ہے۔",
"thankYouFeedback": "فیڈ بیک دینے کا شکریہ، ہمیں بہت خوشی ہوگی اگر آپ ہمیں حتمی نتیجہ بھی بتائیں۔",
"marriageSuccess": "ہماری باہمی رضامندی ہو گئی",
"marriageFailure": "ہماری باہمی رضامندی نہیں ہو سکی",
"outcomeTitle": "آپ کے رابطے کا کیا نتیجہ رہا?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/uz.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "Boshqa",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "Qo'llab-quvvatlash bilan bog'lanish",
"supportDescription": "Muammoga duch kelsangiz, WhatsApp orqali qo'llab-quvvatlash mutaxassislarimiz bilan bog'laning",
"supportSwipeText": "Aloqa"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "Aloqa ma'lumotlari",
"contactDetailDescription": "Iltimos, qo'ng'iroq paytida sizni Habib Marriage ilovasi orqali tanishtirishganini aytib o'ting.",
"contactNotAvailable": "Aloqa ma'lumotlari hali mavjud emas."
"contactNotAvailable": "Aloqa ma'lumotlari hali mavjud emas.",
"contactWarning": "Eslatib o'tamiz, ushbu tanishtiruv vaqtidan boshlab, tayyor ekanligingizni bildirish va tanishish jarayonini boshlash uchun ushbu shaxs yoki uning hurmatli oilasi bilan bog'lanish uchun 48 soat (2 kun) vaqtingiz bor. Ushbu bosqichda faqat mavjudligingizni bildirish va keyingi qadamlarni rejalashtirish (masalan, yuzma-yuz uchrashuv) to'liq sizning keyingi o'zaro kelishuvlaringizga bog'liq.\n\nBelgilangan vaqt ichida bog'lanmaslik ijtimoiy jihatdan hurmatsizlik deb hisoblanishi mumkinligi sababli, agar ushbu 2 kun ichida hech qanday chora ko'rilmasa, taqdim etilgan moslik platforma qoidalariga muvofiq o'chirib tashlanadi. Shuningdek, ushbu muammo kelajakdagi tanishtirishlarning kechikishi va moliyaviy jarimalar kabi cheklovlarga olib kelishi mumkinligini eslatib o'tamiz."
},
"findingMatch": {
"title": "QIDIRUVINGIZ FAOLLASHTIRILDI",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "Aloqani tasdiqlash",
"noContactYet": "Aloqa yo'qligi haqida hisobot",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "Jarayon muammosiz davom etishi uchun qarshi tomonda siz yoki oilangiz bilan dastlabki aloqani o'rnatish uchun 48 soatlik (2 kunlik) vaqt bor. Agar 2 kundan keyin aloqa o'rnatilmasa, sizda uning so'rovini rad etish yoki bizga uning bog'lanmagani haqida xabar berish imkoniyati mavjud.",
"thankYouFeedback": "Fikr-mulohazalaringiz uchun rahmat, yakuniy natijani ham bizga ma'lum qilsangiz juda xursand bo'lamiz.",
"marriageSuccess": "Biz kelishuvga erishdik",
"marriageFailure": "Biz kelishuvga erisha olmadik",
"outcomeTitle": "Aloqangizning natijasi nima bo'ldi?"
},
"sheets": {
"informationSheet": "Information sheet",

18
src/translations/locales/zh.json

@ -23,7 +23,10 @@
"previousPage": "Previous Page",
"itemsPerPage": "Items Per Page",
"other": "其他",
"consultation": "Consultation"
"consultation": "Consultation",
"supportTitle": "联系支持",
"supportDescription": "如果遇到任何问题,请随时通过 WhatsApp 联系我们的支持专家",
"supportSwipeText": "联系"
},
"intro": {
"imageAlt": "heavenly marriage",
@ -152,7 +155,8 @@
"actionPayAndGetContact": "Pay & Get Contact",
"contactDetailTitle": "联系详情",
"contactDetailDescription": "请在通话中说明您是通过 Habib Marriage 应用程序介绍的。",
"contactNotAvailable": "联系信息暂不可用。"
"contactNotAvailable": "联系信息暂不可用。",
"contactWarning": "请知悉,自本次介绍之日起,您有48小时(2天)的时间与该人或其尊敬的家人联系,以声明您的意愿并开始了解过程。在此阶段,仅进行初步的电话联系以表明您的存在即可,而进一步步骤的规划(例如面对面会面)则完全取决于您随后的双方协议。\n\n由于未能在规定时间内取得联系可能会被视为在社交上不礼貌,如果在这2天内未采取任何行动,介绍的配对将根据平台的规则被移除。我们还提醒您,此问题可能会导致限制,例如未来介绍 of 延迟和资金处罚。"
},
"findingMatch": {
"title": "您的搜寻正在进行中",
@ -165,10 +169,14 @@
"candidateContact": {
"imageAlt": "Selected candidate contact status",
"title": "The selected candidate will contact your family shortly.",
"contacted": "contacted",
"noContactYet": "no contact yet ?",
"contacted": "确认已联系",
"noContactYet": "报告未联系",
"afterTwoDays": "(after 2 days)",
"contactWarning": "If they don't contact you within 2 days, please inform us."
"contactWarning": "为了使流程顺利进行,对方有48小时(2天)的时间与您或您的家人进行初步联系。如果2天后未建立联系,您可以选择拒绝其请求或通知我们其未取得联系。",
"thankYouFeedback": "感谢您给我们反馈,如果您能把最终结果也告诉我们,我们将非常高兴。",
"marriageSuccess": "我们达成了一致",
"marriageFailure": "我们未达成一致",
"outcomeTitle": "您们的联系结果如何?"
},
"sheets": {
"informationSheet": "Information sheet",

Loading…
Cancel
Save