frontend phase 15
This commit is contained in:
+430
-2
@@ -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 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",
|
||||
"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": "Couldn’t 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 can’t 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 ~7–10 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 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.",
|
||||
"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 don’t 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": "Couldn’t open the invoice PDF.",
|
||||
"invoice_number": "Invoice #{number}",
|
||||
"settlement_iban": "Settlement IBAN"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user