Browse Source

fix(staging): fix backend container hostname in docker-compose, resolve overlay mount race condition, and unblock mobile intro submit

staging
Muhammad A. Ghorbani 2 weeks ago
parent
commit
db6638d3ac
  1. 2
      docker-compose.staging.yml
  2. 4
      src/app/intro/intro-client.tsx
  3. 105
      src/app/request-accepted/request-accepted-client.tsx
  4. 4
      src/components/Componentes/female-consent-sheet.tsx
  5. 18
      src/components/Componentes/section-overlay-host.tsx
  6. 8
      src/translations/locales/ar.json
  7. 8
      src/translations/locales/az.json
  8. 8
      src/translations/locales/bn.json
  9. 8
      src/translations/locales/da.json
  10. 8
      src/translations/locales/de.json
  11. 8
      src/translations/locales/en.json
  12. 8
      src/translations/locales/es.json
  13. 8
      src/translations/locales/fa.json
  14. 8
      src/translations/locales/fr.json
  15. 8
      src/translations/locales/gu.json
  16. 8
      src/translations/locales/ha.json
  17. 8
      src/translations/locales/he.json
  18. 8
      src/translations/locales/hi.json
  19. 8
      src/translations/locales/id.json
  20. 8
      src/translations/locales/ks.json
  21. 8
      src/translations/locales/pt.json
  22. 8
      src/translations/locales/ru.json
  23. 8
      src/translations/locales/sw.json
  24. 8
      src/translations/locales/tg.json
  25. 8
      src/translations/locales/tr.json
  26. 8
      src/translations/locales/ul.json
  27. 8
      src/translations/locales/ur.json
  28. 8
      src/translations/locales/uz.json
  29. 8
      src/translations/locales/zh.json

2
docker-compose.staging.yml

@ -16,7 +16,7 @@ services:
environment:
- NODE_ENV=production
- NEXT_PUBLIC_API_BASE_URL=https://habib.nwhco.ir
- API_BASE_URL=http://web:8000
- API_BASE_URL=http://najm_staging_web:8000
- NEXT_PUBLIC_SECURITY_KEY=t5yugymks5458fd4ghfg6h6fg
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/healthz"]

4
src/app/intro/intro-client.tsx

@ -246,10 +246,10 @@ export default function IntroClient() {
/>
</>
)}
<div className="pointer-events-none fixed bottom-0 left-1/2 z-20 w-full max-w-[834px] -translate-x-1/2 bg-[#F5F5F5]">
<div className="fixed bottom-0 left-1/2 z-20 w-full max-w-[834px] -translate-x-1/2 bg-[#F5F5F5]">
<div
style={{ paddingBottom: "calc(20px + var(--safe-bottom))" }}
className="pointer-events-auto px-[17px] md:px-8 pt-3"
className="px-[17px] md:px-8 pt-3"
>
<Button
onClick={handleSubmit}

105
src/app/request-accepted/request-accepted-client.tsx

