ui phase 12

This commit is contained in:
hamid
2026-07-19 21:31:59 +03:30
parent 87fa4cd497
commit d33568bf31
39 changed files with 1049 additions and 247 deletions
+116
View File
@@ -0,0 +1,116 @@
# Persian (fa) copy style guide
One page, binding for `messages/fa.json`. `scripts/check-copy.mjs` (`npm run lint:copy`, part of
`npm run check`) enforces the banned-variant rules below so these decisions cannot silently regress.
This file does not repeat `en.json` conventions beyond what's noted in §7 — the English catalog is
hand-written and reviewed for idiom, not linted.
## 1. Brand name
**«بالین‌یار» — ZWNJ (``) between بالین and یار, always.** Never a plain space («بالین یار»).
The brand name appears in money/trust copy (login, escrow, refunds) as often as anywhere else — an
unstable brand mark there is the worst place to be inconsistent.
## 2. تأیید — hamza, always
Write **تأیید** (with hamza) and its derived forms — **تأییدشده**, **تأییدیه**, **تأیید کردن** — every
time, never تایید/تاییدشده/تاییدیه (hamza-less). This is the single most frequent word in a
verification product; one spelling, no exceptions, in every namespace (booking, payment, auth,
verification, admin, payouts, bnpl, refunds, legal — all of them).
## 3. جستجو — one form
Standard form: **جستجو** (no ZWNJ, one word). Not «جست‌وجو» / «جست و جو». Applies to the noun and any
compound (`در جستجو`, `نتایج جستجو`).
## 4. ZWNJ (نیم‌فاصله) rules
Use ZWNJ (``) — never a plain space or no separator — in:
- **می‌ + verb stem**: می‌شود، می‌کند، می‌پردازید، می‌ماند (never میشود/می شود).
- **Plural ها**: مراقب‌ها-style compounds keep the ZWNJ before ها when the base ends in a consonant that
would otherwise misread (`شب‌ها` not `شبها`); a plain plural on a word already ending in a vowel/silent-h
takes the ZWNJ too (`بچه‌ها`).
- **Compound past-participle adjectives**: تأییدشده، لغوشده، ردشده، منتشرشده، پرداخت‌شده — the doer/state
compound is one ZWNJ-joined word, not two spaced words («تایید شده») and not fused with no separator.
- Brand name itself (§1) is the other load-bearing ZWNJ case.
## 5. Punctuation & quotes
- Persian text uses «...» guillemets for quoted terms/labels in prose (as this document does), and
Persian «،» / «؛» for commas/semicolons *inside translated sentences* where the surrounding punctuation
is itself Persian prose (most UI strings use plain Latin `,`/`;` today for simplicity in short labels —
don't retrofit existing short strings, but prefer «،»/«؛» in new multi-clause sentences).
- English (`en.json`) uses **straight** apostrophes (`don't`, `couldn't`) throughout — never curly
(``, ``). One admin-namespace holdout (curly `don't`/`couldn't`) is fixed by this phase; don't
reintroduce curly quotes when editing English copy.
## 6. Domain glossary
- **بیمار** — the care recipient, used consistently everywhere except one parenthetical. Do not adopt
«مددجو» — it appeared exactly once (`booking.patient_label`) and has been dropped in favor of the
99%-majority «بیمار».
- **پرستار** — the caregiver, always (never «مراقب» as a noun for the person — «مراقب» only survives as
an adjective/role qualifier, e.g. `booking.gender_label` "جنسیت مراقب" meaning "the caregiver's gender").
- **رزرو** — a confirmed, paid booking. **درخواست رزرو** — a pre-payment request. Never conflate the two;
a `booking_request` is never called «رزرو» before it converts.
- **ویزیت** — one scheduled visit/session within a booking.
- **شبا** — IBAN, always («شماره شبا» for the field label, «شبا» alone elsewhere).
## 7. Shell naming system
One metaphor per audience class, not four:
- **End-user shells** (family, nurse — the apps people book/work through day to day) → **«اپلیکیشن»**:
«اپلیکیشن خانواده», «اپلیکیشن پرستار».
- **Back-office shells** (staff consoles — admin, partner-center) → **«کنسول»**: «کنسول مدیریت»,
«کنسول همکار».
- Never «نما» (view) or «پرتال» (portal) for a whole shell name — those read as one-off inconsistent
metaphors. (`booking.evv_nurse_view` "نمای پرستار" is a different thing — a chip labeling *whose
perspective* a shared booking-detail screen is rendered from, not a shell name; it correctly keeps
«نما» in that narrower sense.)
## 8. Verification pipeline vs. the identity step
**«تأیید صلاحیت»** names the whole 7-step nurse trust pipeline (nav entry, the verification hub's title,
its start/progress/approved states, the admin queue). **«احراز هویت»** stays the name of the one KYC
step inside it (national-ID + civil-registry + liveness selfie) — both on the nurse side
(`verification.step_identity_kyc`) and the admin side (`admin.step_identity_kyc`). A nurse who passed the
KYC step but still sees a pipeline titled «احراز هویت» incomplete in the nav used to read as a
contradiction; they no longer share a name.
## 9. Status vocabulary — one nurse-facing form, one admin-facing form
For "this step/item was rejected/failed" style states that appear on both a nurse-facing screen and an
admin-facing screen for the *same underlying concept* (a verification step's outcome):
- **Nurse-facing**: «رد شد» (`verification.status_failed`) — a short declarative sentence-style status,
matching the register of its sibling `status_passed` ("تأییدشده")/`status_in_review` ("در حال بررسی").
- **Admin-facing**: «ردشده» (`admin.step_failed`, `admin.agg_rejected`, `admin.rstatus_rejected`,
`admin.mstatus_rejected`) — the compound-adjective state form, matching the admin namespace's own
`step_passed`/`agg_approved`/`center_state_verified` ("تأییدشده") pattern.
This does **not** extend to unrelated money-failure vocabulary (`payouts.pstatus_failed`,
`refunds.rstatus_failed`, `admin.batch_status_failed` all legitimately use «ناموفق» — a transfer/payment
*failing* is a different concept from a document being *rejected*, and conflating them would blur a real
distinction).
## 10. Digits policy
Persian digits (۰۱۲۳۴۵۶۷۸۹) everywhere on `/fa` — both hard-coded literals (`"۲۴ ساعت"`) and
interpolated numbers. For an interpolated `{count}`/`{hours}`/… inside an ICU message, use the ICU
`number` sub-format (`{count, number}`) or a plain `#` inside a `plural` block — next-intl formats both
through the active locale (`fa` → Persian digits) automatically. When a raw number is interpolated at a
call site instead of through ICU (e.g. built into a larger string in code, not a message placeholder),
route it through `formatNumber` (`@/utils`) — never template a raw JS number directly into Persian text.
## 11. Register
Formal شما throughout, with polite imperatives (کنید) for actions and instructions. Already consistent
across the whole catalog — this codifies it so a future addition can't drift into informal تو/imperative
stems (نکن, برو).
## 12. Policy numbers
Legally/financially sensitive numbers that the admin config panel can change (the dispute-window hours,
cancellation lead-time hours, refund ETA days) are **never hard-coded into a message string**. The
message key takes a parameter (`{hours}`, `{minDays}`/`{maxDays}`) and the call site interpolates from
`client/src/constants/policy.ts` (single-sourced, REQ-065 tracks the eventual public config-read that
replaces the constants file). A config edit must never again silently make the UI copy lie.
+18 -17
View File
@@ -446,11 +446,11 @@
"categories_error": "Couldn't load categories.",
"cta_choose_category_city": "Choose a category and city",
"cta_loading": "Counting nurses…",
"cta_view_results": "View {count, plural, =0 {no nurses} one {# nurse} other {# nurses}}",
"cta_view_results": "{count, plural, =0 {No nurses found} one {View # nurse} other {View # nurses}}",
"cta_zero_title": "No nurses match these filters",
"cta_zero_hint": "Loosen a filter to see more nurses.",
"results_loading_title": "Searching…",
"results_count": "{count, plural, =0 {No nurses} one {# nurse} other {# nurses}}",
"results_count": "{count, plural, =0 {No nurses found} one {# nurse} other {# nurses}}",
"sort_static": "Sorted by rating",
"results_error": "Something went wrong loading results.",
"retry": "Try again",
@@ -568,7 +568,7 @@
"accepted_body": "Pay within the window below to confirm the booking.",
"payment_countdown_label": "Payment window",
"payment_elapsed": "The payment window has closed",
"continue_payment": "Continue to payment",
"continue_payment": "Continue to payment",
"cancel_request": "Cancel request",
"cancelling": "Cancelling…",
"cancel_confirm_title": "Cancel this request?",
@@ -831,12 +831,12 @@
"customer_title": "Sign in to Balinyaar",
"customer_subtitle": "Sign in with your mobile number",
"nurse_title": "Nurse sign in",
"nurse_subtitle": "For nurses with a Nursing Council licence",
"nurse_subtitle": "For nurses with a Nursing Council license",
"phone_label": "Mobile number",
"phone_invalid": "Enter a valid Iranian mobile number",
"request_code": "Get verification code",
"nurse_switch": "Are you a nurse? Nurse sign in",
"customer_switch": "Are you a family? Family sign in",
"nurse_switch": "Are you a nurse? Nurse sign in",
"customer_switch": "Are you a family? Family sign in",
"rate_limited": "Too many attempts — please try again shortly",
"otp_title": "Enter the verification code",
"otp_sent_to": "Code sent to {phone}",
@@ -1024,8 +1024,8 @@
"policy_free_24h": "Free cancellation",
"policy_partial_under_24h": "Partial refund",
"policy_customer_no_show": "No refund",
"lead_gt_24h": "More than 24 hours before the visit",
"lead_lt_24h": "Less than 24 hours before the visit",
"lead_gt_24h": "More than {hours} hours before the visit",
"lead_lt_24h": "Less than {hours} hours before the visit",
"lead_started": "The visit has already started",
"refund_percent": "{percent}% refunded",
"fee_percent": "Cancellation fee: {percent}%",
@@ -1086,7 +1086,7 @@
"eta_bnpl_body": "Unpaid installments are cancelled and credited back to your installment wallet; any installment you already paid is returned to your bank account.",
"eta_manual_title": "Manual bank transfer",
"eta_manual_body": "The amount is transferred to your bank account by our team.",
"eta_business_days": "About 710 business days",
"eta_business_days": "About {minDays}{maxDays} business days",
"eta_expected_label": "estimated by {date}",
"cancel_booking_cta": "Cancel booking",
"refund_section_title": "Refund",
@@ -1210,7 +1210,7 @@
"bucket_clawback": "Clawback outstanding",
"explainer_title": "How payouts work",
"explainer_point_1": "You're paid in weekly batches to your verified primary account.",
"explainer_point_2": "An amount becomes eligible only after the visit is verified (check-out) and the 72-hour dispute window closes.",
"explainer_point_2": "An amount becomes eligible only after the visit is verified (check-out) and the {hours}-hour dispute window closes.",
"explainer_point_3": "You receive the same amount whether the family paid by card or in installments — the installment provider's fee is never deducted from you.",
"tab_all": "All",
"tab_pending": "Pending",
@@ -1496,7 +1496,7 @@
"next_page": "Next",
"search_placeholder": "Search…",
"refresh": "Refresh",
"no_permission": "You dont have access to this console.",
"no_permission": "You don't have access to this console.",
"role_gate_hint": "This action is limited to certain admin roles.",
"masked_iban_label": "IBAN",
"ver_title": "Verification queue",
@@ -1544,7 +1544,7 @@
"doc_loading": "Loading document…",
"doc_expired": "This secure link expired.",
"doc_reload": "Re-request link",
"doc_error": "Couldnt load the document.",
"doc_error": "Couldn't load the document.",
"doc_open_new": "Open in a new tab",
"doc_file_meta": "{name} · {size}",
"payout_title": "Payout batches",
@@ -1568,7 +1568,7 @@
"payout_eligibility_note": "Only completed bookings past their dispute window appear here — computed server-side.",
"payout_run": "Run batch",
"payout_run_confirm_title": "Run this payout batch?",
"payout_run_confirm_body": "Money moves to nurses. This is protected by an idempotency key — a double-click cant pay a booking twice.",
"payout_run_confirm_body": "Money moves to nurses. This is protected by an idempotency key — a double-click can't pay a booking twice.",
"payout_run_summary_intro": "This batch will run and the amount below will be transferred:",
"payout_run_count_label": "Nurse count",
"payout_run_type_to_confirm": "Type “CONFIRM” or the amount to proceed",
@@ -1619,7 +1619,7 @@
"mod_publish": "Publish",
"mod_hide": "Hide",
"mod_reject": "Reject",
"mod_confirm_publish": "Publish this review? It becomes public and re-computes the nurses rating.",
"mod_confirm_publish": "Publish this review? It becomes public and re-computes the nurse's rating.",
"mod_confirm_hide": "Hide this review with the reason above?",
"mod_confirm_reject": "Reject this review with the reason above?",
"mod_done": "Review updated.",
@@ -1642,7 +1642,8 @@
"cfg_saved": "Configuration saved.",
"cfg_history": "Change history",
"cfg_history_title": "History — {key}",
"cfg_history_change": "{old} → {new}",
"cfg_history_change_old": "{old}",
"cfg_history_change_new": "{new}",
"cfg_history_empty": "No changes recorded yet.",
"cfg_group_fees": "Fees & VAT",
"cfg_group_deadlines": "Deadlines & windows",
@@ -1885,7 +1886,7 @@
"legal_type": "Legal entity type",
"is_mor_yes": "Merchant of record",
"is_mor_no": "Settlement runs through Balinyaar",
"access_denied": "You dont have access to a partner center.",
"access_denied": "You don't have access to a partner center.",
"nurses_title": "Sponsored nurses",
"nurses_empty": "No nurses sponsored yet.",
"nurses_col_name": "Nurse",
@@ -1924,7 +1925,7 @@
"invoice_row_vat": "VAT (on commission)",
"invoice_row_total": "Invoice total",
"invoice_download": "Download PDF",
"invoice_pdf_error": "Couldnt open the invoice PDF.",
"invoice_pdf_error": "Couldn't open the invoice PDF.",
"invoice_number": "Invoice #{number}",
"settlement_iban": "Settlement IBAN",
"settlement_export_csv": "Export CSV",
+101 -100
View File
@@ -10,7 +10,7 @@
"services": "خدمات",
"dashboard": "داشبورد",
"requests": "درخواست‌ها",
"verification": "احراز هویت",
"verification": "تأیید صلاحیت",
"visits": "ویزیت‌ها",
"earnings": "درآمدها",
"admin": "مدیریت",
@@ -60,7 +60,7 @@
"close": "بستن",
"optional": "اختیاری",
"currency_toman": "تومان",
"brand": "بالین یار",
"brand": "بالینیار",
"brand_tagline": "مراقبت مطمئن در خانه",
"open_sidebar": "باز کردن منو",
"switch_locale": "تغییر به {locale}",
@@ -73,11 +73,11 @@
},
"shell": {
"customer_app": "اپلیکیشن خانواده",
"nurse_app": مای پرستار",
"nurse_app": "اپلیکیشن پرستار",
"admin_console": "کنسول مدیریت",
"placeholder_body": "این بخش در فازهای بعدی تکمیل می‌شود.",
"partner_console": "پرتال همکار",
"switch_to_nurse": مای پرستار",
"partner_console": "کنسول همکار",
"switch_to_nurse": "اپلیکیشن پرستار",
"switch_to_customer": "اپلیکیشن خانواده"
},
"home": {
@@ -97,7 +97,7 @@
"nudge_profile_cta": "رفتن به پروفایل",
"patients_error": "حلقهٔ مراقبت شما بارگذاری نشد.",
"trust_escrow": "پرداخت امن امانی",
"trust_verified_nurses": "پرستاران تاییدشده",
"trust_verified_nurses": "پرستاران تأییدشده",
"trust_support": "پشتیبانی",
"rebook_with": "رزرو دوباره با {name}"
},
@@ -174,7 +174,7 @@
"app_language_hint": "زبان نمایش برنامه را انتخاب کنید.",
"sign_out": "خروج از حساب",
"sign_out_confirm_title": "خروج از حساب؟",
"sign_out_confirm_body": "برای ورود دوباره باید شمارهٔ موبایل خود را دوباره تایید کنید.",
"sign_out_confirm_body": "برای ورود دوباره باید شمارهٔ موبایل خود را دوباره تأیید کنید.",
"row_personal": "اطلاعات شخصی",
"row_addresses": "نشانی‌ها",
"row_language": "زبان",
@@ -196,8 +196,8 @@
"save": "ذخیره پروفایل",
"saved": "پروفایل ذخیره شد",
"unverified_title": "پروفایل شما هنوز فعال نیست",
"unverified_body": "برای نمایش به خانواده‌ها و دریافت رزرو، احراز هویت را تکمیل کنید.",
"unverified_cta": "تکمیل احراز هویت",
"unverified_body": "برای نمایش به خانواده‌ها و دریافت رزرو، تأیید صلاحیت را تکمیل کنید.",
"unverified_cta": "تکمیل تأیید صلاحیت",
"deferred_services": "خدمات و قیمت‌های خود را در بخش «خدمات و قیمت‌ها» مدیریت کنید؛ روزهای کاری در مرحله بعد اضافه می‌شود.",
"save_error": "ذخیرهٔ پروفایل انجام نشد. دوباره تلاش کنید.",
"avatar_upload_error": "بارگذاری عکس انجام نشد. دوباره تلاش کنید.",
@@ -224,7 +224,7 @@
"preview_reviews_count": "({count, plural, =0 {بدون نظر} one {# نظر} other {# نظر}})",
"preview_completed_visits": "{count, number} ویزیت موفق",
"preview_years_experience": "{years} سال سابقه",
"preview_verified_title": "بالین‌یار چه چیزی را تایید کرده است",
"preview_verified_title": "بالین‌یار چه چیزی را تأیید کرده است",
"preview_services_title": "خدمات",
"preview_services_empty": "هنوز خدمت فعالی ندارید — یک خدمت در بخش «خدمات و قیمت‌ها» اضافه کنید.",
"preview_coverage_title": "مناطق تحت پوشش",
@@ -248,8 +248,8 @@
"status_pending_chip": "در حال استعلام",
"status_pending_title": "در حال استعلام مالکیت حساب",
"status_pending_body": "در حال استعلام صحت شبا؛ معمولاً چند دقیقه طول می‌کشد…",
"status_verified_chip": اییدشد",
"status_verified_title": "حساب تایید شد",
"status_verified_chip": أییدشده",
"status_verified_title": "حساب تأیید شد",
"status_verified_body": "این حساب برای واریز درآمد شما آماده است.",
"status_mismatch_chip": "مغایرت مالکیت",
"status_mismatch_title": "حساب باید به نام خودتان باشد",
@@ -324,7 +324,7 @@
"adding": "در حال افزودن…",
"whole_city_chip": "کل شهر",
"empty_title": "هنوز منطقه‌ای ثبت نشده",
"empty_warning": "تا زمانی که حداقل یک منطقهٔ تحت پوشش اضافه نکنید، در جست‌وجو نمایش داده نمی‌شوید.",
"empty_warning": "تا زمانی که حداقل یک منطقهٔ تحت پوشش اضافه نکنید، در جستجو نمایش داده نمی‌شوید.",
"duplicate": "این منطقه از قبل تحت پوشش شماست.",
"city_required": "شهر را انتخاب کنید",
"added": "منطقهٔ تحت پوشش اضافه شد",
@@ -414,7 +414,7 @@
"row_profile": "تکمیل نمایه",
"row_services": "حداقل یک خدمت فعال",
"row_coverage": "محدودهٔ پوشش",
"row_bank": "شبای تاییدشده",
"row_bank": "شبای تأییدشده",
"row_bank_hint": "برای دریافت درآمد — برای نمایش در جستجو لازم نیست.",
"row_fix": "تکمیل",
"live_title": "فعال در جستجو",
@@ -424,7 +424,7 @@
},
"search": {
"title": "یافتن پرستار",
"subtitle": "فقط پرستاران تاییدشده و دارای صلاحیت اینجا نمایش داده می‌شوند.",
"subtitle": "فقط پرستاران تأییدشده و دارای صلاحیت اینجا نمایش داده می‌شوند.",
"section_category": "دستهٔ مراقبت",
"section_location": "شهر",
"section_gender": "جنسیت پرستار",
@@ -446,11 +446,11 @@
"categories_error": "بارگذاری دسته‌ها ممکن نشد.",
"cta_choose_category_city": "یک دسته و شهر انتخاب کنید",
"cta_loading": "در حال شمارش پرستاران…",
"cta_view_results": "مشاهده {count} پرستار",
"cta_view_results": "{count, plural, =0 {پرستاری یافت نشد} one {مشاهدهٔ # پرستار} other {مشاهدهٔ # پرستار}}",
"cta_zero_title": "پرستاری با این فیلترها یافت نشد",
"cta_zero_hint": "فیلترها را کمی باز کنید تا پرستاران بیشتری ببینید.",
"results_loading_title": "در حال جستجو…",
"results_count": "{count} پرستار",
"results_count": "{count, plural, =0 {پرستاری یافت نشد} one {# پرستار} other {# پرستار}}",
"sort_static": "مرتب‌شده بر اساس امتیاز",
"results_error": "در بارگذاری نتایج مشکلی پیش آمد.",
"retry": "تلاش دوباره",
@@ -463,7 +463,7 @@
"unnamed_nurse": "پرستار",
"unnamed_service": "خدمت",
"completed_visits": "{count, number} ویزیت موفق",
"reviews_count": "({count} نظر)",
"reviews_count": "({count, plural, =0 {بدون نظر} one {# نظر} other {# نظر}})",
"distance_km": "{km} کیلومتر",
"price_from": "از",
"price_chip_range": "از {min} تا {max} تومان",
@@ -500,7 +500,7 @@
"form_subtitle": "برای این پرستار درخواست بفرستید. هنوز پرداختی انجام نمی‌شود؛ ابتدا پرستار درخواست را بررسی می‌کند.",
"whathappens_title": "چه اتفاقی می‌افتد؟",
"missing_nurse_title": "پرستاری انتخاب نشده است",
"missing_nurse_body": "ابتدا از جست‌وجو یک پرستار انتخاب کنید و سپس درخواست دهید.",
"missing_nurse_body": "ابتدا از جستجو یک پرستار انتخاب کنید و سپس درخواست دهید.",
"missing_nurse_cta": "یافتن پرستار",
"patient_label": "بیمار (مددجو)",
"patient_placeholder": "انتخاب بیمار",
@@ -530,7 +530,7 @@
"gender_hint": "برای مراقبت‌های بدنی، هم‌جنس بودن مراقب اهمیت دارد. انتخاب شما همراه درخواست ارسال می‌شود.",
"notes_label": "توضیحات برای پرستار",
"notes_placeholder": "آنچه پرستار پیش از پذیرش می‌بیند…",
"notes_hint": "این تنها چیزی است که پرستار پیش از پذیرش می‌بیند؛ شرح کامل مراقبت پس از تایید ثبت می‌شود.",
"notes_hint": "این تنها چیزی است که پرستار پیش از پذیرش می‌بیند؛ شرح کامل مراقبت پس از تأیید ثبت می‌شود.",
"notes_counter": "{count}/{max}",
"submit": "ارسال درخواست",
"submitting": "در حال ارسال…",
@@ -557,18 +557,18 @@
"awaiting_title": "درخواست برای پرستار ارسال شد",
"awaiting_subtitle": "در انتظار پاسخ پرستار",
"step_submitted": "درخواست ثبت شد",
"step_awaiting": "در انتظار تایید پرستار",
"step_payment": "پرداخت و تایید نهایی",
"step_awaiting": "در انتظار تأیید پرستار",
"step_payment": "پرداخت و تأیید نهایی",
"response_countdown_label": "مهلت پاسخ پرستار",
"response_elapsed": "در انتظار تایید سرور…",
"response_elapsed": "در انتظار تأیید سرور…",
"response_notify_note": "نتیجه را به شما اطلاع می‌دهیم",
"countdown_about_hours": "حدود {hours} ساعت",
"countdown_about_minutes": "حدود {minutes} دقیقه",
"accepted_badge": "پرستار تایید کرد",
"accepted_badge": "پرستار تأیید کرد",
"accepted_body": "برای نهایی‌شدن رزرو، در مهلت زیر پرداخت را انجام دهید.",
"payment_countdown_label": "مهلت پرداخت",
"payment_elapsed": "مهلت پرداخت به پایان رسید",
"continue_payment": "ادامه پرداخت",
"continue_payment": "ادامه پرداخت",
"cancel_request": "انصراف از درخواست",
"cancelling": "در حال لغو…",
"cancel_confirm_title": "این درخواست لغو شود؟",
@@ -629,13 +629,13 @@
"bd_my_bookings": "رزروهای من",
"timeline_title": "روند رزرو",
"bstatus_pending_payment": "در انتظار پرداخت",
"bstatus_confirmed": اییدشده",
"bstatus_confirmed": أییدشده",
"bstatus_in_progress": "در حال انجام",
"bstatus_completed": "تکمیل‌شده",
"bstatus_disputed": "در حال بررسی اختلاف",
"bstatus_closed": "بسته‌شده",
"bstatus_cancelled": "لغوشده",
"confirmed_note": "رزرو شما تایید شد. ویزیت‌های زیر برنامه‌ریزی شده‌اند.",
"confirmed_note": "رزرو شما تأیید شد. ویزیت‌های زیر برنامه‌ریزی شده‌اند.",
"in_progress_note": "یک ویزیت هم‌اکنون در حال انجام است.",
"completed_note": "همهٔ ویزیت‌ها به پایان رسید.",
"dispute_window_note": "مبلغ پس از پایان مهلت بررسی در {date} برای پرستار آزاد می‌شود.",
@@ -643,7 +643,7 @@
"disputed_note": "این رزرو در حال بررسی توسط تیم پشتیبانی است.",
"sessions_title": "برنامهٔ ویزیت‌ها",
"session_index": "ویزیت {n}",
"session_count": "{count} ویزیت",
"session_count": "{count, plural, =0 {ویزیتی نیست} one {# ویزیت} other {# ویزیت}}",
"sstatus_scheduled": "برنامه‌ریزی‌شده",
"sstatus_in_progress": "در حال انجام",
"sstatus_completed": "تکمیل‌شده",
@@ -658,20 +658,20 @@
"money_nurse_earning": "درآمد شما",
"evv_today_title": "ویزیت امروز",
"evv_visits_title": "ویزیت‌های امروز",
"evv_visits_subtitle": "برای هر ویزیت، ورود و خروج را با EVV ثبت کنید.",
"evv_visits_subtitle": "ثبت حضور الکترونیکی (EVV) — ورود و خروج شما ثبت می‌شود تا ویزیت بدون اختلاف تأیید شود.",
"evv_no_visits": "برای امروز ویزیتی برنامه‌ریزی نشده است.",
"evv_check_in": "ثبت ورود (EVV)",
"evv_check_out": "ثبت خروج (EVV)",
"evv_checking_in": "در حال ثبت ورود…",
"evv_checking_out": "در حال ثبت خروج…",
"evv_acquiring_location": "در حال دریافت موقعیت…",
"evv_banner_in_range": "ورود ثبت شد {time} · موقعیت تایید شد (EVV)",
"evv_banner_in_range": "ورود ثبت شد {time} · موقعیت تأیید شد (EVV)",
"evv_banner_out_of_range": "ورود ثبت شد {time} · موقعیت خارج از محدوده (در حال بررسی)",
"evv_banner_no_gps": "ورود ثبت شد {time} · موقعیت ثبت نشد",
"evv_presence_headline": "پرستار در محل است · ورود {time}",
"evv_checked_out_at": "خروج ثبت شد {time}",
"evv_gps_denied_note": "دسترسی به موقعیت داده نشد — همچنان می‌توانید ویزیت را ثبت کنید؛ برای بررسی علامت‌گذاری می‌شود.",
"evv_no_open_check_in": "ورود بازی برای ثبت خروج وجود ندارد.",
"evv_no_open_check_in": "ورودِ ثبت‌شده‌ای برای این ویزیت وجود ندارد؛ ابتدا ورود را ثبت کنید.",
"evv_not_startable": "این ویزیت هنوز قابل شروع نیست.",
"evv_checked_in_toast": "ورود ثبت شد.",
"evv_checked_out_toast": "خروج ثبت شد.",
@@ -680,7 +680,7 @@
"evv_nurse_view": "نمای پرستار",
"view_booking": "مشاهدهٔ رزرو",
"care_title": "دستورالعمل مراقبت",
"care_subtitle": "پس از تایید، به‌عنوان پرستار مسئول با شما به اشتراک گذاشته شده است.",
"care_subtitle": "پس از تأیید، به‌عنوان پرستار مسئول با شما به اشتراک گذاشته شده است.",
"care_conditions": "شرایط پزشکی",
"care_medications": "داروها",
"care_allergies": "حساسیت‌ها",
@@ -692,7 +692,7 @@
"care_locked_title": "شرح مراقبت",
"care_locked_body": "شرح کامل مراقبت تنها برای پرستار مسئول شما و پشتیبانی قابل مشاهده است.",
"list_title": "رزروهای من",
"list_subtitle": "مراقبت‌های تاییدشدهٔ شما.",
"list_subtitle": "مراقبت‌های تأییدشدهٔ شما.",
"list_error": "بارگذاری رزروها ممکن نشد.",
"list_total": "مبلغ کل",
"inbox_error": "درخواست‌های شما بارگذاری نشد.",
@@ -709,7 +709,7 @@
"address_title": "آدرس",
"address_open_map": "مسیریابی",
"address_open_web_map": "نمایش روی نقشه",
"address_pending_note": "آدرس پس از تایید رزرو در دسترس قرار می‌گیرد.",
"address_pending_note": "آدرس پس از تأیید رزرو در دسترس قرار می‌گیرد.",
"in_visit_title": "در حال ویزیت",
"in_visit_elapsed": "{duration} در محل",
"evv_checkout_confirm_title": "اتمام این ویزیت؟",
@@ -747,7 +747,7 @@
"notifications_entry_empty": "اعلان جدیدی ندارید"
},
"payment": {
"title_checkout": ایید و پرداخت",
"title_checkout": أیید و پرداخت",
"row_service_cost": "هزینه خدمت",
"row_service_cost_with_count": "هزینه خدمت ({count, plural, one {# ویزیت} other {# ویزیت}})",
"row_commission": "کارمزد بالین‌یار",
@@ -757,7 +757,7 @@
"escrow_explainer_toggle": "چطور کار می‌کند؟",
"escrow_step_pay": "پرداخت",
"escrow_step_hold": "امانت نزد بالین‌یار",
"escrow_step_release": "آزادسازی پس از تایید پایان ویزیت",
"escrow_step_release": "آزادسازی پس از تأیید پایان ویزیت",
"escrow_cancellation_note": "در صورت لغو رزرو پیش از انجام ویزیت، مبلغ طبق سیاست لغو بازپرداخت می‌شود.",
"total_payable_label": "مبلغ قابل پرداخت",
"secure_gateway_notice": "پرداخت امن از طریق درگاه بانکی",
@@ -765,10 +765,10 @@
"bnpl_option": "یا پرداخت اقساطی",
"state_initiating": "در حال آغاز پرداخت…",
"state_redirecting": "در حال انتقال به درگاه پرداخت…",
"state_pending_title": "در حال تایید پرداخت…",
"state_pending_hint": "پرداخت شما نزد درگاه در حال تایید است؛ این مرحله معمولاً چند لحظه طول می‌کشد.",
"state_pending_title": "در حال تأیید پرداخت…",
"state_pending_hint": "پرداخت شما نزد درگاه در حال تأیید است؛ این مرحله معمولاً چند لحظه طول می‌کشد.",
"stage_returned": "بازگشت از درگاه",
"stage_confirming": "در انتظار تایید بانک",
"stage_confirming": "در انتظار تأیید بانک",
"state_pending_duration_hint": "معمولاً کمتر از یک دقیقه طول می‌کشد.",
"check_again": "بررسی دوباره",
"state_failed_title": "پرداخت ناموفق بود",
@@ -819,7 +819,7 @@
"moadian_submitted": "ارسال‌شده",
"moadian_registered": "ثبت‌شده",
"moadian_failed": "ناموفق",
"pstatus_pending": "در انتظار تایید",
"pstatus_pending": "در انتظار تأیید",
"pstatus_succeeded": "موفق",
"pstatus_failed": "ناموفق",
"error_title": "مشکلی پیش آمد",
@@ -828,27 +828,27 @@
"issuer_platform": "بالین‌یار"
},
"auth": {
"customer_title": "ورود به بالین یار",
"customer_title": "ورود به بالینیار",
"customer_subtitle": "با شماره موبایل خود وارد شوید",
"nurse_title": "ورود پرستاران",
"nurse_subtitle": "ویژه پرستاران دارای پروانه نظام پرستاری",
"phone_label": "شماره موبایل",
"phone_invalid": "شماره موبایل معتبر وارد کنید",
"request_code": "دریافت کد تایید",
"nurse_switch": "پرستار هستید؟ ورود پرستاران",
"customer_switch": "خانواده هستید؟ ورود خانواده‌ها",
"request_code": "دریافت کد تأیید",
"nurse_switch": "پرستار هستید؟ ورود پرستاران",
"customer_switch": "خانواده هستید؟ ورود خانواده‌ها",
"rate_limited": "به‌دلیل تلاش زیاد، کمی بعد دوباره تلاش کنید",
"otp_title": "کد تایید را وارد کنید",
"otp_title": "کد تأیید را وارد کنید",
"otp_sent_to": "کد به شماره {phone} ارسال شد",
"otp_verify_customer": ایید و ادامه",
"otp_verify_nurse": ایید و ورود",
"otp_verify_customer": أیید و ادامه",
"otp_verify_nurse": أیید و ورود",
"otp_invalid": "کد وارد شده نادرست یا منقضی شده است",
"otp_locked": "به‌دلیل تلاش‌های زیاد، ورود موقتاً قفل شد. کد جدید دریافت کنید.",
"resend_in": "ارسال مجدد کد تا {time}",
"resend": "ارسال مجدد کد",
"change_number": "تغییر شماره",
"routing_title": "در حال ورود…",
"select_role_title": "به بالین یار خوش آمدید",
"select_role_title": "به بالینیار خوش آمدید",
"select_role_subtitle": "برای شروع، نقش خود را انتخاب کنید",
"role_customer": "خانواده",
"role_customer_desc": "برای رزرو پرستار و مراقبت در منزل",
@@ -858,28 +858,28 @@
"continue": "ادامه",
"guard_denied": "شما به این بخش دسترسی ندارید.",
"account_error_title": "حساب شما بارگذاری نشد",
"account_error_body": "در ارتباط با بالین یار برای بارگذاری حساب شما مشکلی پیش آمد. اتصال خود را بررسی کنید و دوباره تلاش کنید.",
"account_error_body": "در ارتباط با بالینیار برای بارگذاری حساب شما مشکلی پیش آمد. اتصال خود را بررسی کنید و دوباره تلاش کنید.",
"account_error_retry": "تلاش مجدد",
"trust_verified_nurses": "پرستاران دارای پروانه صلاحیت حرفه‌ای و احراز هویت‌شده",
"trust_escrow_payment": "پرداخت شما تا تایید انجام خدمت، امانی نزد بالین‌یار می‌ماند",
"trust_escrow_payment": "پرداخت شما تا تأیید انجام خدمت، امانی نزد بالین‌یار می‌ماند",
"trust_support": "پشتیبانی در تمام مراحل مراقبت",
"consent_line": "با ورود، <terms>شرایط استفاده</terms> و <privacy>حریم خصوصی</privacy> را می‌پذیرید."
},
"verification": {
"title": "احراز هویت",
"title": "تأیید صلاحیت",
"subtitle": "برای فعال‌شدن پروفایل و دریافت رزرو، این مراحل را کامل کنید.",
"retry": "تلاش مجدد",
"load_error": "بارگذاری وضعیت احراز هویت ممکن نشد.",
"start_title": "احراز هویت را آغاز کنید",
"start_body": "اعتماد، بنیان بالین یار است. با تکمیل این مراحل، خانواده‌ها با اطمینان شما را انتخاب می‌کنند.",
"start_cta": "شروع احراز هویت",
"load_error": "بارگذاری وضعیت تأیید صلاحیت ممکن نشد.",
"start_title": "تأیید صلاحیت را آغاز کنید",
"start_body": "اعتماد، بنیان بالینیار است. با تکمیل این مراحل، خانواده‌ها با اطمینان شما را انتخاب می‌کنند.",
"start_cta": "شروع تأیید صلاحیت",
"starting": "در حال آماده‌سازی…",
"progress_title": "پیشرفت احراز هویت",
"progress_title": "پیشرفت تأیید صلاحیت",
"progress_count": "{passed} از {total}",
"blocking_summary": "تا تکمیل همهٔ مراحل، پروفایل شما قابل نمایش و رزرو نیست.",
"continue": "ادامه",
"continue_step": "ادامه مرحلهٔ {n}",
"approved_title": "احراز هویت تکمیل شد",
"approved_title": "تأیید صلاحیت تکمیل شد",
"approved_body": "همه‌چیز تأیید شد. اکنون می‌توانید پروفایل و خدمات خود را منتشر کنید.",
"approved_cta": "انتشار خدمات",
"step_mobile_verified": "شماره موبایل",
@@ -896,7 +896,7 @@
"step_criminal_record_desc": "آپلود گواهی؛ بررسی دستی. دارای تاریخ انقضا.",
"step_bank_account_verification": "تأیید حساب بانکی",
"step_bank_account_verification_desc": "استعلام خودکار مالکیت شبا با کد ملی.",
"status_passed": اییدشده",
"status_passed": أییدشده",
"status_in_review": "در حال بررسی",
"status_pending": "در انتظار",
"status_failed": "رد شد",
@@ -938,7 +938,7 @@
"back_to_checklist": "بازگشت به فهرست",
"credentials_title": "مدارک حرفه‌ای",
"credentials_subtitle": "مدارک شما پس از بارگذاری، توسط کارشناس بررسی می‌شود.",
"credentials_needs_start": "ابتدا احراز هویت را از فهرست وضعیت آغاز کنید.",
"credentials_needs_start": "ابتدا تأیید صلاحیت را از فهرست وضعیت آغاز کنید.",
"ino_number_label": "شماره نظام پرستاری",
"ino_number_hint": "شماره عضویت نظام پرستاری خود را وارد کنید.",
"ino_number_required": "شماره نظام پرستاری را وارد کنید.",
@@ -972,20 +972,20 @@
"review_timeline_submitted": "مدارک ثبت شد",
"review_timeline_review": "بررسی توسط کارشناس",
"review_timeline_activation": "فعال‌سازی نشان",
"review_approved_title": "احراز هویت تکمیل شد",
"review_approved_title": "تأیید صلاحیت تکمیل شد",
"review_approved_body": "همهٔ مراحل تأیید شد. اکنون می‌توانید پروفایل خود را منتشر کنید.",
"review_summary_title": "خلاصهٔ وضعیت",
"review_view_status": "مشاهده وضعیت",
"badge_verified": اییدشده",
"badge_verified": أییدشده",
"badge_unverified": "احراز نشده",
"badge_expired": "منقضی شده",
"explainer_title": "بالین‌یار چه چیزی را تایید کرده است",
"explainer_open_label": "مشاهدهٔ جزئیات تاییدیه",
"explainer_title": "بالین‌یار چه چیزی را تأیید کرده است",
"explainer_open_label": "مشاهدهٔ جزئیات تأییدیه",
"explainer_close": "بستن",
"explainer_intro": "این پرستار این مراحل را با موفقیت گذرانده است:",
"explainer_approved_at": "تاریخ تایید: {date}",
"explainer_not_verified": "این پرستار هنوز احراز هویت نشده است.",
"explainer_error": "بارگذاری جزئیات تاییدیه ممکن نشد.",
"explainer_approved_at": "تاریخ تأیید: {date}",
"explainer_not_verified": "صلاحیت این پرستار هنوز تأیید نشده است.",
"explainer_error": "بارگذاری جزئیات تأییدیه ممکن نشد.",
"publish_ready_title": "آمادهٔ فعال‌سازی",
"publish_ready_body": "راه‌اندازی کامل است. پذیرش رزرو را روشن کنید تا در جستجو نمایش داده شوید و درخواست دریافت کنید.",
"publish_blocked_title": "برای فعال‌سازی، راه‌اندازی را کامل کنید",
@@ -1017,15 +1017,15 @@
"refunds": {
"cancel_title": "لغو رزرو",
"step_review": "بازبینی",
"step_confirm": ایید",
"step_confirm": أیید",
"offramp_note": "پیش از لغو، این گزینه‌ها را هم در نظر بگیرید — لغو ممکن است زمان پرستار شما را از دست بدهد.",
"reschedule_cta": "تغییر زمان",
"contact_support_cta": "گفتگو با پشتیبانی",
"policy_free_24h": "لغو رایگان",
"policy_partial_under_24h": "بازپرداخت جزئی",
"policy_customer_no_show": "بدون بازپرداخت",
"lead_gt_24h": "بیش از ۲۴ ساعت مانده به ویزیت",
"lead_lt_24h": "کمتر از ۲۴ ساعت مانده به ویزیت",
"lead_gt_24h": "بیش از {hours} ساعت مانده به ویزیت",
"lead_lt_24h": "کمتر از {hours} ساعت مانده به ویزیت",
"lead_started": "ویزیت آغاز شده است",
"refund_percent": "{percent}٪ بازپرداخت می‌شود",
"fee_percent": "کارمزد لغو: {percent}٪",
@@ -1049,9 +1049,9 @@
"reason_notes_label": "توضیحات (اختیاری)",
"acknowledge_label": "بازپرداخت و کارمزد نمایش‌داده‌شده را می‌پذیرم.",
"continue_cta": "ادامه",
"confirm_title": ایید لغو",
"confirm_restate": "مبلغ <refund></refund> به شما بازپرداخت می‌شود و کارمزد لغو <fee></fee> کسر می‌گردد.",
"confirm_cta": ایید لغو",
"confirm_title": أیید لغو",
"confirm_restate": "مبلغ <refund></refund> به شما بازپرداخت می‌شود و کارمزد لغو <fee></fee> کسر می‌شود.",
"confirm_cta": أیید لغو",
"submitting": "در حال ثبت…",
"not_cancellable_title": "این رزرو قابل لغو نیست",
"not_cancellable_body": "جلسهٔ باقی‌مانده‌ای برای لغو وجود ندارد. اگر پیش‌تر لغو شده است، وضعیت بازپرداخت را دنبال کنید.",
@@ -1086,7 +1086,7 @@
"eta_bnpl_body": "اقساط پرداخت‌نشده لغو و معادل آن به کیف اعتباری اقساطی شما بازگردانده می‌شود؛ هر قسطی که پرداخت کرده‌اید به حساب بانکی شما برمی‌گردد.",
"eta_manual_title": "واریز بانکی دستی",
"eta_manual_body": "مبلغ توسط تیم بالین‌یار به حساب بانکی شما واریز می‌شود.",
"eta_business_days": "حدود ۷ تا ۱۰ روز کاری",
"eta_business_days": "حدود {minDays} تا {maxDays} روز کاری",
"eta_expected_label": "تا حدود {date}",
"cancel_booking_cta": "لغو رزرو",
"refund_section_title": "بازپرداخت",
@@ -1096,7 +1096,7 @@
},
"bnpl": {
"title": "پرداخت اقساطی",
"ownership_note": "ارائه‌دهنده کل مبلغ را یک‌جا به بالین‌یار می‌پردازد و ریسک نکول مشتری کاملاً با اوست؛ بازپرداخت اقساط میان شما و ارائه‌دهنده است.",
"ownership_note": "قسط‌ها را مستقیماً به ارائه‌دهنده می‌پردازید؛ بالین‌یار مبلغ کامل رزرو را همان ابتدا دریافت می‌کند و اگر قسطی پرداخت نشود، مسئولیت آن با ارائه‌دهنده است — نه شما و نه پرستار.",
"payable_amount": "مبلغ قابل پرداخت",
"total_amount_named": "مبلغ کل با طرح {plan}",
"total_repayment": "مجموع بازپرداخت",
@@ -1117,7 +1117,7 @@
"provider_tagline_torobpay": "طرح اقساطی",
"method_title": "روش پرداخت",
"method_card": "پرداخت کامل (کارت بانکی)",
"method_card_hint": "پرداخت یک‌جا و تایید فوری رزرو",
"method_card_hint": "پرداخت یک‌جا و تأیید فوری رزرو",
"installments_heading": "پرداخت اقساطی",
"continue_with": "ادامه با {provider}",
"no_providers_title": "اقساط در دسترس نیست",
@@ -1140,11 +1140,11 @@
"consent_label": "با استعلام اعتبارسنجی و سابقه اعتباری من توسط {provider} موافقم.",
"check_eligibility": "استعلام اعتبار",
"checking_eligibility": "در حال استعلام اعتبار…",
"approved_title": "اعتبار شما تایید شد",
"approved_title": "اعتبار شما تأیید شد",
"credit_ceiling_label": "سقف اعتبار قابل استفاده",
"approve_continue": ایید و ادامه",
"declined_not_eligible_title": "اعتبارسنجی تایید نشد",
"declined_not_eligible_body": "متأسفانه ارائه‌دهنده اعتبار لازم را تایید نکرد.",
"approve_continue": أیید و ادامه",
"declined_not_eligible_title": "اعتبارسنجی تأیید نشد",
"declined_not_eligible_body": "متأسفانه ارائه‌دهنده اعتبار لازم را تأیید نکرد.",
"declined_ceiling_title": "سقف اعتبار کافی نیست",
"declined_ceiling_body": "مبلغ این رزرو از سقف اعتبار قابل استفاده شما بیشتر است.",
"pay_with_card": "پرداخت با کارت",
@@ -1154,13 +1154,13 @@
"installment_n": "قسط {n, number}",
"contract_note": "قرارداد اقساط میان شما و {provider} است؛ بالین‌یار مبلغ کامل رزرو را یک‌جا دریافت می‌کند.",
"contract_consent": "شرایط و قرارداد اقساط را خوانده‌ام و می‌پذیرم.",
"pay_down_payment": ایید نهایی و پرداخت پیش‌پرداخت",
"pay_down_payment": أیید نهایی و پرداخت پیش‌پرداخت",
"redirecting": "در حال انتقال به {provider}…",
"handoff_title": "در حال انتقال به ارائه‌دهنده",
"handoff_body": "برای تایید رزرو، قرارداد اقساط را با {provider} تکمیل کنید.",
"handoff_body": "برای تأیید رزرو، قرارداد اقساط را با {provider} تکمیل کنید.",
"handoff_pay_success": "پرداخت پیش‌پرداخت (نمایشی)",
"handoff_pay_fail": "انصراف",
"settling_title": "در حال تایید طرح اقساط شما",
"settling_title": "در حال تأیید طرح اقساط شما",
"settling_body": "ارائه‌دهنده در حال تسویه سفارش است. طولی نمی‌کشد.",
"settle_failed_title": "پرداخت اقساطی کامل نشد",
"settle_failed_body": "ارائه‌دهنده تراکنش را کامل نکرد. می‌توانید دوباره تلاش کنید یا با کارت پرداخت کنید.",
@@ -1209,8 +1209,8 @@
"bucket_paid": "پرداخت‌شده (کل)",
"bucket_clawback": "بازپس‌گیری معوق",
"explainer_title": "پرداخت‌ها چگونه کار می‌کنند",
"explainer_point_1": "پرداخت‌ها به‌صورت هفتگی و به حساب تاییدشده اصلی شما واریز می‌شود.",
"explainer_point_2": "هر مبلغ تنها پس از تایید ویزیت (خروج) و بسته‌شدن پنجره ۷۲ ساعته اعتراض، آماده پرداخت می‌شود.",
"explainer_point_1": "پرداخت‌ها به‌صورت هفتگی و به حساب تأییدشده اصلی شما واریز می‌شود.",
"explainer_point_2": "هر مبلغ تنها پس از تأیید ویزیت (خروج) و بسته‌شدن پنجرهٔ {hours} ساعتهٔ اعتراض، آماده پرداخت می‌شود.",
"explainer_point_3": "چه خانواده با کارت پرداخت کند چه اقساطی، مبلغ شما یکسان است — کارمزد ارائه‌دهنده اقساط هرگز از شما کسر نمی‌شود.",
"tab_all": "همه",
"tab_pending": "در انتظار",
@@ -1240,7 +1240,7 @@
"transfer_reference_label": "کد پیگیری واریز",
"list_error": "بارگذاری درآمدها ممکن نشد.",
"list_empty_title": "هنوز درآمدی ندارید",
"list_empty_body": "ویزیت‌های تکمیل و تاییدشده اینجا نمایش داده می‌شوند.",
"list_empty_body": "ویزیت‌های تکمیل و تأییدشده اینجا نمایش داده می‌شوند.",
"retry": "تلاش دوباره",
"page_prev": "قبلی",
"page_next": "بعدی",
@@ -1434,7 +1434,7 @@
"back_to_tickets": "بازگشت به تیکت‌ها",
"thread_error": "بارگذاری گفتگو ممکن نشد.",
"thread_empty_title": "هنوز پیامی نیست",
"thread_empty_body": "هنوز پیامی نیست، هماهنگی را شروع کنید.",
"thread_empty_body": "هنوز پیامی نیست. هماهنگی را شروع کنید.",
"closed_notice": "این گفتگو بسته شده است.",
"sending": "در حال ارسال…",
"send": "ارسال پیام",
@@ -1499,7 +1499,7 @@
"no_permission": "شما به این بخش دسترسی ندارید.",
"role_gate_hint": "این اقدام تنها برای نقش‌های مشخصی از مدیران در دسترس است.",
"masked_iban_label": "شبا",
"ver_title": "صف احراز هویت",
"ver_title": "صف تأیید صلاحیت",
"ver_subtitle": "پرستاران در انتظار بررسی مدارک.",
"ver_empty": "صف خالی است — موردی برای بررسی نیست.",
"ver_col_nurse": "پرستار",
@@ -1512,7 +1512,7 @@
"ver_progress": "{done} از {total}",
"ver_next_step": "بعدی: {step}",
"ver_open_case": "بررسی",
"ver_case_title": "پرونده احراز هویت",
"ver_case_title": "پرونده تأیید صلاحیت",
"ver_next_case": "پروندهٔ بعدی",
"ver_prev_case": "پروندهٔ قبلی",
"ver_identity_name": "نام ثبت‌شده",
@@ -1571,7 +1571,7 @@
"payout_run_confirm_body": "مبلغ به پرستاران منتقل می‌شود. این اقدام با کلید یکتا محافظت می‌شود — کلیک دوباره باعث پرداخت مضاعف نمی‌شود.",
"payout_run_summary_intro": "این دسته اجرا و مبلغ زیر واریز می‌شود:",
"payout_run_count_label": "تعداد پرستاران",
"payout_run_type_to_confirm": "برای تایید، «تایید» یا مبلغ را تایپ کنید",
"payout_run_type_to_confirm": "برای تأیید، «تأیید» یا مبلغ را تایپ کنید",
"payout_running": "در حال ارسال به سامانهٔ بانکی…",
"payout_skipped": "پرستاران نادیده‌گرفته‌شده",
"payout_batch_title": "دسته #{id}",
@@ -1619,7 +1619,7 @@
"mod_publish": "انتشار",
"mod_hide": "پنهان‌سازی",
"mod_reject": "رد",
"mod_confirm_publish": "این نظر منتشر شود؟ عمومی می‌شود و امتیاز پرستار بازمحاسبه می‌گردد.",
"mod_confirm_publish": "این نظر منتشر شود؟ عمومی می‌شود و امتیاز پرستار بازمحاسبه می‌شود.",
"mod_confirm_hide": "این نظر با دلیل واردشده پنهان شود؟",
"mod_confirm_reject": "این نظر با دلیل واردشده رد شود؟",
"mod_done": "نظر به‌روزرسانی شد.",
@@ -1638,11 +1638,12 @@
"cfg_json_error": "JSON نامعتبر است.",
"cfg_empty_error": "مقدار الزامی است.",
"cfg_save_confirm_title": "این تغییر پیکربندی ذخیره شود؟",
"cfg_save_confirm_body": "این تغییر ممیزی می‌شود و بلافاصله اعمال می‌گردد. رزروها و ثبت‌های مالی قبلی را بازنمی‌گرداند.",
"cfg_save_confirm_body": "این تغییر ممیزی می‌شود و بلافاصله اعمال می‌شود. رزروها و ثبت‌های مالی قبلی را بازنمی‌گرداند.",
"cfg_saved": "پیکربندی ذخیره شد.",
"cfg_history": "تاریخچهٔ تغییرات",
"cfg_history_title": "تاریخچه — {key}",
"cfg_history_change": "{old} ← {new}",
"cfg_history_change_old": "{old}",
"cfg_history_change_new": "{new}",
"cfg_history_empty": "هنوز تغییری ثبت نشده.",
"cfg_group_fees": "کارمزد و مالیات",
"cfg_group_deadlines": "مهلت‌ها و پنجره‌ها",
@@ -1665,7 +1666,7 @@
"hol_year": "سال",
"alert_title": "هشدارهای پشتیبانی",
"alert_subtitle": "صف داخلی — هرگز به مشتری یا پرستار نمایش داده نمی‌شود.",
"alert_empty": "هشدار بازی وجود ندارد.",
"alert_empty": "هشداری برای رسیدگی نیست.",
"alert_col_type": "نوع",
"alert_col_entity": "مرتبط با",
"alert_col_owner": "مسئول",
@@ -1801,7 +1802,7 @@
"step_pending": "در انتظار",
"step_in_review": "در حال بررسی",
"step_passed": "تأییدشده",
"step_failed": "ناموفق",
"step_failed": "ردشده",
"step_expired": "منقضی",
"step_identity_kyc": "احراز هویت",
"step_shahkar_match": "تطبیق شاهکار",
@@ -1897,7 +1898,7 @@
"bookings_col_date": "تاریخ",
"bookings_col_status": "وضعیت",
"bstatus_pending_payment": "در انتظار پرداخت",
"bstatus_confirmed": ایید شده",
"bstatus_confirmed": أییدشده",
"bstatus_in_progress": "در حال انجام",
"bstatus_completed": "تکمیل‌شده",
"bstatus_disputed": "مورد اختلاف",
@@ -1948,12 +1949,12 @@
"terms_title": "شرایط استفاده",
"privacy_title": "حریم خصوصی",
"draft_banner": "این متن پیش‌نویس است و هنوز توسط تیم حقوقی بازبینی نشده؛ پیش از انتشار نهایی قابل استناد نیست.",
"terms_intro": "این شرایط پیش‌نویس، نحوه ارتباط بالین‌یار بین خانواده‌ها و پرستاران مستقل و تاییدشده مراقبت در منزل را توضیح می‌دهد. با ساخت حساب کاربری، شرایط زیر را می‌پذیرید.",
"terms_intro": "این شرایط پیش‌نویس، نحوه ارتباط بالین‌یار بین خانواده‌ها و پرستاران مستقل و تأییدشده مراقبت در منزل را توضیح می‌دهد. با ساخت حساب کاربری، شرایط زیر را می‌پذیرید.",
"terms_sections": [
{ "title": "ماهیت خدمت", "body": "بالین‌یار یک بازارگاه است و پرستاران را استخدام نمی‌کند. پرستاران مستقل یا شاغل در مراکز پرستاری، خدمات خود را ثبت می‌کنند و خانواده‌ها از طریق پلتفرم جست‌وجو، رزرو و پرداخت انجام می‌دهند." },
{ "title": "رزرو و پرداخت", "body": "مبلغ کامل رزرو را از طریق بالین‌یار و با کارت پرداخت می‌کنید. این مبلغ به‌صورت امانی نزد بالین‌یار نگه‌داری می‌شود و تنها پس از تایید انجام خدمت و پایان مهلت اعتراض، به‌صورت هفتگی به پرستار پرداخت می‌شود." },
{ "title": "لغو و بازگشت وجه", "body": "لغو یک رزرو تاییدشده، بسته به فاصله زمانی تا زمان مراجعه، ممکن است مشمول کارمزد شود که پیش از تایید نهایی به شما نمایش داده می‌شود. مبالغ بازگشتی تاییدشده به همان روش پرداخت اصلی یا ارائه‌دهنده مربوطه بازمی‌گردد." },
{ "title": "احراز هویت پرستاران", "body": "هر پرستار پیش از قابل‌رزرو شدن، مراحل احراز هویت، بررسی پروانه صلاحیت حرفه‌ای و سایر مراحل الزامی را می‌گذراند. آنچه تایید شده در پروفایل او نمایش داده می‌شود." },
{ "title": "ماهیت خدمت", "body": "بالین‌یار یک بازارگاه است و پرستاران را استخدام نمی‌کند. پرستاران مستقل یا شاغل در مراکز پرستاری، خدمات خود را ثبت می‌کنند و خانواده‌ها از طریق پلتفرم جستجو، رزرو و پرداخت انجام می‌دهند." },
{ "title": "رزرو و پرداخت", "body": "مبلغ کامل رزرو را از طریق بالین‌یار و با کارت پرداخت می‌کنید. این مبلغ به‌صورت امانی نزد بالین‌یار نگه‌داری می‌شود و تنها پس از تأیید انجام خدمت و پایان مهلت اعتراض، به‌صورت هفتگی به پرستار پرداخت می‌شود." },
{ "title": "لغو و بازگشت وجه", "body": "لغو یک رزرو تأییدشده، بسته به فاصله زمانی تا زمان مراجعه، ممکن است مشمول کارمزد شود که پیش از تأیید نهایی به شما نمایش داده می‌شود. مبالغ بازگشتی تأییدشده به همان روش پرداخت اصلی یا ارائه‌دهنده مربوطه بازمی‌گردد." },
{ "title": "احراز هویت پرستاران", "body": "هر پرستار پیش از قابل‌رزرو شدن، مراحل احراز هویت، بررسی پروانه صلاحیت حرفه‌ای و سایر مراحل الزامی را می‌گذراند. آنچه تأیید شده در پروفایل او نمایش داده می‌شود." },
{ "title": "مسئولیت‌های شما", "body": "اطلاعات دقیق درباره فرد دریافت‌کننده مراقبت ارائه دهید، برای هر موضوع مرتبط با رزرو از طریق سامانه تیکت پشتیبانی اپلیکیشن ارتباط بگیرید و با پرستاران محترمانه رفتار کنید." },
{ "title": "مسئولیت‌پذیری", "body": "بالین‌یار واسط رزرو بین خانواده‌ها و پرستاران مستقل است و خود ارائه‌دهنده خدمات درمانی نیست. اختلافات از طریق سامانه تیکت پشتیبانی رسیدگی می‌شود." },
{ "title": "تغییر این شرایط", "body": "ممکن است این شرایط با تحول خدمت به‌روزرسانی شود. تغییرات مهم پیش از اعمال، در اپلیکیشن اطلاع‌رسانی می‌شود." },