diff --git a/src/app/marriage-advisors/page.tsx b/src/app/marriage-advisors/page.tsx index 32823f8..fbe5d1d 100644 --- a/src/app/marriage-advisors/page.tsx +++ b/src/app/marriage-advisors/page.tsx @@ -21,7 +21,9 @@ type MarriageAdvisorsPageProps = { onClose?: () => void; }; -export default function MarriageAdvisorsPage({ onClose }: MarriageAdvisorsPageProps = {}) { +export default function MarriageAdvisorsPage({ + onClose, +}: MarriageAdvisorsPageProps = {}) { const { dictionary: t } = useI18n(); const [isSupportOpen, setIsSupportOpen] = useState(false); @@ -105,11 +107,6 @@ export default function MarriageAdvisorsPage({ onClose }: MarriageAdvisorsPagePr key={advisor.username} advisor={advisor} onOpen={() => openConsultantPage(advisor.username)} - onContact={() => setIsSupportOpen(true)} - contactLabels={{ - text: t["Text"] || "Text", - voice: t["Voice Call"] || "Voice Call", - }} /> ))} @@ -126,17 +123,20 @@ export default function MarriageAdvisorsPage({ onClose }: MarriageAdvisorsPagePr function AdvisorCard({ advisor, onOpen, - onContact, - contactLabels, }: { advisor: MarriageConsultant; onOpen: () => void; - onContact: () => void; - contactLabels: { text: string; voice: string }; }) { - const topics = advisor.topics.filter(Boolean); - const rating = Number(advisor.avg_rate ?? 0).toFixed(1); + const { dictionary: t, locale } = useI18n(); + const isRtl = locale === "fa" || locale === "ar" || locale === "ur"; + const unreadCount = advisor.unread_count ?? 0; const isOnline = advisor.status === "online"; + const rating = Number(advisor.avg_rate ?? 0); + const hasChat = advisor.contact_type?.includes("chat"); + const hasVoice = advisor.contact_type?.includes("voice"); + const hasVideo = advisor.contact_type?.includes("video"); + const hasActiveContact = hasChat || hasVoice || hasVideo; + const topics = advisor.topics?.filter(Boolean) ?? []; return (
- {/* Top Frame containing Left (Avatar + Info) and Right (Rating) and Actions */} -
- {/* Header Row */} -
- {/* Left part: Avatar + Info */} -
- {/* Avatar Container */} -
+ {/* Outer Card Container */} +
0 + ? "border border-[#ECA533]" + : "border border-[#EBEBEB]" + }`} + > +
+ {/* Header Row: Avatar + Info + Rating */} +
+ {/* Avatar with Status Dot */} +
{advisor.avatar_url ? ( - // Consultant avatars come from arbitrary media hosts, which - // are not all listed in next.config remotePatterns — a plain - // img with an onError fallback keeps them rendering. // eslint-disable-next-line @next/next/no-img-element {advisor.fullname { event.currentTarget.src = FALLBACK_AVATAR; }} /> ) : ( - {advisor.fullname - )} - {/* Status indicator dot */} - {isOnline && ( -
- - +
+ + +
)} + + {/* Status indicator dot badge (top-start) */} +
+
+
+
+
- {/* Name + Title Info */} -
-

- {advisor.fullname ?? advisor.username} -

-

+ {/* Consultant Info */} +

+
+ {advisor.is_ai && ( + + AI + + )} +

+ {advisor.fullname ?? advisor.username} +

+ {rating > 0 && ( +
+ + + + + {rating.toFixed(1)} + +
+ )} +
+

{advisor.slogan ?? ""}

- {/* Right part: Rating */} -
- - - {rating} - -
-
+ {/* Contact Chips */} + {hasActiveContact && ( +
+ {hasChat && ( +
+ + + + {t["Text Message"] || "Text Message"} +
+ )} - {/* Actions Row */} -
- {/* Text Contact Button */} - + {hasVoice && ( +
+ + + + {t["Voice Call"] || "Voice Call"} +
+ )} - {/* Voice Call Contact Button */} - + {hasVideo && ( +
+ + + + {t["Video Call"] || "Video Call"} +
+ )} +
+ )} + + {/* Topics Badges */} + {topics.length > 0 && ( + <> +
+
+ {topics.map((topic) => ( + + {topic} + + ))} +
+ + )}
- {/* Divider */} -
- - {/* Tags Section */} - {topics.length > 0 && ( -
-
- {topics.map((tag) => ( - - {tag} - - ))} -
+ {/* Floating Unread Badge at Top Corner */} + {unreadCount > 0 && ( +
+ {unreadCount} + + {t["New Message"] || "New Message"} +
)}
@@ -283,35 +349,27 @@ function AdvisorsSkeleton() { {[0, 1, 2].map((index) => (
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
))} diff --git a/src/app/new-match/new-match-client.tsx b/src/app/new-match/new-match-client.tsx index 2aff24c..5a4f9fc 100644 --- a/src/app/new-match/new-match-client.tsx +++ b/src/app/new-match/new-match-client.tsx @@ -152,6 +152,13 @@ function formatOptionValue( value: MarriageFieldValue, dictionary?: Record, ): string | null { + if (Array.isArray(value)) { + const formattedItems = value + .map((item) => formatOptionValue(item as MarriageFieldValue, dictionary)) + .filter(Boolean); + return formattedItems.length ? formattedItems.join(", ") : null; + } + const base = formatFieldValue(value); if (!base) return null; if (!dictionary) return base; @@ -201,7 +208,8 @@ function isMarriagePhoneFieldValue( } function titleFromKey(key: string) { - return key + const leafKey = key.includes(".") ? key.split(".").pop()! : key; + return leafKey .replace(/^q\d+[_-]?/i, "") .replace(/[_-]+/g, " ") .replace(/\s+/g, " ") @@ -209,6 +217,24 @@ function titleFromKey(key: string) { .replace(/\b\w/g, (letter) => letter.toUpperCase()); } +function formatFieldLabel( + field: MarriageField, + dictionary?: Record, +): string { + const englishTitle = titleFromKey(field.key); + if (!dictionary) return field.label || englishTitle; + + if (field.label && dictionary[field.label]) { + return dictionary[field.label]; + } + + if (dictionary[englishTitle]) { + return dictionary[englishTitle]; + } + + return field.label || englishTitle; +} + function toDisplayField( field: MarriageField, dictionary?: Record, @@ -221,7 +247,7 @@ function toDisplayField( return { id: field.key || field.label || value, - label: field.label || titleFromKey(field.key), + label: formatFieldLabel(field, dictionary), value, }; } diff --git a/src/app/new-match/profile/page.tsx b/src/app/new-match/profile/page.tsx index 5e1bc08..1731deb 100644 --- a/src/app/new-match/profile/page.tsx +++ b/src/app/new-match/profile/page.tsx @@ -26,6 +26,34 @@ import { markMatchStarted } from "@/lib/match-start-grace"; import { localizePath } from "@/translations/config"; import { useI18n } from "@/translations/provider"; +function formatOptionValue( + value: MarriageFieldValue, + dictionary?: Record, +): string | null { + if (Array.isArray(value)) { + const formattedItems = value + .map((item) => formatOptionValue(item as MarriageFieldValue, dictionary)) + .filter(Boolean); + return formattedItems.length ? formattedItems.join(", ") : null; + } + + const base = formatFieldValue(value); + if (!base) return null; + if (!dictionary) return base; + + if (dictionary[base]) return dictionary[base]; + + // Try replacing underscores with spaces: "single;_never_married" -> "single; never married" + const withSpaces = base.replace(/_/g, " ").trim(); + if (dictionary[withSpaces]) return dictionary[withSpaces]; + + // Try capitalized first letter: "Single; never married" + const capitalized = withSpaces.charAt(0).toUpperCase() + withSpaces.slice(1); + if (dictionary[capitalized]) return dictionary[capitalized]; + + return withSpaces; +} + function formatFieldValue(value: MarriageFieldValue) { if (value === null || value === "") { return null; @@ -58,7 +86,8 @@ function isMarriagePhoneFieldValue( } function titleFromKey(key: string) { - return key + const leafKey = key.includes(".") ? key.split(".").pop()! : key; + return leafKey .replace(/^q\d+[_-]?/i, "") .replace(/[_-]+/g, " ") .replace(/\s+/g, " ") @@ -66,6 +95,24 @@ function titleFromKey(key: string) { .replace(/\b\w/g, (letter) => letter.toUpperCase()); } +function formatFieldLabel( + field: MarriageField, + dictionary?: Record, +): string { + const englishTitle = titleFromKey(field.key); + if (!dictionary) return field.label || englishTitle; + + if (field.label && dictionary[field.label]) { + return dictionary[field.label]; + } + + if (dictionary[englishTitle]) { + return dictionary[englishTitle]; + } + + return field.label || englishTitle; +} + function isImageField(field: MarriageField) { return /(avatar|image|photo|picture|portrait|upload)/i.test( `${field.key} ${field.label}`, @@ -90,17 +137,19 @@ function canAcceptProfile( function MatchField({ field, isCandidateFemale, + dictionary, }: { field: MarriageField; isCandidateFemale: boolean; + dictionary?: Record; }) { - const value = formatFieldValue(field.value); + const value = formatOptionValue(field.value, dictionary); if (!value || isImageField(field)) { return null; } - const label = field.label || titleFromKey(field.key); + const label = formatFieldLabel(field, dictionary); if (isCandidateFemale) { return ( @@ -132,9 +181,11 @@ function MatchField({ function MatchPublicProfileFields({ publicInfo, isCandidateFemale, + dictionary, }: { publicInfo: MarriageField[] | null | undefined; isCandidateFemale: boolean; + dictionary?: Record; }) { const visibleFields = useMemo(() => { if (!publicInfo) return []; @@ -153,7 +204,8 @@ function MatchPublicProfileFields({ return (

- اطلاعات عمومی قابل نمایشی ثبت نشده است. + {dictionary?.["No public information is available to display."] || + "No public information is available to display."}

); @@ -163,7 +215,12 @@ function MatchPublicProfileFields({ return (
{visibleFields.map((field) => ( - + ))}
); @@ -172,11 +229,17 @@ function MatchPublicProfileFields({ return (

- اطلاعات عمومی و مشخصات فردی + {dictionary?.["General Information & Personal Details"] || + "General Information & Personal Details"}

{visibleFields.map((field) => ( - + ))}
@@ -668,6 +731,7 @@ export default function NewMatchProfilePage({ diff --git a/src/translations/locales/ar.json b/src/translations/locales/ar.json index 1309b75..5513099 100644 --- a/src/translations/locales/ar.json +++ b/src/translations/locales/ar.json @@ -779,5 +779,11 @@ "Clear": "مسح", "This field is required": "هذه الخانة مطلوبة", "Habib Coins": "حبيب كوين", - "{} Habib Coins": "{} حبيب كوين" + "{} Habib Coins": "{} حبيب كوين", + "New Message": "رسالة جديدة", + "Text Message": "محادثة نصية", + "Voice Call": "مكالمة صوتية", + "Video Call": "مكالمة فيديو", + "No public information is available to display.": "لا توجد معلومات عامة متاحة للعرض.", + "General Information & Personal Details": "المعلومات العامة والتفاصيل الشخصية" } diff --git a/src/translations/locales/az.json b/src/translations/locales/az.json index a51d998..9bbafab 100644 --- a/src/translations/locales/az.json +++ b/src/translations/locales/az.json @@ -779,5 +779,11 @@ "Clear": "Təmizlə", "This field is required": "Bu sahə zəruridir", "Habib Coins": "Həbib Koin", - "{} Habib Coins": "{} Həbib Koin" + "{} Habib Coins": "{} Həbib Koin", + "New Message": "Yeni Mesajlar", + "Text Message": "Mətn Mesajı", + "Voice Call": "Səsli Zəng", + "Video Call": "Video Zəng", + "No public information is available to display.": "Göstəriləcək heç bir ictimai məlumat qeyd edilməyib.", + "General Information & Personal Details": "Ümumi məlumat və fərdi xüsusiyyətlər" } diff --git a/src/translations/locales/bn.json b/src/translations/locales/bn.json index 3c50511..24ed516 100644 --- a/src/translations/locales/bn.json +++ b/src/translations/locales/bn.json @@ -779,5 +779,11 @@ "Clear": "মুছুন", "This field is required": "এই ক্ষেত্রটি আবশ্যক", "Habib Coins": "হাবিব কয়েন", - "{} Habib Coins": "{} হাবিব কয়েন" + "{} Habib Coins": "{} হাবিব কয়েন", + "New Message": "নতুন মেসেজ", + "Text Message": "টেক্সট বার্তা", + "Voice Call": "ভয়েস কল", + "Video Call": "ভিডিও কল", + "No public information is available to display.": "প্রদর্শনের জন্য কোনও সর্বজনীন তথ্য পাওয়া যায়নি।", + "General Information & Personal Details": "সাধারণ তথ্য এবং ব্যক্তিগত বিবরণ" } diff --git a/src/translations/locales/da.json b/src/translations/locales/da.json index 865a79c..9b6464d 100644 --- a/src/translations/locales/da.json +++ b/src/translations/locales/da.json @@ -779,5 +779,11 @@ "Clear": "Ryd", "This field is required": "Dette felt er påkrævet", "Habib Coins": "Habib-mønter", - "{} Habib Coins": "{} Habib-mønter" + "{} Habib Coins": "{} Habib-mønter", + "New Message": "Ny besked", + "Text Message": "Tekstbesked", + "Voice Call": "Taleopkald", + "Video Call": "Videoopkald", + "No public information is available to display.": "Ingen offentlige oplysninger er tilgængelige.", + "General Information & Personal Details": "Generelle oplysninger og personlige detaljer" } diff --git a/src/translations/locales/de.json b/src/translations/locales/de.json index abffdd8..7ddbdf4 100644 --- a/src/translations/locales/de.json +++ b/src/translations/locales/de.json @@ -779,5 +779,11 @@ "Clear": "Löschen", "This field is required": "Dieses Feld ist erforderlich", "Habib Coins": "Habib-Münzen", - "{} Habib Coins": "{} Habib-Münzen" + "{} Habib Coins": "{} Habib-Münzen", + "New Message": "Neue Nachricht", + "Text Message": "Textnachricht", + "Voice Call": "Sprachanruf", + "Video Call": "Videoanruf", + "No public information is available to display.": "Keine öffentlichen Informationen zur Anzeige verfügbar.", + "General Information & Personal Details": "Allgemeine Informationen und persönliche Details" } diff --git a/src/translations/locales/en.json b/src/translations/locales/en.json index 84c59ac..99fa0d7 100644 --- a/src/translations/locales/en.json +++ b/src/translations/locales/en.json @@ -828,5 +828,10 @@ "Clear": "Clear", "This field is required": "This field is required", "Habib Coins": "Habib Coins", - "{} Habib Coins": "{} Habib Coins" + "{} Habib Coins": "{} Habib Coins", + "New Message": "New Message", + "Text Message": "Text Message", + "Video Call": "Video Call", + "No public information is available to display.": "No public information is available to display.", + "General Information & Personal Details": "General Information & Personal Details" } diff --git a/src/translations/locales/es.json b/src/translations/locales/es.json index c2a992f..36130b7 100644 --- a/src/translations/locales/es.json +++ b/src/translations/locales/es.json @@ -779,5 +779,11 @@ "Clear": "Borrar", "This field is required": "Este campo es obligatorio", "Habib Coins": "Monedas Habib", - "{} Habib Coins": "{} Monedas Habib" + "{} Habib Coins": "{} Monedas Habib", + "New Message": "Nuevos mensajes", + "Text Message": "Mensaje de Texto", + "Voice Call": "Llamada de Voz", + "Video Call": "Llamada de Video", + "No public information is available to display.": "No hay información pública disponible para mostrar.", + "General Information & Personal Details": "Información general y detalles personales" } diff --git a/src/translations/locales/fa.json b/src/translations/locales/fa.json index 6dc130c..5445a0a 100644 --- a/src/translations/locales/fa.json +++ b/src/translations/locales/fa.json @@ -828,5 +828,10 @@ "Clear": "پاک کردن", "This field is required": "این فیلد ضروری است", "Habib Coins": "حبیب کوین", - "{} Habib Coins": "{} حبیب کوین" + "{} Habib Coins": "{} حبیب کوین", + "New Message": "پیام متنی جدید", + "Text Message": "پیام متنی", + "Video Call": "تماس تصویری", + "No public information is available to display.": "اطلاعات عمومی قابل نمایشی ثبت نشده است.", + "General Information & Personal Details": "اطلاعات عمومی و مشخصات فردی" } diff --git a/src/translations/locales/fr.json b/src/translations/locales/fr.json index 85260fd..5800140 100644 --- a/src/translations/locales/fr.json +++ b/src/translations/locales/fr.json @@ -779,5 +779,11 @@ "Clear": "Effacer", "This field is required": "Ce champ est requis", "Habib Coins": "Pièces Habib", - "{} Habib Coins": "{} Pièces Habib" + "{} Habib Coins": "{} Pièces Habib", + "New Message": "Nouveaux messages", + "Text Message": "Message texte", + "Voice Call": "Appel vocal", + "Video Call": "Appel vidéo", + "No public information is available to display.": "Aucune information publique disponible à afficher.", + "General Information & Personal Details": "Informations générales et détails personnels" } diff --git a/src/translations/locales/gu.json b/src/translations/locales/gu.json index c639095..208f5b2 100644 --- a/src/translations/locales/gu.json +++ b/src/translations/locales/gu.json @@ -779,5 +779,11 @@ "Clear": "સાફ કરો", "This field is required": "આ ક્ષેત્ર આવશ્યક છે", "Habib Coins": "હબીબ સિક્કા", - "{} Habib Coins": "{} હબીબ કોઈન્સ" + "{} Habib Coins": "{} હબીબ કોઈન્સ", + "New Message": "New Message", + "Text Message": "ટેક્સ્ટ સંદેશ", + "Voice Call": "વૉઇસ કૉલ", + "Video Call": "વિડિયો કૉલ", + "No public information is available to display.": "પ્રદર્શિત કરવા માટે કોઈ જાહેર માહિતી ઉપલબ્ધ નથી.", + "General Information & Personal Details": "સામાન્ય માહિતી અને વ્યક્તિગત વિગતો" } diff --git a/src/translations/locales/ha.json b/src/translations/locales/ha.json index e90559f..d39d20e 100644 --- a/src/translations/locales/ha.json +++ b/src/translations/locales/ha.json @@ -779,5 +779,11 @@ "Clear": "Share", "This field is required": "Ana buƙatar wannan filin", "Habib Coins": "Kuɗin Habib", - "{} Habib Coins": "Tsabar Kudin Habib {}" + "{} Habib Coins": "Tsabar Kudin Habib {}", + "New Message": "Sabon Saƙo", + "Text Message": "Sakon Rubutu", + "Voice Call": "Kiran Murya", + "Video Call": "Kiran Bidiyo", + "No public information is available to display.": "Babu bayanan jama'a da za a iya nunawa.", + "General Information & Personal Details": "Bayanai na gama-gari da cikakkun bayanan sirri" } diff --git a/src/translations/locales/he.json b/src/translations/locales/he.json index 40af5b4..61ce359 100644 --- a/src/translations/locales/he.json +++ b/src/translations/locales/he.json @@ -316,5 +316,11 @@ "Clear": "Clear", "This field is required": "This field is required", "Habib Coins": "Habib Coins", - "{} Habib Coins": "{} Habib Coins" + "{} Habib Coins": "{} Habib Coins", + "New Message": "New Message", + "Text Message": "Text Message", + "Voice Call": "Voice Call", + "Video Call": "Video Call", + "No public information is available to display.": "אין מידע ציבורי זמין להצגה.", + "General Information & Personal Details": "מידע כללי ופרטים אישיים" } diff --git a/src/translations/locales/hi.json b/src/translations/locales/hi.json index 9b3c954..c8d07f8 100644 --- a/src/translations/locales/hi.json +++ b/src/translations/locales/hi.json @@ -779,5 +779,11 @@ "Clear": "साफ़ करें", "This field is required": "यह फ़ील्ड आवश्यक है", "Habib Coins": "हबीब कॉइन्स", - "{} Habib Coins": "{} हबीब कॉइन्स" + "{} Habib Coins": "{} हबीब कॉइन्स", + "New Message": "नया संदेश", + "Text Message": "टेक्स्ट मैसेज", + "Voice Call": "वॉइस कॉल", + "Video Call": "वीडियो कॉल", + "No public information is available to display.": "प्रदर्शित करने के लिए कोई सार्वजनिक जानकारी उपलब्ध नहीं है।", + "General Information & Personal Details": "सामान्य जानकारी और व्यक्तिगत विवरण" } diff --git a/src/translations/locales/id.json b/src/translations/locales/id.json index 95a4897..51dbe6e 100644 --- a/src/translations/locales/id.json +++ b/src/translations/locales/id.json @@ -316,5 +316,11 @@ "Clear": "Hapus", "This field is required": "Bidang ini wajib diisi", "Habib Coins": "Koin Habib", - "{} Habib Coins": "{} Koin Habib" + "{} Habib Coins": "{} Koin Habib", + "New Message": "Pesan Baru", + "Text Message": "Pesan Teks", + "Voice Call": "Panggilan Suara", + "Video Call": "Panggilan Video", + "No public information is available to display.": "Tidak ada informasi publik yang tersedia untuk ditampilkan.", + "General Information & Personal Details": "Informasi Umum & Rincian Pribadi" } diff --git a/src/translations/locales/ks.json b/src/translations/locales/ks.json index 764c489..1fc72dd 100644 --- a/src/translations/locales/ks.json +++ b/src/translations/locales/ks.json @@ -316,5 +316,11 @@ "Clear": "صاف کٔرِو", "This field is required": "یہ فیلڈ ضروری چھُ", "Habib Coins": "حبیب کوینس", - "{} Habib Coins": "{} حبیب کوین" + "{} Habib Coins": "{} حبیب کوین", + "New Message": "New Message", + "Text Message": "ٹیکسٹ پیغام", + "Voice Call": "آوازی کال", + "Video Call": "ویڈیو کال", + "No public information is available to display.": "ڈسپلے کرنہٕ خٲطرٕ کانہہ عام معلومات دٔستیاب چُھنہٕ۔", + "General Information & Personal Details": "عام معلومات تہٕ ذٲتی تفصیٖل" } diff --git a/src/translations/locales/pt.json b/src/translations/locales/pt.json index 0ba23fb..cd10a27 100644 --- a/src/translations/locales/pt.json +++ b/src/translations/locales/pt.json @@ -316,5 +316,11 @@ "Clear": "Limpar", "This field is required": "Este campo é obrigatório", "Habib Coins": "Moedas Habib", - "{} Habib Coins": "{} Moedas Habib" + "{} Habib Coins": "{} Moedas Habib", + "New Message": "Nova Mensagem", + "Text Message": "Mensagem de Texto", + "Voice Call": "Chamada de Voz", + "Video Call": "Chamada de Vídeo", + "No public information is available to display.": "Nenhuma informação pública disponível para exibição.", + "General Information & Personal Details": "Informações Gerais e Detalhes Pessoais" } diff --git a/src/translations/locales/ru.json b/src/translations/locales/ru.json index 7a62198..508d103 100644 --- a/src/translations/locales/ru.json +++ b/src/translations/locales/ru.json @@ -783,5 +783,11 @@ "Clear": "Очистить", "This field is required": "Это поле обязательно", "Habib Coins": "Хабиб Коины", - "{} Habib Coins": "{} Хабиб Коины" + "{} Habib Coins": "{} Хабиб Коины", + "New Message": "Новые сообщения", + "Text Message": "Текстовое сообщение", + "Voice Call": "Голосовой звонок", + "Video Call": "Видеозвонок", + "No public information is available to display.": "Нет общедоступной информации для отображения.", + "General Information & Personal Details": "Общая информация и личные данные" } diff --git a/src/translations/locales/sw.json b/src/translations/locales/sw.json index 0973979..adec3d4 100644 --- a/src/translations/locales/sw.json +++ b/src/translations/locales/sw.json @@ -316,5 +316,11 @@ "Clear": "Futa", "This field is required": "Sehemu hii inahitajika", "Habib Coins": "Sarafu za Habib", - "{} Habib Coins": "{} Sarafu za Habib" + "{} Habib Coins": "{} Sarafu za Habib", + "New Message": "Ujumbe Mpya", + "Text Message": "Ujumbe wa Maandishi", + "Voice Call": "Simu ya Sauti", + "Video Call": "Simu ya Video", + "No public information is available to display.": "Hakuna taarifa za umma zinazoweza kuonyeshwa.", + "General Information & Personal Details": "Taarifa za Jumla na Maelezo Binafsi" } diff --git a/src/translations/locales/tg.json b/src/translations/locales/tg.json index 4b74fd5..c103341 100644 --- a/src/translations/locales/tg.json +++ b/src/translations/locales/tg.json @@ -316,5 +316,11 @@ "Clear": "Покардан", "This field is required": "Ин майдон ҳатмист", "Habib Coins": "Тангаҳои Ҳабиб", - "{} Habib Coins": "{} Тангаҳои Ҳабиб" + "{} Habib Coins": "{} Тангаҳои Ҳабиб", + "New Message": "Паёми нав", + "Text Message": "Паёми матнӣ", + "Voice Call": "Зангҳои овозӣ", + "Video Call": "Зангҳои видеоӣ", + "No public information is available to display.": "Маълумоти умумии дастрас барои намоиш нест.", + "General Information & Personal Details": "Маълумоти умумӣ ва мушаххасоти инфиродӣ" } diff --git a/src/translations/locales/tr.json b/src/translations/locales/tr.json index 02b7df8..5e69373 100644 --- a/src/translations/locales/tr.json +++ b/src/translations/locales/tr.json @@ -316,5 +316,11 @@ "Clear": "Temizle", "This field is required": "Bu alan gereklidir", "Habib Coins": "Habib Coin", - "{} Habib Coins": "{} Habib Coin" + "{} Habib Coins": "{} Habib Coin", + "New Message": "Yeni Mesaj", + "Text Message": "Yazılı Mesaj", + "Voice Call": "Sesli Arama", + "Video Call": "Görüntülü Arama", + "No public information is available to display.": "Görüntülenecek genel bilgi bulunmamaktadır.", + "General Information & Personal Details": "Genel Bilgiler ve Kişisel Detaylar" } diff --git a/src/translations/locales/ul.json b/src/translations/locales/ul.json index c5ce5e9..e562cc9 100644 --- a/src/translations/locales/ul.json +++ b/src/translations/locales/ul.json @@ -316,5 +316,11 @@ "Clear": "Saaf karein", "This field is required": "Ye Field Zaroori Hai", "Habib Coins": "Habib Coins", - "{} Habib Coins": "{} Habib Coins" + "{} Habib Coins": "{} Habib Coins", + "New Message": "Naya paigham", + "Text Message": "Text Message", + "Voice Call": "Voice Call", + "Video Call": "Video Call", + "No public information is available to display.": "Görüntülenecek genel bilgi bulunmamaktadır.", + "General Information & Personal Details": "Genel Bilgiler ve Kişisel Detaylar" } diff --git a/src/translations/locales/ur.json b/src/translations/locales/ur.json index 4a366b9..ec760a4 100644 --- a/src/translations/locales/ur.json +++ b/src/translations/locales/ur.json @@ -316,5 +316,11 @@ "Clear": "صاف کریں", "This field is required": "یہ فیلڈ ضروری ہے", "Habib Coins": "حبیب کوائنز", - "{} Habib Coins": "{} حبیب کوائن" + "{} Habib Coins": "{} حبیب کوائن", + "New Message": "نئے پیغامات", + "Text Message": "پیغام", + "Voice Call": "وائس کال", + "Video Call": "ویڈیو کال", + "No public information is available to display.": "دکھانے کے لیے کوئی عوامی معلومات دستیاب نہیں ہے۔", + "General Information & Personal Details": "عام معلومات اور ذاتی تفصیلات" } diff --git a/src/translations/locales/uz.json b/src/translations/locales/uz.json index 1ead0fa..c0f2c72 100644 --- a/src/translations/locales/uz.json +++ b/src/translations/locales/uz.json @@ -316,5 +316,11 @@ "Clear": "Tozalash", "This field is required": "Бу майдон тўлдирилиши шарт", "Habib Coins": "Habib tangalari", - "{} Habib Coins": "{} Habib tangalari" + "{} Habib Coins": "{} Habib tangalari", + "New Message": "Янги хабар", + "Text Message": "Матнли хабар", + "Voice Call": "Овозли қўнғироқ", + "Video Call": "Видео қўнғироқ", + "No public information is available to display.": "Ko'rsatish uchun umumiy ma'lumot mavjud emas.", + "General Information & Personal Details": "Umumiy ma'lumotlar va shaxsiy tafsilotlar" } diff --git a/src/translations/locales/zh.json b/src/translations/locales/zh.json index 48088f6..8fa35b9 100644 --- a/src/translations/locales/zh.json +++ b/src/translations/locales/zh.json @@ -779,5 +779,11 @@ "Clear": "清除", "This field is required": "此字段为必填项", "Habib Coins": "哈比卜币", - "{} Habib Coins": "{} 哈比布金币" + "{} Habib Coins": "{} 哈比布金币", + "New Message": "新消息", + "Text Message": "短信", + "Voice Call": "语音通话", + "Video Call": "视频通话", + "No public information is available to display.": "没有可显示的公开信息。", + "General Information & Personal Details": "一般信息和个人资料" }