@ -98,6 +98,7 @@ function isMarriagePhoneFieldValue(
function getContactInfoPhoneItems(
contactInfoFields: any[] | null | undefined,
t?: Record<string, string>,
): ContactInfoPhoneItem[] {
if (!contactInfoFields || !Array.isArray(contactInfoFields)) {
return [];
@ -117,7 +118,6 @@ function getContactInfoPhoneItems(
f.value,
);
const repName = repNameField?.value ? String(repNameField.value).trim() : "";
const repRelation = repRelationField?.value
? String(repRelationField.value).trim()
: "";
@ -154,20 +154,66 @@ function getContactInfoPhoneItems(
}
const key = String(field.key || "");
const rawLabel = String(field.label || field.key || "");
let label = rawLabel
let rawLabel = String(field.label || field.key || "").trim();
// Clean up common boilerplate
rawLabel = rawLabel
.replace(/\s+with\s+Country\s+Code/gi, "")
.replace(/\s+با\s+کد\s+کشور/g, "")
.trim();
// Add representative context to label if applicable
if (key.includes("representative")) {
const contextParts = [repRelation, repName].filter(Boolean);
if (contextParts.length > 0 && !label.includes(contextParts[0])) {
label = `${label} (${contextParts.join(" - ")})`;
// Extract relation if present inside parentheses e.g. (Relation: Father), (relation Father), (نسبت: پدر), (Father), (پدر)
let extractedRelation = "";
const parenMatch = rawLabel.match(/\((?:relation|نسبت)?[:\s-]*([^)]+)\)/i);
if (parenMatch) {
extractedRelation = parenMatch[1].trim();
} else if (repRelation) {
extractedRelation = repRelation;
}
// Strip parentheses from rawLabel to determine base label
let baseLabel = rawLabel.replace(/\([^)]*\)/g, "").trim();
const isRep =
key.toLowerCase().includes("representative") ||
baseLabel.toLowerCase().includes("representative") ||
baseLabel.includes("رابط");
const isPersonal =
key.toLowerCase().includes("personal") ||
baseLabel.toLowerCase().includes("direct") ||
baseLabel.toLowerCase().includes("personal") ||
baseLabel.includes("مستقیم") ||
baseLabel.includes("شخصی");
let finalBase = baseLabel;
if (t) {
if (isRep) {
finalBase =
t["Representative's Contact Number"] ||
t["Representative's Phone"] ||
baseLabel;
} else if (isPersonal) {
finalBase =
t["Personal Contact Number"] ||
t["Direct Contact Number (Candidate)"] ||
baseLabel;
} else if (t[baseLabel]) {
finalBase = t[baseLabel];
}
}
let label = finalBase;
if (isRep && extractedRelation) {
// Strip any residual prefix like "relation" or "نسبت:"
const cleanRel = extractedRelation
.replace(/^(?:relation|نسبت)[:\s-]*/i, "")
.trim();
// Translate relation if translated string is available in dictionary
const translatedRel = (t && t[cleanRel]) || cleanRel;
label = `${finalBase} (${translatedRel})`;
}
return {
key: key || phoneNumber,
label,
@ -177,7 +223,15 @@ function getContactInfoPhoneItems(
.filter((item): item is ContactInfoPhoneItem => item !== null);
}
function ContactInfoPhoneCard({ item }: { item: ContactInfoPhoneItem }) {
function ContactInfoPhoneCard({
item,
copyText,
copiedText,
}: {
item: ContactInfoPhoneItem;
copyText?: string;
copiedText?: string;
}) {
const [isCopied, setIsCopied] = useState(false);
const handleCopy = async () => {
@ -192,6 +246,10 @@ function ContactInfoPhoneCard({ item }: { item: ContactInfoPhoneItem }) {
}
};
const actionText = isCopied
? copiedText || "Copied"
: copyText || "Copy";
return (
<div className="flex items-center justify-between rounded-[20px] bg-[#FFF5F6] border border-[#FFE4E8] px-5 py-4 shadow-sm transition-all hover:border-[#FFD0D8]">
<div className="text-start min-w-0 flex-1 pe-3">
@ -206,8 +264,8 @@ function ContactInfoPhoneCard({ item }: { item: ContactInfoPhoneItem }) {
<button
type="button"
onClick={handleCopy}
title="Copy"
aria-label="Copy phone number"
title={actionText}
aria-label={actionText}
className="size-[44px] rounded-[14px] bg-[linear-gradient(180deg,#F0445B_0%,#F54B64_100%)] text-white flex items-center justify-center shrink-0 shadow-[0_4px_12px_rgba(240,68,91,0.25)] active:scale-[0.90] transition-all duration-150 cursor-pointer hover:opacity-95"
>
{isCopied ? (
@ -315,7 +373,7 @@ export default function RequestAcceptedClient() {
(caseStatus === "payment_done" || caseStatus === "contacted");
const contactInfoQuery = useMarriageContactInfoQuery(caseId, {
enabled: false,
enabled: Boolean(caseId) && isMalePaymentDone,
});
const titleText = isFemaleProfile
@ -336,6 +394,7 @@ export default function RequestAcceptedClient() {
: t["Pay and get contact"];
const contactInfoPhoneItems = getContactInfoPhoneItems(
contactInfoQuery.data?.contact_info,
t,
);
const handlePrimaryAction = () => {
@ -362,16 +421,18 @@ export default function RequestAcceptedClient() {
return;
}
setIsContactInfoSheetOpen(true);
if (!contactInfoQuery.data) {
try {
setIsFetchingContact(true);
await contactInfoQuery.refetch();
} catch (error) {
console.error("Failed to fetch contact info:", error);
} finally {
setIsFetchingContact(false);
}
}
setIsContactInfoSheetOpen(true);
}
};
@ -560,10 +621,22 @@ export default function RequestAcceptedClient() {
]
}
buttons={
contactInfoPhoneItems.length ? (
(contactInfoQuery.isLoading || isFetchingContact) && !contactInfoPhoneItems.length ? (
<div className="flex flex-col items-center justify-center py-6 gap-2">
<LoadingBorderSpinner size="md" variant="primary" />
<span className="text-xs text-[#64748B] font-medium">
{t["Loading..."]}
</span>
</div>
) : contactInfoPhoneItems.length ? (
<div className="space-y-4">
{contactInfoPhoneItems.map((item) => (
<ContactInfoPhoneCard key={item.key} item={item} />
<ContactInfoPhoneCard
key={item.key}
item={item}
copyText={t["Copy"]}
copiedText={t["Copied"]}
/>
))}
</div>
) : (

4
src/components/Componentes/female-consent-sheet.tsx

@ -123,12 +123,12 @@ export function FemaleConsentSheet({
<button
type="button"
onClick={closeSheet}
aria-label="Close"
aria-label={t["Close"] || "Close"}
className="items-center justify-center rounded-full text-[#A0A0A0]"
>
<Image
src={"/assets/images/Vecfadsftor.svg"}
alt="close"
alt={t["Close"] || "close"}
width={18}
height={18}
/>

18
src/components/Componentes/section-overlay-host.tsx

@ -70,17 +70,11 @@ export function SectionOverlayHost({
setActiveChild(children);
}
const frame = requestAnimationFrame(() => {
setState("open");
if (typeof document !== "undefined") {
document.body.classList.add("section-overlay-open");
}
});
return () => cancelAnimationFrame(frame);
}
// When closing from open state
if (wasOpen && mounted && !isClosingRef.current) {
setState("open");
if (typeof document !== "undefined") {
document.body.classList.add("section-overlay-open");
}
} else if (wasOpen && !isClosingRef.current) {
isClosingRef.current = true;
setState("closing");
if (typeof document !== "undefined") {
@ -97,7 +91,7 @@ export function SectionOverlayHost({
closeTimerRef.current = null;
}, REVERSE_DURATION_MS);
}
}, [open, children, mounted, premount]);
}, [open, children, premount]);
useEffect(() => {
return () => {

8
src/translations/locales/ar.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "يرجى تقديم السبب الكامل لرفض العنصر المرسل",
"Swipe to confirm decline": "اسحب لتأكيد الرفض",
"Your request was declined": "تم رفض طلبك",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "تم رفض طلبك من قبل السيدة. سيتم تقديم مرشحين آخرين لك في المستقبل."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "تم رفض طلبك من قبل السيدة. سيتم تقديم مرشحين آخرين لك في المستقبل.",
"Copy": "نسخ",
"Copied": "تم النسخ",
"Representative's Phone": "رقم هاتف الممثل",
"Direct Contact Number (Candidate)": "رقم الاتصال المباشر (المرشحة)"
}

8
src/translations/locales/az.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Zəhmət olmasa, təqdim edilmiş elementdən imtina etməyin tam səbəbini göstərin",
"Swipe to confirm decline": "İmtinanı təsdiqləmək üçün sürüşdürün",
"Your request was declined": "Sorğunuz rədd edildi",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Sorğunuz xanım tərəfindən rədd edildi. Gələcəkdə digər namizədlərlə tanış olacaqsınız."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Sorğunuz xanım tərəfindən rədd edildi. Gələcəkdə digər namizədlərlə tanış olacaqsınız.",
"Copy": "Kopyala",
"Copied": "Kopyalandı",
"Representative's Phone": "Nümayəndənin telefonu",
"Direct Contact Number (Candidate)": "Birbaşa əlaqə nömrəsi (Namizəd)"
}

8
src/translations/locales/bn.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "জমা দেওয়া আইটেম প্রত্যাখ্যান করার জন্য সম্পূর্ণ কারণ প্রদান করুন",
"Swipe to confirm decline": "প্রত্যাখ্যান নিশ্চিত করতে সোয়াইপ করুন",
"Your request was declined": "আপনার অনুরোধ প্রত্যাখ্যান করা হয়েছে",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "আপনার অনুরোধ ভদ্রমহিলা দ্বারা প্রত্যাখ্যান করা হয়েছে. ভবিষ্যতে আপনাকে অন্যান্য প্রার্থীদের সাথে পরিচয় করিয়ে দেওয়া হবে।"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "আপনার অনুরোধ ভদ্রমহিলা দ্বারা প্রত্যাখ্যান করা হয়েছে. ভবিষ্যতে আপনাকে অন্যান্য প্রার্থীদের সাথে পরিচয় করিয়ে দেওয়া হবে।",
"Copy": "কপি করুন",
"Copied": "কপি করা হয়েছে",
"Representative's Phone": "প্রতিনিধির ফোন",
"Direct Contact Number (Candidate)": "সরাসরি যোগাযোগের নম্বর (প্রার্থী)"
}

8
src/translations/locales/da.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Angiv den fulde årsag til at afvise den indsendte vare",
"Swipe to confirm decline": "Stryg for at bekræfte afvisningen",
"Your request was declined": "Din anmodning blev afvist",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Din anmodning blev afvist af damen. Du vil blive præsenteret for andre kandidater i fremtiden."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Din anmodning blev afvist af damen. Du vil blive præsenteret for andre kandidater i fremtiden.",
"Copy": "Kopier",
"Copied": "Kopieret",
"Representative's Phone": "Repræsentantens telefon",
"Direct Contact Number (Candidate)": "Direkte kontaktnummer (Kandidat)"
}

8
src/translations/locales/de.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Bitte geben Sie den vollständigen Grund für die Ablehnung des eingereichten Artikels an",
"Swipe to confirm decline": "Wischen Sie, um die Ablehnung zu bestätigen",
"Your request was declined": "Ihre Anfrage wurde abgelehnt",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ihre Anfrage wurde von der Dame abgelehnt. Sie werden in Zukunft anderen Kandidaten vorgestellt."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ihre Anfrage wurde von der Dame abgelehnt. Sie werden in Zukunft anderen Kandidaten vorgestellt.",
"Copy": "Kopieren",
"Copied": "Kopiert",
"Representative's Phone": "Telefon des Vertreters",
"Direct Contact Number (Candidate)": "Direkte Kontaktnummer (Kandidatin)"
}

8
src/translations/locales/en.json

@ -2061,5 +2061,9 @@
"Please provide the full reason for declining the submitted item": "Please provide the full reason for declining the submitted item",
"Swipe to confirm decline": "Swipe to confirm decline",
"Your request was declined": "Your request was declined",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Your request was declined by the lady. You will be introduced to other candidates in the future."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Your request was declined by the lady. You will be introduced to other candidates in the future.",
"Copy": "Copy",
"Copied": "Copied",
"Representative's Phone": "Representative's Phone",
"Direct Contact Number (Candidate)": "Direct Contact Number (Candidate)"
}

8
src/translations/locales/es.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Proporcione el motivo completo por el que rechazó el artículo enviado.",
"Swipe to confirm decline": "Desliza para confirmar el rechazo",
"Your request was declined": "Su solicitud fue rechazada",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Su solicitud fue rechazada por la señora. Se le presentarán otros candidatos en el futuro."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Su solicitud fue rechazada por la señora. Se le presentarán otros candidatos en el futuro.",
"Copy": "Copiar",
"Copied": "Copiado",
"Representative's Phone": "Teléfono del representante",
"Direct Contact Number (Candidate)": "Número de contacto directo (Candidata)"
}

8
src/translations/locales/fa.json

@ -2081,5 +2081,9 @@
"Please provide the full reason for declining the submitted item": "لطفا دلیل کامل رد کردن مورد ارسال‌شده را بنویسید",
"Swipe to confirm decline": "جهت تایید رد کردن، به راست بکشید",
"Your request was declined": "درخواست شما رد شد",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "درخواست شما توسط خانم رد شد. به شما مورد های دیگه ای در اینده معرفی خواهد شد."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "درخواست شما توسط خانم رد شد. به شما مورد های دیگه ای در اینده معرفی خواهد شد.",
"Copy": "کپی",
"Copied": "کپی شد",
"Representative's Phone": "شماره تماس رابط",
"Direct Contact Number (Candidate)": "شماره مستقیم خانم"
}

8
src/translations/locales/fr.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Veuillez fournir la raison complète pour décliner l'élément soumis",
"Swipe to confirm decline": "Glissez pour confirmer le refus",
"Your request was declined": "Votre demande a été déclinée",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Votre demande a été déclinée par la dame. D'autres candidats vous seront présentés à l'avenir."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Votre demande a été déclinée par la dame. D'autres candidats vous seront présentés à l'avenir.",
"Copy": "Copier",
"Copied": "Copié",
"Representative's Phone": "Téléphone du représentant",
"Direct Contact Number (Candidate)": "Numéro de contact direct (Candidate)"
}

8
src/translations/locales/gu.json

@ -2084,5 +2084,9 @@
"Please provide the full reason for declining the submitted item": "કૃપા કરીને સબમિટ કરેલી આઇટમ નકારવા માટેનું સંપૂર્ણ કારણ પ્રદાન કરો",
"Swipe to confirm decline": "નકારવાની પુષ્ટિ કરવા માટે સ્વાઇપ કરો",
"Your request was declined": "તમારી વિનંતી નકારી હતી",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "તમારી વિનંતી મહિલા દ્વારા નકારી કાઢવામાં આવી હતી. ભવિષ્યમાં તમારો પરિચય અન્ય ઉમેદવારો સાથે કરવામાં આવશે."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "તમારી વિનંતી મહિલા દ્વારા નકારી કાઢવામાં આવી હતી. ભવિષ્યમાં તમારો પરિચય અન્ય ઉમેદવારો સાથે કરવામાં આવશે.",
"Copy": "કૉપિ કરો",
"Copied": "કૉપિ થઈ ગયું",
"Representative's Phone": "પ્રતિનિધિનો ફોન",
"Direct Contact Number (Candidate)": "સીધો સંપર્ક નંબર (ઉમેદવાર)"
}

8
src/translations/locales/ha.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "Da fatan za a ba da cikakken dalilin ƙi abin da aka ƙaddamar",
"Swipe to confirm decline": "Dokewa don tabbatar da ƙi",
"Your request was declined": "An ƙi buƙatar buƙatar ku",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Uwargidan ta ki amincewa da bukatar ku. Za a gabatar muku da sauran 'yan takara nan gaba."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Uwargidan ta ki amincewa da bukatar ku. Za a gabatar muku da sauran 'yan takara nan gaba.",
"Copy": "Kwafi",
"Copied": "An kwafi",
"Representative's Phone": "Lambar wakili",
"Direct Contact Number (Candidate)": "Lambar sadarwa kai tsaye (Kandidat)"
}

8
src/translations/locales/he.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "אנא ספק את הסיבה המלאה לדחיית הפריט שנשלח",
"Swipe to confirm decline": "החלק כדי לאשר את הדחייה",
"Your request was declined": "בקשתך נדחתה",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "הבקשה שלך נדחתה על ידי הגברת. תוצג בפניכם מועמדים אחרים בעתיד."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "הבקשה שלך נדחתה על ידי הגברת. תוצג בפניכם מועמדים אחרים בעתיד.",
"Copy": "העתק",
"Copied": "הועתק",
"Representative's Phone": "טלפון של הנציג",
"Direct Contact Number (Candidate)": "מספר קשר ישיר (מועמדת)"
}

8
src/translations/locales/hi.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "कृपया सबमिट किए गए आइटम को अस्वीकार करने का पूरा कारण बताएं",
"Swipe to confirm decline": "अस्वीकार करने की पुष्टि के लिए स्वाइप करें",
"Your request was declined": "आपका अनुरोध अस्वीकार कर दिया गया",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "आपका अनुरोध महिला द्वारा अस्वीकार कर दिया गया। भविष्य में आपको अन्य उम्मीदवारों से मिलवाया जाएगा।"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "आपका अनुरोध महिला द्वारा अस्वीकार कर दिया गया। भविष्य में आपको अन्य उम्मीदवारों से मिलवाया जाएगा।",
"Copy": "कॉपी करें",
"Copied": "कॉपी हो गया",
"Representative's Phone": "प्रतिनिधि का फ़ोन",
"Direct Contact Number (Candidate)": "सीधा संपर्क नंबर (उम्मीदवार)"
}

8
src/translations/locales/id.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Harap berikan alasan lengkap penolakan item yang dikirimkan",
"Swipe to confirm decline": "Geser untuk mengonfirmasi penolakan",
"Your request was declined": "Permintaan Anda ditolak",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Permintaan Anda ditolak oleh wanita itu. Anda akan diperkenalkan dengan kandidat lain di masa mendatang."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Permintaan Anda ditolak oleh wanita itu. Anda akan diperkenalkan dengan kandidat lain di masa mendatang.",
"Copy": "Salin",
"Copied": "Tersalin",
"Representative's Phone": "Telepon Perwakilan",
"Direct Contact Number (Candidate)": "Nomor Kontak Langsung (Kandidat)"
}

8
src/translations/locales/ks.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "براہ کرم جمع کردہ آئٹم کو مسترد کرنے کی پوری وجہ فراہم کریں۔",
"Swipe to confirm decline": "انکار کی تصدیق کے لیے سوائپ کریں۔",
"Your request was declined": "آپ کی درخواست مسترد کر دی گئی۔",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔",
"Copy": "کاپي کٔریو",
"Copied": "کاپي سپُد",
"Representative's Phone": "نمائندہ سُنٛد فون",
"Direct Contact Number (Candidate)": "براہ راست رابطہ نمبر (امیدوار)"
}

