frontend phase 15

This commit is contained in:
hamid
2026-07-10 20:28:06 +03:30
parent bc51cf59b4
commit 70cf00ce4a
151 changed files with 10711 additions and 44 deletions
+430 -2
View File
@@ -19,7 +19,20 @@
"notifications": "Notifications",
"support": "Support",
"login": "Login",
"logout": "Logout"
"logout": "Logout",
"payouts": "Payouts",
"reviews": "Reviews",
"config": "Configuration",
"holidays": "Holidays",
"alerts": "Alerts",
"audit": "Audit log",
"partners": "Partner centers",
"roles": "Roles",
"tickets": "Tickets",
"partner_home": "Center",
"partner_nurses": "Sponsored nurses",
"partner_bookings": "Bookings",
"partner_settlement": "Settlement"
},
"common": {
"dark_mode": "Dark mode",
@@ -44,7 +57,8 @@
"customer_app": "Family app",
"nurse_app": "Nurse view",
"admin_console": "Admin console",
"placeholder_body": "This area will be built in a later phase."
"placeholder_body": "This area will be built in a later phase.",
"partner_console": "Partner portal"
},
"home": {
"greeting_named": "Hi, {name}",
@@ -1146,5 +1160,419 @@
"mark_all_read": "Mark all read",
"load_more": "Load more",
"bell_aria": "{count, number} unread notifications"
},
"admin": {
"overview_title": "Backoffice",
"overview_subtitle": "Operate the marketplace — verify, refund, pay out, moderate, configure.",
"filter_all": "All",
"filter_label": "Filter",
"apply": "Apply",
"clear": "Clear",
"cancel": "Cancel",
"confirm": "Confirm",
"save": "Save",
"saving": "Saving…",
"saved": "Saved",
"retry": "Retry",
"loading": "Loading…",
"error_generic": "Something went wrong. Please try again.",
"back": "Back",
"close": "Close",
"view": "View",
"open": "Open",
"none": "—",
"reason_label": "Reason",
"reason_required": "A reason is required.",
"note_label": "Note",
"actor": "Actor",
"timestamp": "Time",
"showing_range": "Showing {from}{to} of {total}",
"page_indicator": "Page {page}",
"prev_page": "Previous",
"next_page": "Next",
"search_placeholder": "Search…",
"refresh": "Refresh",
"no_permission": "You dont have access to this console.",
"role_gate_hint": "This action is limited to certain admin roles.",
"masked_iban_label": "IBAN",
"ver_title": "Verification queue",
"ver_subtitle": "Nurses awaiting document review.",
"ver_empty": "Queue clear — nothing to review.",
"ver_col_nurse": "Nurse",
"ver_col_step": "Step",
"ver_col_status": "Status",
"ver_col_submitted": "Submitted",
"ver_progress": "{done} of {total}",
"ver_next_step": "Next: {step}",
"ver_open_case": "Review",
"ver_case_title": "Verification case",
"ver_identity_name": "Identity on file",
"ver_steps_title": "Steps",
"ver_documents_title": "Documents",
"ver_credentials_title": "Credentials",
"ver_no_documents": "No documents for this step.",
"ver_automated_badge": "Automated check",
"ver_pass": "Pass",
"ver_reject": "Reject",
"ver_pass_step": "Pass step",
"ver_reject_step": "Reject step",
"ver_reject_reason_ph": "Why is this step rejected?",
"ver_credential_title": "Record credential",
"ver_credential_number": "Credential number",
"ver_holder_name": "Holder name",
"ver_holder_hint": "Must match the verified identity name, or the credential is rejected.",
"ver_issuing_authority": "Issuing authority",
"ver_issued_at": "Issued at",
"ver_expires_at": "Expires at",
"ver_expiry_required": "An expiry date is required for this credential.",
"ver_expiring_warning": "Expiring credential",
"ver_approve": "Approve verification",
"ver_reject_all": "Reject verification",
"ver_approve_hint": "Enabled only when every required step has passed.",
"ver_approve_confirm": "Approve this nurse? The server flips their verified status; this cannot be undone here.",
"ver_reject_confirm": "Reject this verification with the reason above?",
"ver_decided": "Decision recorded.",
"doc_loading": "Loading document…",
"doc_expired": "This secure link expired.",
"doc_reload": "Re-request link",
"doc_error": "Couldnt load the document.",
"doc_open_new": "Open in a new tab",
"doc_file_meta": "{name} · {size}",
"payout_title": "Payout batches",
"payout_subtitle": "Weekly nurse payouts — preview, run, reconcile.",
"payout_empty": "No payout batches yet.",
"payout_col_period": "Period",
"payout_col_count": "Payouts",
"payout_col_total": "Total",
"payout_col_status": "Status",
"payout_col_processing": "Processing date",
"payout_holiday_shift": "Shifted off a bank holiday",
"payout_preview": "Preview next batch",
"payout_preview_title": "Eligibility preview",
"payout_period_start": "Period start",
"payout_period_end": "Period end",
"payout_eligible_nurses": "Eligible nurses",
"payout_col_gross": "Gross earnings",
"payout_col_clawback": "Clawback netted",
"payout_col_net": "Net",
"payout_no_iban": "No verified IBAN — will be skipped",
"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_running": "Submitting to the bank rail…",
"payout_skipped": "Skipped nurses",
"payout_batch_title": "Batch #{id}",
"payout_rows_title": "Payouts in this batch",
"payout_row_nurse": "Nurse",
"payout_row_net": "Net",
"payout_row_status": "Status",
"payout_row_ref": "Transfer ref",
"payout_failure_reason": "Failure: {reason}",
"payout_retry": "Retry payout",
"payout_retry_confirm": "Retry this failed payout? (Idempotency-protected.)",
"payout_record_ref": "Record transfer reference",
"payout_record_ref_ph": "Bank transfer reference",
"payout_ref_saved": "Transfer reference recorded.",
"payout_decomp": "{gross} gross {clawback} clawback = {net} net",
"payout_ran": "Batch submitted — now processing.",
"refund_title": "Refund",
"refund_open": "Open refund panel",
"refund_linked_booking": "Booking #{id}",
"refund_preview_title": "Refund preview",
"refund_percentage": "Refund rate",
"refund_row_fee": "Platform commission refunded",
"refund_row_payout": "Nurse payout refunded",
"refund_row_total": "Total refund",
"refund_channel": "Channel",
"refund_channel_hint": "How the money is returned — chosen by the server.",
"refund_eta": "Estimated to the customer: {date}",
"refund_eta_bnpl": "BNPL reverts take ~710 business days.",
"refund_clawback_notice": "The nurse was already paid — a clawback will be created automatically.",
"refund_initiate": "Initiate refund",
"refund_approve": "Approve",
"refund_reject": "Reject",
"refund_confirm": "Initiate this refund on booking #{id}?",
"refund_provider_failed": "The provider revert failed.",
"refund_done": "Refund processed.",
"refund_reason_category": "Reason",
"refund_notes_ph": "Notes (optional)",
"mod_title": "Review moderation",
"mod_subtitle": "Publish, hide, or reject submitted reviews.",
"mod_empty": "Nothing to moderate.",
"mod_low_rating": "Low rating",
"mod_col_rating": "Rating",
"mod_col_review": "Review",
"mod_col_context": "Nurse / booking",
"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_hide": "Hide this review with the reason above?",
"mod_confirm_reject": "Reject this review with the reason above?",
"mod_done": "Review updated.",
"mod_nurse": "Nurse #{id}",
"mod_booking": "Booking #{id}",
"cfg_title": "Platform configuration",
"cfg_subtitle": "Typed, audited settings that drive fees, deadlines, and scheduling.",
"cfg_col_key": "Key",
"cfg_col_value": "Value",
"cfg_col_type": "Type",
"cfg_col_updated": "Last updated",
"cfg_edit": "Edit",
"cfg_updated_by": "by {actor}",
"cfg_range_error": "A rate must be between 0 and 1.",
"cfg_int_error": "This must be a whole number.",
"cfg_json_error": "Invalid JSON.",
"cfg_empty_error": "A value is required.",
"cfg_save_confirm_title": "Save this configuration change?",
"cfg_save_confirm_body": "This change is audited and takes effect immediately. It does NOT retroactively change already-computed bookings or ledger entries.",
"cfg_saved": "Configuration saved.",
"cfg_history": "Change history",
"cfg_history_title": "History — {key}",
"cfg_history_change": "{old} → {new}",
"cfg_history_empty": "No changes recorded yet.",
"cfg_group_fees": "Fees & VAT",
"cfg_group_deadlines": "Deadlines & windows",
"cfg_group_evv": "EVV",
"cfg_group_bnpl": "BNPL",
"cfg_group_cancellation": "Cancellation tiers",
"cfg_group_other": "Other",
"hol_title": "Holiday calendar",
"hol_subtitle": "Bank-closed days shift payout scheduling. The server computes the shift.",
"hol_empty": "No holidays in this range.",
"hol_col_date": "Date",
"hol_col_name": "Name",
"hol_col_type": "Type",
"hol_col_bank": "Bank closed",
"hol_add": "Add holiday",
"hol_edit": "Edit holiday",
"hol_name_fa": "Name (Persian)",
"hol_bank_hint": "When on, payouts falling on this day shift to the next business day.",
"hol_saved": "Holiday saved.",
"hol_year": "Year",
"alert_title": "Support alerts",
"alert_subtitle": "Internal triage — never shown to customers or nurses.",
"alert_empty": "No open alerts.",
"alert_col_type": "Type",
"alert_col_entity": "Linked to",
"alert_col_owner": "Owner",
"alert_col_status": "Status",
"alert_col_created": "Raised",
"alert_assign_me": "Assign to me",
"alert_assign": "Assign",
"alert_resolve": "Resolve",
"alert_resolve_title": "Resolve alert",
"alert_resolve_note_ph": "How was this resolved?",
"alert_assigned": "Alert assigned.",
"alert_resolved": "Alert resolved.",
"alert_link_booking": "Booking #{id}",
"alert_link_review": "Review #{id}",
"alert_link_entity": "{type} #{id}",
"alert_unassigned": "Unassigned",
"audit_title": "Audit log",
"audit_subtitle": "Append-only record of every admin state change. Read-only.",
"audit_empty": "No audit entries for this filter.",
"audit_col_entity": "Entity",
"audit_col_action": "Action",
"audit_col_actor": "Actor",
"audit_col_time": "Time",
"audit_entity_type_ph": "Entity type (e.g. PlatformConfig)",
"audit_entity_id_ph": "Entity id",
"audit_from": "From",
"audit_to": "To",
"audit_diff_title": "Changed fields",
"audit_diff_field": "Field",
"audit_diff_old": "Old",
"audit_diff_new": "New",
"audit_no_diff": "No field-level diff recorded.",
"audit_redacted": "<redacted>",
"ticket_title": "Ticket queue",
"ticket_subtitle": "Every ticket across the platform. Internal notes are staff-only.",
"ticket_empty": "No tickets match this filter.",
"ticket_col_ref": "Reference",
"ticket_col_subject": "Subject",
"ticket_col_category": "Category",
"ticket_col_status": "Status",
"ticket_col_booking": "Booking",
"ticket_search_ref_ph": "Search by reference code",
"ticket_thread_title": "Ticket {ref}",
"ticket_internal_badge": "Internal note",
"ticket_public_reply": "Reply",
"ticket_internal_note": "Internal note",
"ticket_composer_public_ph": "Reply to the participants…",
"ticket_composer_internal_ph": "Add a staff-only internal note…",
"ticket_send": "Send",
"ticket_sent": "Message sent.",
"ticket_participants": "Participants",
"ticket_linked_refund": "Refund #{id}",
"partner_title": "Partner centers",
"partner_subtitle": "Licensed centers that sponsor nurses and may be merchant-of-record.",
"partner_empty": "No partner centers yet.",
"partner_col_name": "Name",
"partner_col_mor": "Merchant of record",
"partner_col_nurses": "Nurses",
"partner_col_state": "State",
"partner_create": "Create center",
"partner_edit": "Edit center",
"partner_detail_title": "Center detail",
"partner_name": "Center name",
"partner_legal_type": "Legal entity type",
"partner_permit": "پروانه تأسیس",
"partner_permit_en": "MoH establishment permit",
"partner_tech_director": "مسئول فنی",
"partner_tech_director_license": "Technical director license",
"partner_enamad": "نماد اعتماد الکترونیکی",
"partner_iban": "Settlement IBAN",
"partner_iban_write_hint": "Enter the full IBAN to set it; it is stored masked and only the last 4 digits are shown afterward.",
"partner_commission": "Commission rate",
"partner_is_mor": "Merchant of record",
"partner_is_mor_hint": "When on, this center issues invoices and is the settlement target.",
"partner_admin_user": "Center admin user id",
"partner_verify": "Verify & activate",
"partner_verify_confirm": "Record licensing approval and activate this center?",
"partner_activate": "Activate",
"partner_suspend": "Suspend",
"partner_saved": "Center saved.",
"partner_verified_toast": "Center verified and activated.",
"partner_roster_title": "Sponsored nurses",
"partner_assign_nurse": "Assign nurse",
"partner_assign_nurse_ph": "Nurse profile id",
"partner_unlink_nurse": "Remove",
"partner_nurse_assigned": "Nurse assignment updated.",
"role_title": "Roles & access",
"role_subtitle": "Grant or revoke admin roles. (Awaiting backend role endpoints.)",
"role_deferred": "This console is served by a client-side placeholder until the RBAC endpoints ship.",
"role_col_user": "User",
"role_col_role": "Role",
"role_col_granted": "Granted",
"role_grant": "Grant role",
"role_revoke": "Revoke",
"role_grant_confirm": "Grant {role} to user #{id}?",
"role_revoke_confirm": "Revoke {role} from user #{id}?",
"role_updated": "Role updated.",
"agg_not_started": "Not started",
"agg_pending": "Pending",
"agg_in_review": "In review",
"agg_approved": "Approved",
"agg_rejected": "Rejected",
"agg_suspended": "Suspended",
"step_not_started": "Not started",
"step_pending": "Pending",
"step_in_review": "In review",
"step_passed": "Passed",
"step_failed": "Failed",
"step_expired": "Expired",
"step_identity_kyc": "Identity (KYC)",
"step_shahkar_match": "Shahkar match",
"step_moh_competency_license": "MoH competency license",
"step_ino_membership": "INO membership",
"step_criminal_record": "Criminal record",
"step_bank_account_verification": "Bank account check",
"batch_status_draft": "Draft",
"batch_status_processing": "Processing",
"batch_status_partially_failed": "Partially failed",
"batch_status_completed": "Completed",
"batch_status_failed": "Failed",
"pstatus_pending": "Pending",
"pstatus_submitted": "Submitted",
"pstatus_paid": "Paid",
"pstatus_failed": "Failed",
"channel_psp_card": "Card (PSP)",
"channel_bnpl_revert": "BNPL revert",
"channel_manual": "Manual bank",
"rstatus_requested": "Requested",
"rstatus_approved": "Approved",
"rstatus_processing": "Processing",
"rstatus_succeeded": "Succeeded",
"rstatus_failed": "Failed",
"rstatus_rejected": "Rejected",
"mstatus_pending_moderation": "Pending",
"mstatus_published": "Published",
"mstatus_hidden": "Hidden",
"mstatus_rejected": "Rejected",
"dtype_string": "Text",
"dtype_int": "Integer",
"dtype_decimal": "Decimal",
"dtype_bool": "Boolean",
"dtype_json": "JSON",
"htype_official": "Official",
"htype_religious": "Religious",
"htype_national": "National",
"atype_low_rating": "Low rating",
"atype_evv_no_show": "No-show",
"atype_evv_location_mismatch": "EVV location mismatch",
"atype_verification_expired": "Verification expired",
"atype_shared_sim": "Shared SIM",
"atype_payment_anomaly": "Payment anomaly",
"atype_fraud_signal": "Fraud signal",
"atype_nurse_clawback": "Nurse clawback",
"atype_emergency": "Emergency",
"astatus_open": "Open",
"astatus_assigned": "Assigned",
"astatus_resolved": "Resolved",
"sev_low": "Low",
"sev_medium": "Medium",
"sev_high": "High",
"tstatus_open": "Open",
"tstatus_closed": "Closed",
"tcat_coordination": "Coordination",
"tcat_support": "Support",
"tcat_refund": "Refund",
"tcat_emergency": "Emergency",
"role_super_admin": "Super admin",
"role_admin": "Admin",
"role_support": "Support",
"role_finance": "Finance",
"role_moderation": "Moderation",
"center_state_draft": "Draft",
"center_state_pending_verification": "Pending verification",
"center_state_verified": "Verified",
"center_state_suspended": "Suspended",
"yes": "Yes",
"no": "No"
},
"partner": {
"home_title": "Your center",
"home_subtitle": "Onboarding, sponsored nurses, and settlement at a glance.",
"state_banner_draft": "Your center is a draft — complete onboarding to go live.",
"state_banner_pending": "Your center is pending verification.",
"state_banner_suspended": "Your center is suspended. Contact Balinyaar.",
"license_title": "License details",
"permit": "پروانه تأسیس",
"tech_director": "مسئول فنی",
"enamad": "نماد اعتماد الکترونیکی",
"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.",
"nurses_title": "Sponsored nurses",
"nurses_empty": "No nurses sponsored yet.",
"nurses_col_name": "Nurse",
"nurses_col_verified": "Verification",
"bookings_title": "Sponsored bookings",
"bookings_empty": "No bookings under this center yet.",
"bookings_col_id": "Booking",
"bookings_col_patient": "Patient",
"bookings_col_date": "Date",
"bookings_col_status": "Status",
"settlement_title": "Settlement & invoices",
"settlement_not_mor": "This center is not merchant-of-record — settlement runs through Balinyaar, and no commission invoices are issued here.",
"settlement_empty": "No invoices yet.",
"settlement_col_booking": "Booking",
"settlement_col_gross": "Gross",
"settlement_col_total": "Total",
"settlement_moadian": "سامانه مودیان",
"settlement_moadian_ref": "Moadian reference",
"settlement_moadian_pending": "Not yet submitted to سامانه مودیان",
"invoice_row_gross": "Gross service fee",
"invoice_row_commission": "Platform commission",
"invoice_row_bnpl_commission": "BNPL commission",
"invoice_row_vat": "VAT (on commission)",
"invoice_row_total": "Invoice total",
"invoice_download": "Download PDF",
"invoice_pdf_error": "Couldnt open the invoice PDF.",
"invoice_number": "Invoice #{number}",
"settlement_iban": "Settlement IBAN"
}
}
+430 -2
View File
@@ -19,7 +19,20 @@
"notifications": "اعلان‌ها",
"support": "پشتیبانی",
"login": "ورود",
"logout": "خروج"
"logout": "خروج",
"payouts": "تسویه‌ها",
"reviews": "نظرات",
"config": "پیکربندی",
"holidays": "تعطیلات",
"alerts": "هشدارها",
"audit": "گزارش ممیزی",
"partners": "مراکز همکار",
"roles": "نقش‌ها",
"tickets": "تیکت‌ها",
"partner_home": "مرکز",
"partner_nurses": "پرستاران تحت پوشش",
"partner_bookings": "رزروها",
"partner_settlement": "تسویه"
},
"common": {
"dark_mode": "حالت تاریک",
@@ -44,7 +57,8 @@
"customer_app": "اپلیکیشن خانواده",
"nurse_app": "نمای پرستار",
"admin_console": "کنسول مدیریت",
"placeholder_body": "این بخش در فازهای بعدی تکمیل می‌شود."
"placeholder_body": "این بخش در فازهای بعدی تکمیل می‌شود.",
"partner_console": "پرتال همکار"
},
"home": {
"greeting_named": "سلام، {name}",
@@ -1146,5 +1160,419 @@
"mark_all_read": "علامت‌گذاری همه به‌عنوان خوانده‌شده",
"load_more": "نمایش بیشتر",
"bell_aria": "{count, number} اعلان خوانده‌نشده"
},
"admin": {
"overview_title": "پیشخان مدیریت",
"overview_subtitle": "راهبری بازار — احراز، بازپرداخت، تسویه، بررسی و پیکربندی.",
"filter_all": "همه",
"filter_label": "فیلتر",
"apply": "اعمال",
"clear": "پاک کردن",
"cancel": "انصراف",
"confirm": "تأیید",
"save": "ذخیره",
"saving": "در حال ذخیره…",
"saved": "ذخیره شد",
"retry": "تلاش دوباره",
"loading": "در حال بارگذاری…",
"error_generic": "خطایی رخ داد. دوباره تلاش کنید.",
"back": "بازگشت",
"close": "بستن",
"view": "مشاهده",
"open": "باز کردن",
"none": "—",
"reason_label": "دلیل",
"reason_required": "ذکر دلیل الزامی است.",
"note_label": "یادداشت",
"actor": "عامل",
"timestamp": "زمان",
"showing_range": "نمایش {from}{to} از {total}",
"page_indicator": "صفحه {page}",
"prev_page": "قبلی",
"next_page": "بعدی",
"search_placeholder": "جستجو…",
"refresh": "به‌روزرسانی",
"no_permission": "شما به این بخش دسترسی ندارید.",
"role_gate_hint": "این اقدام تنها برای نقش‌های مشخصی از مدیران در دسترس است.",
"masked_iban_label": "شبا",
"ver_title": "صف احراز هویت",
"ver_subtitle": "پرستاران در انتظار بررسی مدارک.",
"ver_empty": "صف خالی است — موردی برای بررسی نیست.",
"ver_col_nurse": "پرستار",
"ver_col_step": "مرحله",
"ver_col_status": "وضعیت",
"ver_col_submitted": "زمان ارسال",
"ver_progress": "{done} از {total}",
"ver_next_step": "بعدی: {step}",
"ver_open_case": "بررسی",
"ver_case_title": "پرونده احراز هویت",
"ver_identity_name": "نام ثبت‌شده",
"ver_steps_title": "مراحل",
"ver_documents_title": "مدارک",
"ver_credentials_title": "مدارک حرفه‌ای",
"ver_no_documents": "مدرکی برای این مرحله ثبت نشده.",
"ver_automated_badge": "بررسی خودکار",
"ver_pass": "تأیید",
"ver_reject": "رد",
"ver_pass_step": "تأیید مرحله",
"ver_reject_step": "رد مرحله",
"ver_reject_reason_ph": "چرا این مرحله رد می‌شود؟",
"ver_credential_title": "ثبت مدرک",
"ver_credential_number": "شماره مدرک",
"ver_holder_name": "نام دارنده",
"ver_holder_hint": "باید با نام احرازشده مطابقت داشته باشد وگرنه رد می‌شود.",
"ver_issuing_authority": "مرجع صادرکننده",
"ver_issued_at": "تاریخ صدور",
"ver_expires_at": "تاریخ انقضا",
"ver_expiry_required": "برای این مدرک تاریخ انقضا الزامی است.",
"ver_expiring_warning": "مدرک در حال انقضا",
"ver_approve": "تأیید نهایی احراز",
"ver_reject_all": "رد احراز",
"ver_approve_hint": "تنها زمانی فعال است که همهٔ مراحل لازم تأیید شده باشند.",
"ver_approve_confirm": "این پرستار تأیید شود؟ وضعیت تأیید توسط سرور اعمال می‌شود و اینجا قابل بازگشت نیست.",
"ver_reject_confirm": "این احراز با دلیل واردشده رد شود؟",
"ver_decided": "تصمیم ثبت شد.",
"doc_loading": "در حال بارگذاری مدرک…",
"doc_expired": "این پیوند امن منقضی شده است.",
"doc_reload": "درخواست پیوند تازه",
"doc_error": "بارگذاری مدرک ناموفق بود.",
"doc_open_new": "باز کردن در تب جدید",
"doc_file_meta": "{name} · {size}",
"payout_title": "دسته‌های تسویه",
"payout_subtitle": "تسویه‌های هفتگی پرستاران — پیش‌نمایش، اجرا و تطبیق.",
"payout_empty": "هنوز دسته‌ای ثبت نشده.",
"payout_col_period": "دوره",
"payout_col_count": "تعداد",
"payout_col_total": "مبلغ کل",
"payout_col_status": "وضعیت",
"payout_col_processing": "تاریخ پردازش",
"payout_holiday_shift": "به‌دلیل تعطیلی بانکی جابه‌جا شد",
"payout_preview": "پیش‌نمایش دستهٔ بعدی",
"payout_preview_title": "پیش‌نمایش واجدین شرایط",
"payout_period_start": "شروع دوره",
"payout_period_end": "پایان دوره",
"payout_eligible_nurses": "پرستاران واجد شرایط",
"payout_col_gross": "درآمد ناخالص",
"payout_col_clawback": "کسر بازپس‌گیری",
"payout_col_net": "خالص",
"payout_no_iban": "شبای تأییدشده ندارد — نادیده گرفته می‌شود",
"payout_eligibility_note": "تنها رزروهای تکمیل‌شده‌ای که پنجرهٔ اعتراض آن‌ها پایان یافته اینجا نمایش داده می‌شوند — محاسبه سمت سرور.",
"payout_run": "اجرای دسته",
"payout_run_confirm_title": "این دستهٔ تسویه اجرا شود؟",
"payout_run_confirm_body": "مبلغ به پرستاران منتقل می‌شود. این اقدام با کلید یکتا محافظت می‌شود — کلیک دوباره باعث پرداخت مضاعف نمی‌شود.",
"payout_running": "در حال ارسال به سامانهٔ بانکی…",
"payout_skipped": "پرستاران نادیده‌گرفته‌شده",
"payout_batch_title": "دسته #{id}",
"payout_rows_title": "تسویه‌های این دسته",
"payout_row_nurse": "پرستار",
"payout_row_net": "خالص",
"payout_row_status": "وضعیت",
"payout_row_ref": "کد تراکنش",
"payout_failure_reason": "خطا: {reason}",
"payout_retry": "تلاش دوبارهٔ تسویه",
"payout_retry_confirm": "این تسویهٔ ناموفق دوباره تلاش شود؟ (با کلید یکتا محافظت‌شده.)",
"payout_record_ref": "ثبت کد تراکنش",
"payout_record_ref_ph": "کد تراکنش بانکی",
"payout_ref_saved": "کد تراکنش ثبت شد.",
"payout_decomp": "{gross} ناخالص {clawback} بازپس‌گیری = {net} خالص",
"payout_ran": "دسته ارسال شد — در حال پردازش.",
"refund_title": "بازپرداخت",
"refund_open": "باز کردن پنل بازپرداخت",
"refund_linked_booking": "رزرو #{id}",
"refund_preview_title": "پیش‌نمایش بازپرداخت",
"refund_percentage": "نرخ بازپرداخت",
"refund_row_fee": "کارمزد بازگردانده‌شده",
"refund_row_payout": "سهم پرستار بازگردانده‌شده",
"refund_row_total": "مبلغ کل بازپرداخت",
"refund_channel": "کانال",
"refund_channel_hint": "نحوهٔ بازگرداندن وجه — تعیین‌شده توسط سرور.",
"refund_eta": "زمان تقریبی به مشتری: {date}",
"refund_eta_bnpl": "بازگشت اقساطی حدود ۷ تا ۱۰ روز کاری زمان می‌برد.",
"refund_clawback_notice": "سهم پرستار قبلاً پرداخت شده — بازپس‌گیری به‌صورت خودکار ایجاد می‌شود.",
"refund_initiate": "شروع بازپرداخت",
"refund_approve": "تأیید",
"refund_reject": "رد",
"refund_confirm": "بازپرداخت رزرو #{id} آغاز شود؟",
"refund_provider_failed": "بازگشت از سمت ارائه‌دهنده ناموفق بود.",
"refund_done": "بازپرداخت انجام شد.",
"refund_reason_category": "دلیل",
"refund_notes_ph": "یادداشت (اختیاری)",
"mod_title": "بررسی نظرات",
"mod_subtitle": "انتشار، پنهان‌سازی یا رد نظرات ارسالی.",
"mod_empty": "موردی برای بررسی نیست.",
"mod_low_rating": "امتیاز پایین",
"mod_col_rating": "امتیاز",
"mod_col_review": "نظر",
"mod_col_context": "پرستار / رزرو",
"mod_publish": "انتشار",
"mod_hide": "پنهان‌سازی",
"mod_reject": "رد",
"mod_confirm_publish": "این نظر منتشر شود؟ عمومی می‌شود و امتیاز پرستار بازمحاسبه می‌گردد.",
"mod_confirm_hide": "این نظر با دلیل واردشده پنهان شود؟",
"mod_confirm_reject": "این نظر با دلیل واردشده رد شود؟",
"mod_done": "نظر به‌روزرسانی شد.",
"mod_nurse": "پرستار #{id}",
"mod_booking": "رزرو #{id}",
"cfg_title": "پیکربندی سامانه",
"cfg_subtitle": "تنظیمات نوع‌دار و ممیزی‌شده که کارمزد، مهلت‌ها و زمان‌بندی را تعیین می‌کنند.",
"cfg_col_key": "کلید",
"cfg_col_value": "مقدار",
"cfg_col_type": "نوع",
"cfg_col_updated": "آخرین تغییر",
"cfg_edit": "ویرایش",
"cfg_updated_by": "توسط {actor}",
"cfg_range_error": "نرخ باید بین ۰ و ۱ باشد.",
"cfg_int_error": "باید عدد صحیح باشد.",
"cfg_json_error": "JSON نامعتبر است.",
"cfg_empty_error": "مقدار الزامی است.",
"cfg_save_confirm_title": "این تغییر پیکربندی ذخیره شود؟",
"cfg_save_confirm_body": "این تغییر ممیزی می‌شود و بلافاصله اعمال می‌گردد. رزروها و ثبت‌های مالی قبلی را بازنمی‌گرداند.",
"cfg_saved": "پیکربندی ذخیره شد.",
"cfg_history": "تاریخچهٔ تغییرات",
"cfg_history_title": "تاریخچه — {key}",
"cfg_history_change": "{old} ← {new}",
"cfg_history_empty": "هنوز تغییری ثبت نشده.",
"cfg_group_fees": "کارمزد و مالیات",
"cfg_group_deadlines": "مهلت‌ها و پنجره‌ها",
"cfg_group_evv": "ثبت حضور (EVV)",
"cfg_group_bnpl": "خرید اقساطی",
"cfg_group_cancellation": "سطوح لغو",
"cfg_group_other": "سایر",
"hol_title": "تقویم تعطیلات",
"hol_subtitle": "روزهای تعطیلی بانکی، زمان‌بندی تسویه را جابه‌جا می‌کنند. محاسبهٔ جابه‌جایی با سرور است.",
"hol_empty": "تعطیلاتی در این بازه نیست.",
"hol_col_date": "تاریخ",
"hol_col_name": "عنوان",
"hol_col_type": "نوع",
"hol_col_bank": "تعطیلی بانکی",
"hol_add": "افزودن تعطیلی",
"hol_edit": "ویرایش تعطیلی",
"hol_name_fa": "عنوان (فارسی)",
"hol_bank_hint": "در صورت فعال بودن، تسویه‌های این روز به روز کاری بعد منتقل می‌شوند.",
"hol_saved": "تعطیلی ذخیره شد.",
"hol_year": "سال",
"alert_title": "هشدارهای پشتیبانی",
"alert_subtitle": "صف داخلی — هرگز به مشتری یا پرستار نمایش داده نمی‌شود.",
"alert_empty": "هشدار بازی وجود ندارد.",
"alert_col_type": "نوع",
"alert_col_entity": "مرتبط با",
"alert_col_owner": "مسئول",
"alert_col_status": "وضعیت",
"alert_col_created": "زمان ایجاد",
"alert_assign_me": "واگذاری به من",
"alert_assign": "واگذاری",
"alert_resolve": "رفع",
"alert_resolve_title": "رفع هشدار",
"alert_resolve_note_ph": "این هشدار چگونه رفع شد؟",
"alert_assigned": "هشدار واگذار شد.",
"alert_resolved": "هشدار رفع شد.",
"alert_link_booking": "رزرو #{id}",
"alert_link_review": "نظر #{id}",
"alert_link_entity": "{type} #{id}",
"alert_unassigned": "بدون مسئول",
"audit_title": "گزارش ممیزی",
"audit_subtitle": "ثبت غیرقابل‌تغییرِ هر تغییر مدیریتی. فقط‌خواندنی.",
"audit_empty": "برای این فیلتر رکوردی نیست.",
"audit_col_entity": "موجودیت",
"audit_col_action": "اقدام",
"audit_col_actor": "عامل",
"audit_col_time": "زمان",
"audit_entity_type_ph": "نوع موجودیت (مثلاً PlatformConfig)",
"audit_entity_id_ph": "شناسهٔ موجودیت",
"audit_from": "از",
"audit_to": "تا",
"audit_diff_title": "فیلدهای تغییریافته",
"audit_diff_field": "فیلد",
"audit_diff_old": "قبلی",
"audit_diff_new": "جدید",
"audit_no_diff": "تغییر فیلدی ثبت نشده.",
"audit_redacted": "<حذف‌شده>",
"ticket_title": "صف تیکت‌ها",
"ticket_subtitle": "همهٔ تیکت‌های سامانه. یادداشت‌های داخلی تنها برای کارکنان است.",
"ticket_empty": "تیکتی با این فیلتر یافت نشد.",
"ticket_col_ref": "کد پیگیری",
"ticket_col_subject": "موضوع",
"ticket_col_category": "دسته",
"ticket_col_status": "وضعیت",
"ticket_col_booking": "رزرو",
"ticket_search_ref_ph": "جستجو با کد پیگیری",
"ticket_thread_title": "تیکت {ref}",
"ticket_internal_badge": "یادداشت داخلی",
"ticket_public_reply": "پاسخ",
"ticket_internal_note": "یادداشت داخلی",
"ticket_composer_public_ph": "پاسخ به شرکت‌کنندگان…",
"ticket_composer_internal_ph": "افزودن یادداشت داخلی (فقط کارکنان)…",
"ticket_send": "ارسال",
"ticket_sent": "پیام ارسال شد.",
"ticket_participants": "شرکت‌کنندگان",
"ticket_linked_refund": "بازپرداخت #{id}",
"partner_title": "مراکز همکار",
"partner_subtitle": "مراکز دارای مجوز که پرستاران را پشتیبانی می‌کنند و می‌توانند فروشندهٔ رسمی باشند.",
"partner_empty": "هنوز مرکزی ثبت نشده.",
"partner_col_name": "نام",
"partner_col_mor": "فروشندهٔ رسمی",
"partner_col_nurses": "پرستاران",
"partner_col_state": "وضعیت",
"partner_create": "ایجاد مرکز",
"partner_edit": "ویرایش مرکز",
"partner_detail_title": "جزئیات مرکز",
"partner_name": "نام مرکز",
"partner_legal_type": "نوع شخصیت حقوقی",
"partner_permit": "پروانه تأسیس",
"partner_permit_en": "مجوز تأسیس وزارت بهداشت",
"partner_tech_director": "مسئول فنی",
"partner_tech_director_license": "شمارهٔ نظام مسئول فنی",
"partner_enamad": "نماد اعتماد الکترونیکی",
"partner_iban": "شبای تسویه",
"partner_iban_write_hint": "شبا را کامل وارد کنید؛ به‌صورت پوشیده ذخیره می‌شود و پس از آن تنها ۴ رقم آخر نمایش داده می‌شود.",
"partner_commission": "نرخ کارمزد",
"partner_is_mor": "فروشندهٔ رسمی",
"partner_is_mor_hint": "در صورت فعال بودن، این مرکز فاکتور صادر می‌کند و مقصد تسویه است.",
"partner_admin_user": "شناسهٔ کاربر مدیر مرکز",
"partner_verify": "تأیید و فعال‌سازی",
"partner_verify_confirm": "تأیید مجوز ثبت و این مرکز فعال شود؟",
"partner_activate": "فعال‌سازی",
"partner_suspend": "تعلیق",
"partner_saved": "مرکز ذخیره شد.",
"partner_verified_toast": "مرکز تأیید و فعال شد.",
"partner_roster_title": "پرستاران تحت پوشش",
"partner_assign_nurse": "افزودن پرستار",
"partner_assign_nurse_ph": "شناسهٔ پروفایل پرستار",
"partner_unlink_nurse": "حذف",
"partner_nurse_assigned": "وابستگی پرستار به‌روزرسانی شد.",
"role_title": "نقش‌ها و دسترسی",
"role_subtitle": "اعطا یا لغو نقش‌های مدیریتی. (در انتظار سرویس‌های نقش سمت سرور.)",
"role_deferred": "این بخش تا آماده‌شدن سرویس‌های نقش، با داده‌های موقتِ سمت‌کاربر نمایش داده می‌شود.",
"role_col_user": "کاربر",
"role_col_role": "نقش",
"role_col_granted": "اعطا شده",
"role_grant": "اعطای نقش",
"role_revoke": "لغو",
"role_grant_confirm": "نقش {role} به کاربر #{id} اعطا شود؟",
"role_revoke_confirm": "نقش {role} از کاربر #{id} لغو شود؟",
"role_updated": "نقش به‌روزرسانی شد.",
"agg_not_started": "شروع‌نشده",
"agg_pending": "در انتظار",
"agg_in_review": "در حال بررسی",
"agg_approved": "تأییدشده",
"agg_rejected": "ردشده",
"agg_suspended": "معلق",
"step_not_started": "شروع‌نشده",
"step_pending": "در انتظار",
"step_in_review": "در حال بررسی",
"step_passed": "تأییدشده",
"step_failed": "ناموفق",
"step_expired": "منقضی",
"step_identity_kyc": "احراز هویت",
"step_shahkar_match": "تطبیق شاهکار",
"step_moh_competency_license": "پروانه صلاحیت وزارت بهداشت",
"step_ino_membership": "عضویت نظام پرستاری",
"step_criminal_record": "گواهی عدم سوءپیشینه",
"step_bank_account_verification": "تأیید حساب بانکی",
"batch_status_draft": "پیش‌نویس",
"batch_status_processing": "در حال پردازش",
"batch_status_partially_failed": "ناموفق جزئی",
"batch_status_completed": "تکمیل‌شده",
"batch_status_failed": "ناموفق",
"pstatus_pending": "در انتظار",
"pstatus_submitted": "ارسال‌شده",
"pstatus_paid": "پرداخت‌شده",
"pstatus_failed": "ناموفق",
"channel_psp_card": "کارت (درگاه)",
"channel_bnpl_revert": "بازگشت اقساطی",
"channel_manual": "بانکی دستی",
"rstatus_requested": "درخواست‌شده",
"rstatus_approved": "تأییدشده",
"rstatus_processing": "در حال پردازش",
"rstatus_succeeded": "موفق",
"rstatus_failed": "ناموفق",
"rstatus_rejected": "ردشده",
"mstatus_pending_moderation": "در انتظار بررسی",
"mstatus_published": "منتشرشده",
"mstatus_hidden": "پنهان",
"mstatus_rejected": "ردشده",
"dtype_string": "متن",
"dtype_int": "عدد صحیح",
"dtype_decimal": "اعشاری",
"dtype_bool": "بولی",
"dtype_json": "JSON",
"htype_official": "رسمی",
"htype_religious": "مذهبی",
"htype_national": "ملی",
"atype_low_rating": "امتیاز پایین",
"atype_evv_no_show": "عدم حضور",
"atype_evv_location_mismatch": "مغایرت موقعیت EVV",
"atype_verification_expired": "انقضای احراز",
"atype_shared_sim": "سیم‌کارت مشترک",
"atype_payment_anomaly": "ناهنجاری پرداخت",
"atype_fraud_signal": "نشانهٔ تقلب",
"atype_nurse_clawback": "بازپس‌گیری پرستار",
"atype_emergency": "اورژانس",
"astatus_open": "باز",
"astatus_assigned": "واگذارشده",
"astatus_resolved": "رفع‌شده",
"sev_low": "کم",
"sev_medium": "متوسط",
"sev_high": "زیاد",
"tstatus_open": "باز",
"tstatus_closed": "بسته",
"tcat_coordination": "هماهنگی",
"tcat_support": "پشتیبانی",
"tcat_refund": "بازپرداخت",
"tcat_emergency": "اورژانس",
"role_super_admin": "مدیر ارشد",
"role_admin": "مدیر",
"role_support": "پشتیبانی",
"role_finance": "مالی",
"role_moderation": "بررسی محتوا",
"center_state_draft": "پیش‌نویس",
"center_state_pending_verification": "در انتظار تأیید",
"center_state_verified": "تأییدشده",
"center_state_suspended": "معلق",
"yes": "بله",
"no": "خیر"
},
"partner": {
"home_title": "مرکز شما",
"home_subtitle": "وضعیت پذیرش، پرستاران تحت پوشش و تسویه در یک نگاه.",
"state_banner_draft": "مرکز شما پیش‌نویس است — برای فعال‌سازی، مراحل پذیرش را کامل کنید.",
"state_banner_pending": "مرکز شما در انتظار تأیید است.",
"state_banner_suspended": "مرکز شما معلق است. با بالین‌یار تماس بگیرید.",
"license_title": "اطلاعات مجوز",
"permit": "پروانه تأسیس",
"tech_director": "مسئول فنی",
"enamad": "نماد اعتماد الکترونیکی",
"legal_type": "نوع شخصیت حقوقی",
"is_mor_yes": "فروشندهٔ رسمی",
"is_mor_no": "تسویه از طریق بالین‌یار انجام می‌شود",
"access_denied": "شما به هیچ مرکز همکاری دسترسی ندارید.",
"nurses_title": "پرستاران تحت پوشش",
"nurses_empty": "هنوز پرستاری تحت پوشش نیست.",
"nurses_col_name": "پرستار",
"nurses_col_verified": "احراز",
"bookings_title": "رزروهای تحت پوشش",
"bookings_empty": "هنوز رزروی تحت این مرکز نیست.",
"bookings_col_id": "رزرو",
"bookings_col_patient": "بیمار",
"bookings_col_date": "تاریخ",
"bookings_col_status": "وضعیت",
"settlement_title": "تسویه و فاکتورها",
"settlement_not_mor": "این مرکز فروشندهٔ رسمی نیست — تسویه از طریق بالین‌یار انجام می‌شود و فاکتور کارمزدی اینجا صادر نمی‌شود.",
"settlement_empty": "هنوز فاکتوری نیست.",
"settlement_col_booking": "رزرو",
"settlement_col_gross": "ناخالص",
"settlement_col_total": "کل",
"settlement_moadian": "سامانه مودیان",
"settlement_moadian_ref": "شمارهٔ مرجع مودیان",
"settlement_moadian_pending": "هنوز به سامانه مودیان ارسال نشده",
"invoice_row_gross": "هزینهٔ ناخالص خدمت",
"invoice_row_commission": "کارمزد پلتفرم",
"invoice_row_bnpl_commission": "کارمزد اقساطی",
"invoice_row_vat": "مالیات (بر کارمزد)",
"invoice_row_total": "مبلغ کل فاکتور",
"invoice_download": "دانلود PDF",
"invoice_pdf_error": "باز کردن فایل فاکتور ناموفق بود.",
"invoice_number": "فاکتور #{number}",
"settlement_iban": "شبای تسویه"
}
}