diff --git a/WEBVIEW_ACTION_DOWNLOAD.md b/WEBVIEW_ACTION_DOWNLOAD.md
index 9523df9..e9d4cec 100644
--- a/WEBVIEW_ACTION_DOWNLOAD.md
+++ b/WEBVIEW_ACTION_DOWNLOAD.md
@@ -973,6 +973,47 @@ void _handleUploadFile(dynamic payload) async {
---
+## ۵. خرید حبیب کوین (`buy_coin`)
+
+### هدف
+
+وقتی کاربر برای پرداخت هزینه اشتراک یا معرفی مورد کوین کافی ندارد (دریافت خطای `Not enough coins` از سرور)، وب باید به کاربر دکمهای برای شارژ حساب نمایش دهد. با کلیک کاربر، وب یک پیام JSON با اکشن `buy_coin` به Flutter ارسال میکند تا فلاتر بهصورت native صفحه لیست پکیجهای حبیب کوین (`PackagesListPage`) را روی WebView باز کند. کاربر پس از خرید پکیج و زدن دکمه بازگشت (Back)، مجدداً به همان صفحه وب بازمیگردد و میتواند پرداخت را تکرار کند.
+
+### Action اصلی
+
+```text
+buy_coin
+```
+
+### پیام ارسالی از Web به Flutter
+
+```json
+{
+ "action": "buy_coin"
+}
+```
+
+### امضای تابع در Web (src/lib/webview-actions.ts)
+
+```ts
+/**
+ * Ask Flutter to open the Habib Coin packages list page (Add Coin).
+ */
+export function buyHabibCoinPackages(): boolean {
+ return postActionToFlutter("buy_coin");
+}
+```
+
+### رفتار سمت Flutter
+
+فلاتر بدون نیاز به payload اضافی اکشن `buy_coin` را دریافت کرده و صفحه خرید پکیج را باز میکند:
+
+```dart
+'buy_coin' => context.pushPage(const PackagesListPage()),
+```
+
+---
+
## جمعبندی actionها
| Action | کاربرد |
@@ -981,3 +1022,5 @@ void _handleUploadFile(dynamic payload) async {
| `upload_file` | انتخاب فایل/تصویر/ویدیو از دستگاه و آپلود به سرور (یا بازگرداندن base64) |
| `copy_to_clipboard` | کپی متن در clipboard دستگاه |
| `open_external_url` | باز کردن URL در مرورگر یا اپ خارجی |
+| `buy_coin` | باز کردن صفحه خرید پکیجهای حبیب کوین (`PackagesListPage`) در فلاتر |
+
diff --git a/src/app/request-accepted/page.tsx b/src/app/request-accepted/page.tsx
index 1d54052..0f94681 100644
--- a/src/app/request-accepted/page.tsx
+++ b/src/app/request-accepted/page.tsx
@@ -312,7 +312,8 @@ export default function RequestAcceptedPage() {
if (msg === "Not enough coins") {
setIsInsufficientCoins(true);
setPaymentError(
- "Insufficient coin balance. Please recharge your account.",
+ t["Insufficient coin balance. Please recharge your account."] ||
+ "Insufficient coin balance. Please recharge your account.",
);
} else {
setPaymentError(msg);
diff --git a/src/components/Componentes/navigation-button.tsx b/src/components/Componentes/navigation-button.tsx
index d332090..21065a8 100644
--- a/src/components/Componentes/navigation-button.tsx
+++ b/src/components/Componentes/navigation-button.tsx
@@ -1,29 +1,29 @@
"use client";
+import { useQueryClient } from "@tanstack/react-query";
import Image from "next/image";
import { useRouter } from "next/navigation";
import type { ButtonHTMLAttributes, ReactNode } from "react";
-import { useState, useRef, useEffect } from "react";
+import { useEffect, useRef, useState } from "react";
import { GoArrowLeft } from "react-icons/go";
import { HiEllipsisVertical } from "react-icons/hi2";
-import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import { marriageQueryKeys } from "@/hooks/marriage/query-keys";
-import { useI18n } from "@/translations/provider";
-import HelpModal from "./help-modal";
-import SupportSheet from "./support-sheet";
-import InformationSheet from "./information-sheet";
-import { useQueryClient } from "@tanstack/react-query";
-import { UiIcon } from "./ui-icon";
-import ErrorToast from "./error-toast";
-import { hasSupportAccess } from "./support-access";
import {
- useHabcoinPaymentMutation,
extractHabcoinPaymentUrl,
+ useHabcoinPaymentMutation,
} from "@/hooks/marriage/use-habcoin-payment";
+import { useMarriageProfileQuery } from "@/hooks/marriage/use-profile-main";
import {
buyHabibCoinPackages,
isInFlutterWebView,
} from "@/lib/webview-actions";
+import { useI18n } from "@/translations/provider";
+import ErrorToast from "./error-toast";
+import HelpModal from "./help-modal";
+import InformationSheet from "./information-sheet";
+import { hasSupportAccess } from "./support-access";
+import SupportSheet from "./support-sheet";
+import { UiIcon } from "./ui-icon";
type NavigationButtonIcon =
| "back"
@@ -123,93 +123,93 @@ export function NavigationButton({
)}
-
+
-
+
+
)}
/>
@@ -272,9 +272,7 @@ export function NavigationButton({
case "info":
return ;
case "document":
- return (
-
- );
+ return ;
case "subscription":
return hasActiveSubscription ? (
void;
@@ -25,25 +26,35 @@ export function SubscriptionRequiredSheet({
errorMessage = null,
showBuyCoins = false,
}: SubscriptionRequiredSheetProps) {
+ const { dictionary: t } = useI18n();
+
return (
- To view profiles, you need a subscription. Each subscription
- includes up to{" "}
-
- 3
- {" "}
- matches.
+ {t[
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches."
+ ]?.replace("{count}", "3") || (
+ <>
+ To view profiles, you need a subscription. Each subscription
+ includes up to{" "}
+
+ 3
+ {" "}
+ matches.
+ >
+ )}
- To view profiles, a subscription is required. This helps cover our
- support and matching services and applies only to male users
+ {t[
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users"
+ ] ||
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users"}
)}
diff --git a/src/lib/webview-actions.test.ts b/src/lib/webview-actions.test.ts
new file mode 100644
index 0000000..1816feb
--- /dev/null
+++ b/src/lib/webview-actions.test.ts
@@ -0,0 +1,191 @@
+import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
+import {
+ buyHabibCoinPackages,
+ copyToClipboard,
+ downloadFile,
+ isInFlutterWebView,
+ openExternalUrl,
+ postActionToFlutter,
+ uploadFile,
+} from "./webview-actions";
+
+describe("webview-actions", () => {
+ const originalHabibApp = window.HabibApp;
+
+ beforeEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ afterEach(() => {
+ window.HabibApp = originalHabibApp;
+ });
+
+ describe("isInFlutterWebView", () => {
+ it("returns true when window.HabibApp.postMessage is defined", () => {
+ window.HabibApp = { postMessage: vi.fn() };
+ expect(isInFlutterWebView()).toBe(true);
+ });
+
+ it("returns false when window.HabibApp is undefined", () => {
+ delete (window as any).HabibApp;
+ expect(isInFlutterWebView()).toBe(false);
+ });
+ });
+
+ describe("postActionToFlutter", () => {
+ it("sends message without data when data is omitted", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = postActionToFlutter("custom_action");
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledTimes(1);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({ action: "custom_action" }),
+ );
+ });
+
+ it("sends message with data when data is provided", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = postActionToFlutter("custom_action", { foo: "bar" });
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({ action: "custom_action", data: { foo: "bar" } }),
+ );
+ });
+
+ it("returns false and does not throw when not in flutter webview", () => {
+ delete (window as any).HabibApp;
+ const result = postActionToFlutter("custom_action");
+ expect(result).toBe(false);
+ });
+ });
+
+ describe("buyHabibCoinPackages", () => {
+ it("dispatches buy_coin action to Flutter and returns true", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = buyHabibCoinPackages();
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledTimes(1);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({ action: "buy_coin" }),
+ );
+ });
+
+ it("returns false when not running in Flutter WebView", () => {
+ delete (window as any).HabibApp;
+ const result = buyHabibCoinPackages();
+ expect(result).toBe(false);
+ });
+ });
+
+ describe("downloadFile", () => {
+ it("dispatches download_file action with options", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = downloadFile({
+ url: "https://example.com/file.pdf",
+ fileName: "file.pdf",
+ mimeType: "application/pdf",
+ fileType: "document",
+ });
+
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({
+ action: "download_file",
+ data: {
+ url: "https://example.com/file.pdf",
+ fileName: "file.pdf",
+ mimeType: "application/pdf",
+ fileType: "document",
+ },
+ }),
+ );
+ });
+ });
+
+ describe("copyToClipboard", () => {
+ it("dispatches copy_to_clipboard in Flutter WebView", async () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = await copyToClipboard("sample text", "invite_code");
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({
+ action: "copy_to_clipboard",
+ data: {
+ text: "sample text",
+ label: "invite_code",
+ showToast: true,
+ },
+ }),
+ );
+ });
+
+ it("falls back to navigator.clipboard.writeText when outside WebView", async () => {
+ delete (window as any).HabibApp;
+ const writeTextMock = vi.fn().mockResolvedValue(undefined);
+ Object.assign(navigator, {
+ clipboard: { writeText: writeTextMock },
+ });
+
+ const result = await copyToClipboard("sample text");
+ expect(result).toBe(true);
+ expect(writeTextMock).toHaveBeenCalledWith("sample text");
+ });
+ });
+
+ describe("openExternalUrl", () => {
+ it("dispatches open_external_url action to Flutter", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = openExternalUrl({ url: "https://habibapp.com" });
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({
+ action: "open_external_url",
+ data: {
+ mode: "externalApplication",
+ showErrorToast: true,
+ url: "https://habibapp.com",
+ },
+ }),
+ );
+ });
+ });
+
+ describe("uploadFile", () => {
+ it("dispatches upload_file action with options to Flutter", () => {
+ const mockPostMessage = vi.fn();
+ window.HabibApp = { postMessage: mockPostMessage };
+
+ const result = uploadFile({
+ mediaType: "image",
+ source: "gallery",
+ returnAs: "upload",
+ uploadUrl: "/api/upload",
+ });
+
+ expect(result).toBe(true);
+ expect(mockPostMessage).toHaveBeenCalledWith(
+ JSON.stringify({
+ action: "upload_file",
+ data: {
+ mediaType: "image",
+ source: "gallery",
+ returnAs: "upload",
+ uploadUrl: "/api/upload",
+ },
+ }),
+ );
+ });
+ });
+});
diff --git a/src/translations/locales/ar.json b/src/translations/locales/ar.json
index 151dec9..8a0e66d 100644
--- a/src/translations/locales/ar.json
+++ b/src/translations/locales/ar.json
@@ -763,5 +763,9 @@
"Try again": "حاول مرة أخرى",
"No advisors are currently available.": "لا يوجد مستشارون متاحون حاليًا.",
"Connection error": "خطأ في الاتصال",
- "Something went wrong. Please check your internet connection and try again.": "حدث خطأ ما. يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى."
+ "Something went wrong. Please check your internet connection and try again.": "حدث خطأ ما. يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى.",
+ "Buy Habib Coins": "شراء عملات حبيب",
+ "Subscription required": "الاشتراك مطلوب",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "لعرض الملفات الشخصية، تحتاج إلى اشتراك. يتضمن كل اشتراك ما يصل إلى {count} تطابقات.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "لعرض الملفات الشخصية، يلزم الاشتراك. يساعد ذلك في تغطية خدمات الدعم والتوفيق ويسري فقط على المستخدمين الذكور"
}
diff --git a/src/translations/locales/az.json b/src/translations/locales/az.json
index e055f5f..5e5b879 100644
--- a/src/translations/locales/az.json
+++ b/src/translations/locales/az.json
@@ -763,5 +763,9 @@
"Try again": "Yenidən cəhd edin",
"No advisors are currently available.": "Hazırda mövcud məsləhətçi yoxdur.",
"Connection error": "Bağlantı xətası",
- "Something went wrong. Please check your internet connection and try again.": "Xəta baş verdi. İnternet bağlantınızı yoxlayın və yenidən cəhd edin."
+ "Something went wrong. Please check your internet connection and try again.": "Xəta baş verdi. İnternet bağlantınızı yoxlayın və yenidən cəhd edin.",
+ "Buy Habib Coins": "Həbib Sikkələri Al",
+ "Subscription required": "Abunə tələb olunur",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Profilləri görmək üçün abunəyə ehtiyacınız var. Hər abunə {count} uyğunlaşmanı əhatə edir.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Profilləri görmək üçün abunə tələb olunur. Bu, dəstək və uyğunlaşma xidmətlərimizi əhatə edir və yalnız kişi istifadəçilərə aiddir"
}
diff --git a/src/translations/locales/bn.json b/src/translations/locales/bn.json
index 5f68d15..8fb03e8 100644
--- a/src/translations/locales/bn.json
+++ b/src/translations/locales/bn.json
@@ -763,5 +763,9 @@
"Try again": "আবার চেষ্টা করুন",
"No advisors are currently available.": "বর্তমানে কোনো উপদেষ্টা নেই।",
"Connection error": "সংযোগ ত্রুটি",
- "Something went wrong. Please check your internet connection and try again.": "কিছু ভুল হয়েছে। আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন।"
+ "Something went wrong. Please check your internet connection and try again.": "কিছু ভুল হয়েছে। আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করুন।",
+ "Buy Habib Coins": "হাবিব কয়েন কিনুন",
+ "Subscription required": "সাবস্ক্রিপশন প্রয়োজন",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "প্রোফাইল দেখতে আপনার সাবস্ক্রিপশন প্রয়োজন। প্রতিটি সাবস্ক্রিপশনে {count}টি ম্যাচ অন্তর্ভুক্ত।",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "প্রোফাইল দেখতে সাবস্ক্রিপশন প্রয়োজন। এটি আমাদের সহায়তা এবং ম্যাচিং পরিষেবার খরচ বহন করতে সাহায্য করে এবং শুধুমাত্র পুরুষ ব্যবহারকারীদের জন্য প্রযোজ্য"
}
diff --git a/src/translations/locales/da.json b/src/translations/locales/da.json
index db7a4fd..81569a3 100644
--- a/src/translations/locales/da.json
+++ b/src/translations/locales/da.json
@@ -763,5 +763,9 @@
"Try again": "Prøv igen",
"No advisors are currently available.": "Der er i øjeblikket ingen tilgængelige rådgivere.",
"Connection error": "Forbindelsesfejl",
- "Something went wrong. Please check your internet connection and try again.": "Noget gik galt. Tjek din internetforbindelse og prøv igen."
+ "Something went wrong. Please check your internet connection and try again.": "Noget gik galt. Tjek din internetforbindelse og prøv igen.",
+ "Buy Habib Coins": "Køb Habib-mønter",
+ "Subscription required": "Abonnement påkrævet",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "For at se profiler har du brug for et abonnement. Hvert abonnement inkluderer op til {count} matches.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "For at se profiler kræves et abonnement. Dette hjælper med at dække vores support- og matchningstjenester og gælder kun for mandlige brugere"
}
diff --git a/src/translations/locales/de.json b/src/translations/locales/de.json
index 1f1f02d..8731ae5 100644
--- a/src/translations/locales/de.json
+++ b/src/translations/locales/de.json
@@ -763,5 +763,9 @@
"Try again": "Erneut versuchen",
"No advisors are currently available.": "Derzeit sind keine Berater verfügbar.",
"Connection error": "Verbindungsfehler",
- "Something went wrong. Please check your internet connection and try again.": "Etwas ist schiefgelaufen. Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut."
+ "Something went wrong. Please check your internet connection and try again.": "Etwas ist schiefgelaufen. Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.",
+ "Buy Habib Coins": "Habib-Münzen kaufen",
+ "Subscription required": "Abonnement erforderlich",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Um Profile anzusehen, benötigen Sie ein Abonnement. Jedes Abonnement beinhaltet bis zu {count} Übereinstimmungen.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Zum Anzeigen von Profilen ist ein Abonnement erforderlich. Dies hilft, unsere Support- und Matching-Dienste zu finanzieren und gilt nur für männliche Nutzer"
}
diff --git a/src/translations/locales/en.json b/src/translations/locales/en.json
index fd6115a..e543c90 100644
--- a/src/translations/locales/en.json
+++ b/src/translations/locales/en.json
@@ -813,5 +813,9 @@
"Try again": "Try again",
"No advisors are currently available.": "No advisors are currently available.",
"Connection error": "Connection error",
- "Something went wrong. Please check your internet connection and try again.": "Something went wrong. Please check your internet connection and try again."
+ "Something went wrong. Please check your internet connection and try again.": "Something went wrong. Please check your internet connection and try again.",
+ "Buy Habib Coins": "Buy Habib Coins",
+ "Subscription required": "Subscription required",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "To view profiles, you need a subscription. Each subscription includes up to {count} matches.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users"
}
diff --git a/src/translations/locales/es.json b/src/translations/locales/es.json
index 848f2f6..06a9e9c 100644
--- a/src/translations/locales/es.json
+++ b/src/translations/locales/es.json
@@ -763,5 +763,9 @@
"Try again": "Intentar de nuevo",
"No advisors are currently available.": "Actualmente no hay asesores disponibles.",
"Connection error": "Error de conexión",
- "Something went wrong. Please check your internet connection and try again.": "Algo salió mal. Revisa tu conexión a Internet e inténtalo de nuevo."
+ "Something went wrong. Please check your internet connection and try again.": "Algo salió mal. Revisa tu conexión a Internet e inténtalo de nuevo.",
+ "Buy Habib Coins": "Comprar monedas Habib",
+ "Subscription required": "Suscripción requerida",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Para ver perfiles, necesitas una suscripción. Cada suscripción incluye hasta {count} coincidencias.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Para ver perfiles, se requiere una suscripción. Esto ayuda a cubrir nuestros servicios de soporte y emparejamiento y aplica solo a usuarios masculinos"
}
diff --git a/src/translations/locales/fa.json b/src/translations/locales/fa.json
index 2e1fa54..99f3c76 100644
--- a/src/translations/locales/fa.json
+++ b/src/translations/locales/fa.json
@@ -813,5 +813,9 @@
"Try again": "تلاش مجدد",
"No advisors are currently available.": "در حال حاضر مشاوری در دسترس نیست.",
"Connection error": "خطا در اتصال",
- "Something went wrong. Please check your internet connection and try again.": "مشکلی پیش آمده است. لطفاً اتصال اینترنت خود را بررسی و دوباره تلاش کنید."
+ "Something went wrong. Please check your internet connection and try again.": "مشکلی پیش آمده است. لطفاً اتصال اینترنت خود را بررسی و دوباره تلاش کنید.",
+ "Buy Habib Coins": "خرید سکه حبیب",
+ "Subscription required": "اشتراک الزامی است",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "برای مشاهده پروفایلها، نیاز به اشتراک دارید. هر اشتراک شامل حداکثر {count} همسانیابی است.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "برای مشاهده پروفایلها، اشتراک الزامی است. این هزینه صرف خدمات پشتیبانی و همسانیابی میشود و فقط شامل کاربران مرد است"
}
diff --git a/src/translations/locales/fr.json b/src/translations/locales/fr.json
index 84c562d..bd75099 100644
--- a/src/translations/locales/fr.json
+++ b/src/translations/locales/fr.json
@@ -763,5 +763,9 @@
"Try again": "Réessayer",
"No advisors are currently available.": "Aucun conseiller n'est disponible actuellement.",
"Connection error": "Erreur de connexion",
- "Something went wrong. Please check your internet connection and try again.": "Un problème est survenu. Veuillez vérifier votre connexion Internet et réessayer."
+ "Something went wrong. Please check your internet connection and try again.": "Un problème est survenu. Veuillez vérifier votre connexion Internet et réessayer.",
+ "Buy Habib Coins": "Acheter des pièces Habib",
+ "Subscription required": "Abonnement requis",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Pour voir les profils, vous avez besoin d'un abonnement. Chaque abonnement comprend jusqu'à {count} correspondances.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Pour voir les profils, un abonnement est requis. Cela aide à couvrir nos services de support et de mise en relation et s'applique uniquement aux utilisateurs masculins"
}
diff --git a/src/translations/locales/gu.json b/src/translations/locales/gu.json
index dad518a..57e0401 100644
--- a/src/translations/locales/gu.json
+++ b/src/translations/locales/gu.json
@@ -763,5 +763,9 @@
"Try again": "ફરી પ્રયાસ કરો",
"No advisors are currently available.": "હાલમાં કોઈ સલાહકાર ઉપલબ્ધ નથી.",
"Connection error": "કનેક્શન ભૂલ",
- "Something went wrong. Please check your internet connection and try again.": "કંઈક ખોટું થયું. કૃપા કરીને તમારું ઇન્ટરનેટ કનેક્શન તપાસો અને ફરી પ્રયાસ કરો."
+ "Something went wrong. Please check your internet connection and try again.": "કંઈક ખોટું થયું. કૃપા કરીને તમારું ઇન્ટરનેટ કનેક્શન તપાસો અને ફરી પ્રયાસ કરો.",
+ "Buy Habib Coins": "હબીબ સિક્કા ખરીદો",
+ "Subscription required": "સબ્સ્ક્રિપ્શન જરૂરી",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "પ્રોફાઇલ જોવા માટે તમારે સબ્સ્ક્રિપ્શનની જરૂર છે. દરેક સબ્સ્ક્રિપ્શનમાં {count} મેચ સુધીનો સમાવેશ થાય છે.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "પ્રોફાઇલ જોવા માટે સબ્સ્ક્રિપ્શન જરૂરી છે. આ અમારી સપોર્ટ અને મેચિંગ સેવાઓને આવરી લેવામાં મદદ કરે છે અને ફક્ત પુરુષ વપરાશકર્તાઓને લાગુ પડે છે"
}
diff --git a/src/translations/locales/ha.json b/src/translations/locales/ha.json
index 7febaf8..d282478 100644
--- a/src/translations/locales/ha.json
+++ b/src/translations/locales/ha.json
@@ -763,5 +763,9 @@
"Try again": "Sake gwadawa",
"No advisors are currently available.": "Babu masu ba da shawara a halin yanzu.",
"Connection error": "Kuskuren haɗi",
- "Something went wrong. Please check your internet connection and try again.": "Wani abu ya faru ba daidai ba. Da fatan za a bincika haɗin intanet ɗinku kuma a sake gwadawa."
+ "Something went wrong. Please check your internet connection and try again.": "Wani abu ya faru ba daidai ba. Da fatan za a bincika haɗin intanet ɗinku kuma a sake gwadawa.",
+ "Buy Habib Coins": "Sayi Tsabar Kuɗin Habib",
+ "Subscription required": "Ana buƙatar biyan kuɗi",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Don ganin bayanan mutane, kuna buƙatar biyan kuɗi. Kowane biyan kuɗi ya ƙunshi har zuwa {count} daidaituwa.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Don ganin bayanan mutane, ana buƙatar biyan kuɗi. Wannan yana taimakawa wajen biyan kuɗin sabis na tallafi da daidaitawa kuma yana shafi maza kawai"
}
diff --git a/src/translations/locales/he.json b/src/translations/locales/he.json
index 8e2176e..0138b65 100644
--- a/src/translations/locales/he.json
+++ b/src/translations/locales/he.json
@@ -291,5 +291,9 @@
"Try again": "נסה שוב",
"No advisors are currently available.": "אין כרגע יועצים זמינים.",
"Connection error": "שגיאת חיבור",
- "Something went wrong. Please check your internet connection and try again.": "משהו השתבש. אנא בדוק את חיבור האינטרנט שלך ונסה שוב."
+ "Something went wrong. Please check your internet connection and try again.": "משהו השתבש. אנא בדוק את חיבור האינטרנט שלך ונסה שוב.",
+ "Buy Habib Coins": "קנה מטבעות חביב",
+ "Subscription required": "נדרש מנוי",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "כדי לצפות בפרופילים, יש צורך במנוי. כל מנוי כולל עד {count} התאמות.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "כדי לצפות בפרופילים, נדרש מנוי. הדבר עוזר לכסות את שירותי התמיכה וההתאמה שלנו וחל רק על משתמשים גברים"
}
diff --git a/src/translations/locales/hi.json b/src/translations/locales/hi.json
index b903f06..038351a 100644
--- a/src/translations/locales/hi.json
+++ b/src/translations/locales/hi.json
@@ -763,5 +763,9 @@
"Try again": "फिर से प्रयास करें",
"No advisors are currently available.": "इस समय कोई सलाहकार उपलब्ध नहीं है।",
"Connection error": "कनेक्शन त्रुटि",
- "Something went wrong. Please check your internet connection and try again.": "कुछ गलत हो गया। कृपया अपना इंटरनेट कनेक्शन जांचें और पुनः प्रयास करें।"
+ "Something went wrong. Please check your internet connection and try again.": "कुछ गलत हो गया। कृपया अपना इंटरनेट कनेक्शन जांचें और पुनः प्रयास करें।",
+ "Buy Habib Coins": "हबीब सिक्के खरीदें",
+ "Subscription required": "सदस्यता आवश्यक",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "प्रोफाइल देखने के लिए सदस्यता की आवश्यकता है। प्रत्येक सदस्यता में {count} मैच शामिल हैं।",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "प्रोफाइल देखने के लिए सदस्यता आवश्यक है। यह हमारी सहायता और मिलान सेवाओं को कवर करने में मदद करती है और केवल पुरुष उपयोगकर्ताओं पर लागू होती है"
}
diff --git a/src/translations/locales/id.json b/src/translations/locales/id.json
index 93bd881..29f29de 100644
--- a/src/translations/locales/id.json
+++ b/src/translations/locales/id.json
@@ -291,5 +291,9 @@
"Try again": "Coba lagi",
"No advisors are currently available.": "Saat ini tidak ada penasihat yang tersedia.",
"Connection error": "Kesalahan koneksi",
- "Something went wrong. Please check your internet connection and try again.": "Terjadi kesalahan. Silakan periksa koneksi internet Anda dan coba lagi."
+ "Something went wrong. Please check your internet connection and try again.": "Terjadi kesalahan. Silakan periksa koneksi internet Anda dan coba lagi.",
+ "Buy Habib Coins": "Beli Koin Habib",
+ "Subscription required": "Langganan diperlukan",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Untuk melihat profil, Anda memerlukan langganan. Setiap langganan mencakup hingga {count} kecocokan.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Untuk melihat profil, diperlukan langganan. Ini membantu menutupi layanan dukungan dan pencocokan kami dan hanya berlaku untuk pengguna pria"
}
diff --git a/src/translations/locales/ks.json b/src/translations/locales/ks.json
index 4ba924e..b09db01 100644
--- a/src/translations/locales/ks.json
+++ b/src/translations/locales/ks.json
@@ -291,5 +291,9 @@
"Try again": "دوبآ کوشش کریو",
"No advisors are currently available.": "فی الحأل کاہن مشیر دستیاب چھُنہِ۔",
"Connection error": "رابطٕ غلطی",
- "Something went wrong. Please check your internet connection and try again.": "کانٛہہ غلط ہوگیو۔ مہربٲنی کٔرتھ اپنؠ اِنٹرنیٹ کنکشن چیک کٔرِو تہٕ بیاکھ کوشِش کٔرِو۔"
+ "Something went wrong. Please check your internet connection and try again.": "کانٛہہ غلط ہوگیو۔ مہربٲنی کٔرتھ اپنؠ اِنٹرنیٹ کنکشن چیک کٔرِو تہٕ بیاکھ کوشِش کٔرِو۔",
+ "Buy Habib Coins": "حبیب سِکّہٕ خریٖد کٔرِو",
+ "Subscription required": "رکنیت ضروٗری ہے",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "پروفایلس وُچھنہٕ خٲطرٕ رکنیت ضروٗری ہے۔ ہر رکنیت مٮ۪ں {count} میچ شامل ہِن۔",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "پروفایلس وُچھنہٕ خٲطرٕ رکنیت ضروٗری ہے۔ یِہ ساہٕ سپورٹ تہٕ میچِنگ خِدمات ہٕنٛد کَرنٕ مدد کَرِتھ تہٕ صرف مَرد صارفین پؠٹھ لاگوٗ ہے"
}
diff --git a/src/translations/locales/pt.json b/src/translations/locales/pt.json
index 29f7e88..3c82807 100644
--- a/src/translations/locales/pt.json
+++ b/src/translations/locales/pt.json
@@ -291,5 +291,9 @@
"Try again": "Tentar novamente",
"No advisors are currently available.": "Nenhum consultor disponível no momento.",
"Connection error": "Erro de conexão",
- "Something went wrong. Please check your internet connection and try again.": "Algo deu errado. Verifique sua conexão com a internet e tente novamente."
+ "Something went wrong. Please check your internet connection and try again.": "Algo deu errado. Verifique sua conexão com a internet e tente novamente.",
+ "Buy Habib Coins": "Comprar moedas Habib",
+ "Subscription required": "Assinatura necessária",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Para ver perfis, você precisa de uma assinatura. Cada assinatura inclui até {count} correspondências.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Para ver perfis, é necessária uma assinatura. Isso ajuda a cobrir nossos serviços de suporte e correspondência e se aplica apenas a usuários masculinos"
}
diff --git a/src/translations/locales/ru.json b/src/translations/locales/ru.json
index e1708fc..5cdf00f 100644
--- a/src/translations/locales/ru.json
+++ b/src/translations/locales/ru.json
@@ -768,5 +768,9 @@
"Try again": "Попробовать снова",
"No advisors are currently available.": "На данный момент нет доступных консультантов.",
"Connection error": "Ошибка соединения",
- "Something went wrong. Please check your internet connection and try again.": "Что-то пошло не так. Проверьте подключение к интернету и попробуйте снова."
+ "Something went wrong. Please check your internet connection and try again.": "Что-то пошло не так. Проверьте подключение к интернету и попробуйте снова.",
+ "Buy Habib Coins": "Купить монеты Habib",
+ "Subscription required": "Требуется подписка",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Для просмотра профилей необходима подписка. Каждая подписка включает до {count} совпадений.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Для просмотра профилей требуется подписка. Это помогает покрыть наши услуги поддержки и подбора и применяется только к мужчинам"
}
diff --git a/src/translations/locales/sw.json b/src/translations/locales/sw.json
index 5162306..2eb48f2 100644
--- a/src/translations/locales/sw.json
+++ b/src/translations/locales/sw.json
@@ -291,5 +291,9 @@
"Try again": "Jaribu tena",
"No advisors are currently available.": "Hakuna washauri wanaopatikana kwa sasa.",
"Connection error": "Hitilafu ya muunganisho",
- "Something went wrong. Please check your internet connection and try again.": "Kuna hitilafu fulani. Tafadhali angalia muunganisho wako wa intaneti na ujaribu tena."
+ "Something went wrong. Please check your internet connection and try again.": "Kuna hitilafu fulani. Tafadhali angalia muunganisho wako wa intaneti na ujaribu tena.",
+ "Buy Habib Coins": "Nunua Sarafu za Habib",
+ "Subscription required": "Usajili unahitajika",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Ili kuona wasifu, unahitaji usajili. Kila usajili unajumuisha hadi mechi {count}.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Ili kuona wasifu, usajili unahitajika. Hii husaidia kugharamia huduma zetu za usaidizi na kuoanisha na inatumika kwa watumiaji wa kiume pekee"
}
diff --git a/src/translations/locales/tg.json b/src/translations/locales/tg.json
index 8cc49c1..ad9be91 100644
--- a/src/translations/locales/tg.json
+++ b/src/translations/locales/tg.json
@@ -291,5 +291,9 @@
"Try again": "Дубора кӯшиш кунед",
"No advisors are currently available.": "Дар айни замон маслиҳатдиҳон дастрас нест.",
"Connection error": "Хатои пайвастшавӣ",
- "Something went wrong. Please check your internet connection and try again.": "Чизе нодуруст рух дод. Лутфан пайвастшавии интернети худро санҷед ва дубора кӯшиш кунед."
+ "Something went wrong. Please check your internet connection and try again.": "Чизе нодуруст рух дод. Лутфан пайвастшавии интернети худро санҷед ва дубора кӯшиш кунед.",
+ "Buy Habib Coins": "Харидани тангаҳои Ҳабиб",
+ "Subscription required": "Обуна лозим аст",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Барои дидани профилҳо, ба обуна ниёз доред. Ҳар як обуна то {count} мувофиқатро дар бар мегирад.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Барои дидани профилҳо, обуна лозим аст. Ин барои пардохти хидматҳои дастгирӣ ва мувофиқат кӯмак мекунад ва танҳо ба корбарони мард дахл дорад"
}
diff --git a/src/translations/locales/tr.json b/src/translations/locales/tr.json
index 9c58f9d..54261fa 100644
--- a/src/translations/locales/tr.json
+++ b/src/translations/locales/tr.json
@@ -291,5 +291,9 @@
"Try again": "Tekrar dene",
"No advisors are currently available.": "Şu anda uygun danışman yok.",
"Connection error": "Bağlantı hatası",
- "Something went wrong. Please check your internet connection and try again.": "Bir şeyler yanlış gitti. Lütfen internet bağlantınızı kontrol edin ve tekrar deneyin."
+ "Something went wrong. Please check your internet connection and try again.": "Bir şeyler yanlış gitti. Lütfen internet bağlantınızı kontrol edin ve tekrar deneyin.",
+ "Buy Habib Coins": "Habib Jetonu Satın Al",
+ "Subscription required": "Abonelik gerekli",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Profilleri görüntülemek için aboneliğe ihtiyacınız var. Her abonelik {count} eşleşme içerir.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Profilleri görüntülemek için abonelik gereklidir. Bu, destek ve eşleştirme hizmetlerimizi karşılamaya yardımcı olur ve yalnızca erkek kullanıcılar için geçerlidir"
}
diff --git a/src/translations/locales/ul.json b/src/translations/locales/ul.json
index 8c839df..0ac58c5 100644
--- a/src/translations/locales/ul.json
+++ b/src/translations/locales/ul.json
@@ -291,5 +291,9 @@
"Try again": "دوبارہ کوشش کریں",
"No advisors are currently available.": "اس وقت کوئی مشاور دستیاب نہیں ہے۔",
"Connection error": "د ارتباط تېروتنه",
- "Something went wrong. Please check your internet connection and try again.": "یو څه غلط شو. مهرباني وکړئ خپل انټرنیټ ارتباط وګورئ او بیا هڅه وکړئ."
+ "Something went wrong. Please check your internet connection and try again.": "یو څه غلط شو. مهرباني وکړئ خپل انټرنیټ ارتباط وګورئ او بیا هڅه وکړئ.",
+ "Buy Habib Coins": "د حبیب سکې واخلئ",
+ "Subscription required": "ګډون ته اړتیا ده",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "د پروفایلونو لیدلو لپاره، تاسو ته ګډون ته اړتیا ده. هر ګډون کې تر {count} میچونه شاملې دي.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "د پروفایلونو لیدلو لپاره ګډون ته اړتیا ده. دا زموږ د ملاتړ او میچ کولو خدماتو لپاره مرسته کوي او یوازې د نارینه کاروونکو لپاره پلي کیږي"
}
diff --git a/src/translations/locales/ur.json b/src/translations/locales/ur.json
index b8e2016..dad99d5 100644
--- a/src/translations/locales/ur.json
+++ b/src/translations/locales/ur.json
@@ -291,5 +291,9 @@
"Try again": "دوبارہ کوشش کریں",
"No advisors are currently available.": "اس وقت کوئی مشاور دستیاب نہیں ہے۔",
"Connection error": "رابطے کی خرابی",
- "Something went wrong. Please check your internet connection and try again.": "کچھ غلط ہو گیا۔ براہ کرم اپنا انٹرنیٹ کنکشن چیک کریں اور دوبارہ کوشش کریں۔"
+ "Something went wrong. Please check your internet connection and try again.": "کچھ غلط ہو گیا۔ براہ کرم اپنا انٹرنیٹ کنکشن چیک کریں اور دوبارہ کوشش کریں۔",
+ "Buy Habib Coins": "حبیب سکے خریدیں",
+ "Subscription required": "رکنیت ضروری ہے",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "پروفائلز دیکھنے کے لیے رکنیت ضروری ہے۔ ہر رکنیت میں {count} میچ شامل ہیں۔",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "پروفائلز دیکھنے کے لیے رکنیت ضروری ہے۔ یہ ہماری سپورٹ اور میچنگ سروسز کی لاگت پوری کرنے میں مدد کرتا ہے اور صرف مرد صارفین پر لاگو ہوتا ہے"
}
diff --git a/src/translations/locales/uz.json b/src/translations/locales/uz.json
index ee28497..70829ce 100644
--- a/src/translations/locales/uz.json
+++ b/src/translations/locales/uz.json
@@ -291,5 +291,9 @@
"Try again": "Qayta urinib ko‘ring",
"No advisors are currently available.": "Hozircha mavjud maslahatchi yo‘q.",
"Connection error": "Ulanish xatosi",
- "Something went wrong. Please check your internet connection and try again.": "Nimadir noto'g'ri ketdi. Iltimos, internet ulanishingizni tekshiring va qayta urinib ko'ring."
+ "Something went wrong. Please check your internet connection and try again.": "Nimadir noto'g'ri ketdi. Iltimos, internet ulanishingizni tekshiring va qayta urinib ko'ring.",
+ "Buy Habib Coins": "Habib tangalarini sotib oling",
+ "Subscription required": "Obuna talab qilinadi",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "Profillarni ko'rish uchun obuna kerak. Har bir obuna {count}tagacha moslikni o'z ichiga oladi.",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "Profillarni ko'rish uchun obuna talab qilinadi. Bu bizning qo'llab-quvvatlash va moslashtirish xizmatlarimizni qoplashga yordam beradi va faqat erkak foydalanuvchilarga tegishli"
}
diff --git a/src/translations/locales/zh.json b/src/translations/locales/zh.json
index cc19f9f..089c613 100644
--- a/src/translations/locales/zh.json
+++ b/src/translations/locales/zh.json
@@ -763,5 +763,9 @@
"Try again": "重试",
"No advisors are currently available.": "目前没有可用的顾问。",
"Connection error": "连接错误",
- "Something went wrong. Please check your internet connection and try again.": "出了点问题。请检查您的互联网连接并重试。"
+ "Something went wrong. Please check your internet connection and try again.": "出了点问题。请检查您的互联网连接并重试。",
+ "Buy Habib Coins": "购买Habib币",
+ "Subscription required": "需要订阅",
+ "To view profiles, you need a subscription. Each subscription includes up to {count} matches.": "要查看个人资料,您需要订阅。每次订阅最多包含{count}次匹配。",
+ "To view profiles, a subscription is required. This helps cover our support and matching services and applies only to male users": "查看个人资料需要订阅。这有助于支付我们的支持和匹配服务费用,仅适用于男性用户"
}