8
src/translations/locales/pt.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Forneça o motivo completo para recusar o item enviado",
"Swipe to confirm decline": "Deslize para confirmar a recusa",
"Your request was declined": "Sua solicitação foi recusada",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Seu pedido foi recusado pela senhora. Você será apresentado a outros candidatos no futuro."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Seu pedido foi recusado pela senhora. Você será apresentado a outros candidatos no futuro.",
"Copy": "Copiar",
"Copied": "Copiado",
"Representative's Phone": "Telefone do representante",
"Direct Contact Number (Candidate)": "Número de contato direto (Candidata)"
}

8
src/translations/locales/ru.json

@ -2078,5 +2078,9 @@
"Please provide the full reason for declining the submitted item": "Пожалуйста, укажите полную причину отказа",
"Swipe to confirm decline": "Проведите для подтверждения отказа",
"Your request was declined": "Ваш запрос был отклонен",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ваш запрос был отклонен кандидатом. В будущем вам будут предложены другие кандидаты."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ваш запрос был отклонен кандидатом. В будущем вам будут предложены другие кандидаты.",
"Copy": "Копировать",
"Copied": "Скопировано",
"Representative's Phone": "Телефон представителя",
"Direct Contact Number (Candidate)": "Прямой номер телефона (Кандидат)"
}

8
src/translations/locales/sw.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Tafadhali toa sababu kamili ya kukataa kipengee kilichowasilishwa",
"Swipe to confirm decline": "Telezesha kidole ili kuthibitisha kukataa",
"Your request was declined": "Ombi lako limekataliwa",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ombi lako limekataliwa na mhusika. Utatambulishwa kwa watahiniwa wengine katika siku zijazo."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Ombi lako limekataliwa na mhusika. Utatambulishwa kwa watahiniwa wengine katika siku zijazo.",
"Copy": "Nakili",
"Copied": "Imenakiliwa",
"Representative's Phone": "Simu ya mwakilishi",
"Direct Contact Number (Candidate)": "Nambari ya mawasiliano ya moja kwa moja (Mgombea)"
}

8
src/translations/locales/tg.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Лутфан сабаби пурраи рад кардани ашёи пешниҳодшударо нишон диҳед",
"Swipe to confirm decline": "Барои тасдиқи радд лағжед",
"Your request was declined": "Дархости шумо рад карда шуд",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Дархости шумо аз ҷониби хонум рад карда шуд. Шумо дар оянда бо дигар номзадҳо шинос мешавед."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Дархости шумо аз ҷониби хонум рад карда шуд. Шумо дар оянда бо дигар номзадҳо шинос мешавед.",
"Copy": "Нусхабардорӣ",
"Copied": "Нусхабардорӣ шуд",
"Representative's Phone": "Телефони намоянда",
"Direct Contact Number (Candidate)": "Рақами тамоси мустақим (Номзад)"
}

8
src/translations/locales/tr.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Lütfen geri çevirme nedeninizi ayrıntılı olarak belirtin",
"Swipe to confirm decline": "Geri çevirmeyi onaylamak için kaydırın",
"Your request was declined": "Talebiniz geri çevrildi",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Talebiniz hanımefendi tarafından geri çevrildi. Gelecekte size başka adaylar tanıtılacaktır."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Talebiniz hanımefendi tarafından geri çevrildi. Gelecekte size başka adaylar tanıtılacaktır.",
"Copy": "Kopyala",
"Copied": "Kopyalandı",
"Representative's Phone": "Temsilcinin Telefonu",
"Direct Contact Number (Candidate)": "Doğrudan İletişim Numarası (Aday)"
}

8
src/translations/locales/ul.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "براہ کرم جمع کردہ آئٹم کو مسترد کرنے کی پوری وجہ فراہم کریں۔",
"Swipe to confirm decline": "انکار کی تصدیق کے لیے سوائپ کریں۔",
"Your request was declined": "آپ کی درخواست مسترد کر دی گئی۔",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔",
"Copy": "کاپي کول",
"Copied": "کاپي شو",
"Representative's Phone": "د استازي تلیفون",
"Direct Contact Number (Candidate)": "د مستقیم تماس شمیره (کاندیده)"
}

8
src/translations/locales/ur.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "براہ کرم جمع کردہ آئٹم کو مسترد کرنے کی پوری وجہ فراہم کریں۔",
"Swipe to confirm decline": "انکار کی تصدیق کے لیے سوائپ کریں۔",
"Your request was declined": "آپ کی درخواست مسترد کر دی گئی۔",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "آپ کی درخواست کو خاتون نے مسترد کر دیا تھا۔ مستقبل میں آپ کو دوسرے امیدواروں سے متعارف کرایا جائے گا۔",
"Copy": "کاپی کریں",
"Copied": "کاپی ہو گیا",
"Representative's Phone": "نمائندے کا فون",
"Direct Contact Number (Candidate)": "براہ راست رابطہ نمبر (امیدوار)"
}

8
src/translations/locales/uz.json

@ -2347,5 +2347,9 @@
"Please provide the full reason for declining the submitted item": "Iltimos, yuborilgan elementni rad etishning to'liq sababini ko'rsating",
"Swipe to confirm decline": "Rad etishni tasdiqlash uchun suring",
"Your request was declined": "Sizning so'rovingiz rad etildi",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Sizning so'rovingiz ayol tomonidan rad etildi. Siz kelajakda boshqa nomzodlar bilan tanishasiz."
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "Sizning so'rovingiz ayol tomonidan rad etildi. Siz kelajakda boshqa nomzodlar bilan tanishasiz.",
"Copy": "Nusxa olish",
"Copied": "Nusxa olindi",
"Representative's Phone": "Vakil telefoni",
"Direct Contact Number (Candidate)": "To'g'ridan-to'g'ri aloqa raqami (Nomzod)"
}

8
src/translations/locales/zh.json

@ -2082,5 +2082,9 @@
"Please provide the full reason for declining the submitted item": "请提供婉拒此项目的完整原因",
"Swipe to confirm decline": "滑动以确认婉拒",
"Your request was declined": "您的请求已被婉拒",
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "女士已婉拒了您的请求。未来系统将为您推荐其他候选人。"
}
"Your request was declined by the lady. You will be introduced to other candidates in the future.": "女士已婉拒了您的请求。未来系统将为您推荐其他候选人。",
"Copy": "复制",
"Copied": "已复制",
"Representative's Phone": "代表电话",
"Direct Contact Number (Candidate)": "直接联系电话(候选人)"
}
Loading…
Cancel
Save