{ "nav": { "home": "Home", "bookings": "Bookings", "patients": "Patients", "wallet": "Wallet", "profile": "Profile", "bank": "Bank account", "coverage": "Coverage", "services": "Services", "dashboard": "Dashboard", "requests": "Requests", "verification": "Verification", "visits": "Visits", "admin": "Admin", "overview": "Overview", "users": "Users", "notifications": "Notifications", "login": "Login", "logout": "Logout" }, "common": { "dark_mode": "Dark mode", "light_mode": "Light mode", "direction_ltr": "Switch to LTR", "direction_rtl": "Switch to RTL", "coming_soon": "Coming soon", "loading": "Loading…", "retry": "Retry", "add": "Add", "cancel": "Cancel", "save": "Save", "saving": "Saving…", "back": "Back", "close": "Close", "optional": "Optional", "currency_toman": "Toman", "brand": "Balinyaar", "brand_tagline": "Home care you can trust" }, "shell": { "customer_app": "Family app", "nurse_app": "Nurse view", "admin_console": "Admin console", "placeholder_body": "This area will be built in a later phase." }, "home": { "greeting_named": "Hi, {name}", "greeting_plain": "Hi there", "subtitle": "Manage care for the people you love.", "search_placeholder": "Search a service or nurse…", "search_action": "Search", "categories_title": "Services", "categories_error": "Couldn't load services.", "categories_empty": "No services have been set up yet.", "nudge_patient_title": "Complete the patient record", "nudge_patient_body": "Add conditions, medications and routine so nurses arrive prepared.", "nudge_patient_cta": "Open patients", "nudge_profile_title": "Complete your profile", "nudge_profile_body": "Add an emergency contact to speed up bookings.", "nudge_profile_cta": "Go to profile" }, "onboarding": { "step_relation": "Who for", "step_patient": "Patient", "relation_title": "Who are you arranging care for?", "relation_subtitle": "This helps us tailor the right care. You can add more people later.", "relation_parent": "Parent", "relation_spouse": "Spouse", "relation_child": "Child", "relation_self": "Myself", "patient_title": "Register the patient", "patient_subtitle": "The person receiving care — not necessarily the account holder.", "name_label": "Full name", "name_required": "Enter the patient's name", "age_label": "Age", "age_invalid": "Enter a valid age", "gender_label": "Gender", "gender_male": "Male", "gender_female": "Female", "gender_required": "Patient gender is required", "conditions_label": "Conditions", "conditions_hint": "Optional — select any that apply.", "condition_elderly": "Elderly", "condition_post_surgery": "Post-surgery", "condition_diabetes": "Diabetes", "condition_mobility": "Limited mobility", "condition_dementia": "Dementia", "continue": "Continue", "save_continue": "Save and continue", "saved": "Patient saved" }, "patients": { "title": "Patients", "subtitle": "The people you arrange care for.", "add": "Add patient", "add_title": "Add patient", "edit_title": "Edit patient", "edit": "Edit", "archive": "Archive", "empty_title": "No patients yet", "empty_body": "Add your first patient to get started.", "archive_title": "Archive patient?", "archive_body": "This patient is removed from your list, but past booking records are kept.", "archive_confirm": "Archive", "archived": "Patient archived", "age_years": "{age} yrs", "conditions_none": "No recorded conditions", "unavailable": "This patient isn't available to you." }, "profile": { "title": "Profile", "subtitle": "Your details and emergency contact.", "first_name": "First name", "last_name": "Last name", "language": "Preferred language", "language_fa": "Persian", "language_en": "English", "emergency_section": "Emergency contact", "emergency_hint": "Who we call in an emergency.", "emergency_name": "Emergency contact name", "emergency_phone": "Emergency contact phone", "emergency_phone_invalid": "Enter a valid mobile number", "save": "Save", "saved": "Profile saved", "completion_done": "Your profile is complete.", "completion_todo": "Complete your profile to speed up bookings." }, "nurseProfile": { "title": "Nurse profile", "subtitle": "What families see when they find you.", "photo": "Profile photo", "photo_hint": "A clear photo of your face.", "upload": "Upload photo", "uploading": "Uploading…", "bio": "About me", "bio_hint": "A short intro — experience, focus, approach.", "years": "Years of experience", "years_invalid": "Enter a number between 0 and 80", "save": "Save profile", "saved": "Profile saved", "unverified_title": "Your profile isn't active yet", "unverified_body": "Complete identity verification to appear to families and receive bookings.", "unverified_cta": "Complete verification", "deferred_services": "Manage your services & prices in the Services section; available days come in a later step." }, "bank": { "title": "Bank account", "subtitle": "Where your earnings are paid out.", "iban_label": "IBAN (Sheba)", "iban_hint": "Starts with IR followed by 24 digits.", "iban_invalid": "Enter a valid IBAN (IR + 24 digits)", "holder_label": "Account holder name", "holder_hint": "Must be exactly your own name.", "holder_required": "Enter the account holder name", "submit": "Submit account", "submitting": "Submitting…", "added": "Account submitted — ownership inquiry started", "add_error": "This account couldn't be added. Check the IBAN and try again.", "status_pending_chip": "Checking", "status_pending_title": "Verifying account ownership", "status_pending_body": "The Sheba ownership inquiry is running; this can take a moment.", "status_verified_chip": "Verified", "status_verified_title": "Account verified", "status_verified_body": "This account is ready to receive your payouts.", "status_mismatch_chip": "Ownership mismatch", "status_mismatch_title": "The account must be in your own name", "status_mismatch_body": "This account's holder doesn't match your identity. Please enter the IBAN of an account in your own name.", "reenter": "Enter another account", "make_primary": "Make primary", "primary_set": "Primary account updated", "iban_masked_label": "IBAN", "primary": "Primary", "empty_title": "No bank account yet", "empty_body": "Add a bank account in your own name to receive payouts." }, "geo": { "province": "Province", "city": "City", "district": "District", "whole_city": "Whole city", "city_needs_province": "Choose a province first", "district_needs_city": "Choose a city first", "district_optional": "Optional", "no_districts": "This city has no districts — whole city" }, "address": { "title": "Addresses", "subtitle": "Where nurses will visit.", "add": "Add address", "add_title": "Add address", "edit_title": "Edit address", "edit": "Edit", "delete": "Delete", "empty_title": "No addresses yet", "empty_body": "Add your first address so nurses know where to go.", "primary": "Primary", "set_primary": "Set as primary", "primary_set": "Primary address updated", "delete_title": "Delete address?", "delete_body": "This address is removed from your list.", "delete_confirm": "Delete", "deleted": "Address deleted", "saved": "Address saved", "save_error": "This address couldn't be saved. Please try again.", "unavailable": "This address isn't available to you.", "title_label": "Address label", "title_placeholder": "e.g. Home, Work", "title_required": "Enter a label for this address", "line_label": "Street address", "line_hint": "Building, street, unit — the detail a nurse needs to find the door.", "line_required": "Enter the street address", "city_required": "Select a city", "set_primary_toggle": "Set as primary address", "map_hint": "Tap or drag the marker to the patient's exact location.", "map_required": "Drop a pin on the map", "map_lat": "Lat", "map_lng": "Lng", "manage_title": "Your addresses", "manage_body": "Manage the places nurses visit.", "manage_cta": "Manage addresses" }, "coverage": { "title": "Coverage areas", "subtitle": "The cities and districts you'll travel to.", "areas_heading": "Your areas", "add_title": "Add a coverage area", "scope_label": "Coverage", "scope_whole_city": "Whole city", "scope_districts": "Specific districts", "add": "Add area", "adding": "Adding…", "whole_city_chip": "Whole city", "empty_title": "No coverage areas yet", "empty_warning": "You won't appear in search until you add at least one coverage area.", "duplicate": "You already cover this area.", "city_required": "Select a city", "district_required": "Select a district, or switch to whole city.", "added": "Coverage area added", "add_error": "This area couldn't be added. Please try again.", "remove_title": "Remove coverage area?", "remove_body": "You'll no longer be matched for visits in this area.", "remove_confirm": "Remove", "removed": "Coverage area removed" }, "catalog": { "unit_per_hour": "hourly", "unit_per_session": "per session", "unit_per_half_day": "per half-day", "unit_per_day": "daily", "unit_per_24h": "24-hour (live-in)", "count_per_hour": "hours", "count_per_session": "sessions", "count_per_half_day": "half-days", "count_per_day": "days", "count_per_24h": "days (24h)", "estimate_label": "Estimated total", "estimate_for": "for {count} {unit}" }, "services": { "title": "Services & prices", "subtitle": "The services you offer and what each costs.", "add": "Add service", "empty_title": "No services yet", "empty_body": "Add at least one active, priced service so families can find and book you.", "active_chip": "Active", "inactive_chip": "Deactivated", "inactive_hint": "This service is deactivated and can't be booked.", "edit": "Edit", "deactivate": "Deactivate", "activate": "Reactivate", "deactivate_title": "Deactivate this service?", "deactivate_body": "It becomes unbookable and drops out of search. You can reactivate it anytime — it is never deleted.", "deactivate_confirm": "Deactivate", "deactivated_toast": "Service deactivated", "activated_toast": "Service reactivated", "toggle_error": "That couldn't be done. Please try again.", "builder_add_title": "Add a new service", "builder_edit_title": "Edit service", "step_category": "Category", "step_options": "Options", "step_price": "Price", "category_title": "Choose the service category", "category_subtitle": "Every service belongs to one category.", "categories_error": "Couldn't load categories. Please try again.", "category_locked": "The category can't be changed after a service is created.", "options_title": "Set the service options", "options_subtitle": "Pick one option for each required item.", "options_none": "This category has no options to configure.", "required_badge": "Required", "optional_badge": "Optional", "options_incomplete": "Answer every required item to continue.", "price_title": "Set the price and unit", "price_label": "Price (Toman)", "price_hint": "Enter the price in Toman.", "price_required": "Enter a valid price greater than zero.", "unit_label": "Price unit", "duration_label": "Duration / count", "duration_hint": "Optional — add a duration to preview the estimated total.", "rate_note": "This is the base rate per unit, not the full total.", "display_name_label": "Display name", "display_name_hint": "Auto-generated from your options — you can edit it.", "duplicate_warning": "You already have a service with these exact details. Change an option or the category.", "summary_options": "Options", "summary_none": "No options", "next": "Next", "submit_create": "Add service", "submit_save": "Save changes", "create_error": "The service couldn't be saved. Check your inputs and try again.", "created_toast": "Service added", "saved_toast": "Changes saved" }, "search": { "title": "Find a nurse", "subtitle": "Only verified, background-checked nurses appear here.", "section_category": "Care category", "section_location": "City", "section_gender": "Caregiver gender", "section_date": "Date", "section_price": "Price range (optional)", "gender_female": "Woman", "gender_male": "Man", "gender_any": "No preference", "gender_hint": "For personal and bodily care, many families prefer a same-gender caregiver. Your choice is carried into the booking request.", "date_hint": "We pass your preferred date to the nurse — it does not remove nurses from the results.", "price_hint": "Leave blank to see every price.", "price_min": "From", "price_max": "To", "toman": "Toman", "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}}", "results_loading_title": "Searching…", "results_count": "{count, plural, =0 {No nurses} one {# nurse} other {# nurses}}", "sort_label": "Sort", "sort_rating": "Rating", "results_error": "Something went wrong loading results.", "retry": "Try again", "load_more": "Load more", "empty_title": "No nurses match your filters", "empty_suggest_gender": "Try removing the gender filter.", "empty_suggest_district": "Clear the district to search the whole city.", "empty_suggest_city": "Try a nearby city like Mashhad, Isfahan, or Shiraz.", "empty_cta": "Adjust filters", "unnamed_nurse": "Nurse", "reviews_count": "({count, plural, =0 {no reviews} one {# review} other {# reviews}})", "distance_km": "{km} km", "price_from": "from", "profile_not_found_title": "Nurse unavailable", "profile_not_found_body": "This nurse is no longer available.", "profile_not_found_cta": "Back to search", "profile_error_title": "Couldn't load profile", "profile_error_body": "Something went wrong loading this nurse.", "badge_ino": "Nursing Council", "years_experience": "{years} years' experience", "specialty_elderly": "Elderly care", "specialty_icu": "Critical care", "specialty_pediatric": "Pediatric care", "specialty_post_surgery": "Post-surgery care", "specialty_wound_care": "Wound care", "services_title": "Services & prices", "services_empty": "No services listed yet.", "latest_review_title": "Latest review", "no_reviews": "No reviews yet.", "request_booking": "Request booking" }, "booking": { "gender_female": "Woman", "gender_male": "Man", "gender_any": "No preference", "unnamed_nurse": "Nurse", "summary_patient": "Patient", "summary_service": "Service", "summary_address": "Address", "summary_when": "Time", "request_title": "Booking request", "form_subtitle": "Send a request to this nurse. No payment is taken yet — the nurse reviews it first.", "missing_nurse_title": "No nurse selected", "missing_nurse_body": "Choose a nurse from search, then send a request.", "missing_nurse_cta": "Find a nurse", "patient_label": "Patient (care recipient)", "patient_placeholder": "Select a patient", "patient_empty": "You haven't added a patient yet.", "patient_add_cta": "Add a patient", "service_label": "Service type", "service_placeholder": "Select a service", "service_empty": "This nurse has no bookable service.", "address_label": "Address", "address_placeholder": "Select an address", "address_empty": "You haven't added an address yet.", "address_add_cta": "Add an address", "address_whole_city": "Whole city", "date_label": "Date", "time_start_label": "From", "time_end_label": "To", "gender_label": "Caregiver gender", "gender_hint": "For personal/bodily care, a same-gender caregiver matters. Your choice is sent with the request.", "notes_label": "Notes for the nurse", "notes_placeholder": "What the nurse sees before accepting…", "notes_hint": "This is the only thing the nurse sees before accepting. The full care record is added after confirmation.", "notes_counter": "{count}/{max}", "submit": "Send request", "submitting": "Sending…", "error_patient_required": "Choose a patient.", "error_service_required": "Choose a service.", "error_address_required": "Choose an address.", "error_gender_required": "Choose the caregiver gender.", "error_date_required": "Choose a date.", "error_time_required": "Choose a start and end time.", "error_time_range": "The end time must be after the start time.", "error_past_date": "Choose a future date and time.", "error_notes_long": "Notes are too long.", "error_gender_mismatch": "The chosen gender doesn't match this nurse.", "error_not_bookable": "This service can't be booked right now.", "error_tenancy": "That patient or address wasn't found.", "error_generic": "Couldn't send the request. Please try again.", "awaiting_title": "Request sent to the nurse", "awaiting_subtitle": "Awaiting the nurse's response", "step_submitted": "Request submitted", "step_awaiting": "Awaiting nurse approval", "step_payment": "Payment & final confirmation", "response_countdown_label": "Nurse response window", "response_elapsed": "Awaiting server confirmation…", "accepted_badge": "The nurse accepted", "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 ←", "cancel_request": "Cancel request", "cancelling": "Cancelling…", "cancel_confirm_title": "Cancel this request?", "cancel_confirm_body": "The nurse will no longer see it. You can request another nurse anytime.", "cancel_confirm_yes": "Yes, cancel", "rejected_title": "The nurse declined the request", "rejected_reason_label": "Nurse's reason", "expired_title": "The nurse didn't respond in time", "payment_expired_title": "The payment window has closed", "cancelled_title": "Request cancelled", "converted_title": "Your booking is confirmed", "converted_cta": "View booking", "terminal_rerequest": "Request another nurse", "not_found_title": "Request not found", "not_found_body": "This request may have been removed.", "error_title": "Something went wrong", "error_body": "We couldn't load this request.", "retry": "Try again", "inbox_title": "Incoming requests", "inbox_subtitle": "Families requesting your care. You see only their notes until you accept.", "inbox_empty": "You have no new requests.", "inbox_notes_label": "Family's notes", "required_gender_chip": "Caregiver: {gender}", "open_detail": "View", "detail_title": "Request detail", "location_label": "Location", "disclosure_note": "Before accepting you see only the family's notes. The full address and care record appear after you accept.", "accept": "Accept request", "accepting": "Accepting…", "reject": "Decline", "reject_dialog_title": "Decline request", "reject_reason_label": "Reason", "reject_reason_placeholder": "A short reason the family will see…", "reject_submit": "Submit decline", "rejecting": "Declining…", "reason_required": "A reason is required.", "reason_too_long": "The reason is too long.", "action_stale": "This request can no longer be actioned.", "accepted_toast": "Request accepted.", "rejected_toast": "Request declined.", "cancelled_toast": "Request cancelled.", "status_pending_nurse_response": "Awaiting nurse response", "status_accepted_awaiting_payment": "Accepted — awaiting payment", "status_converted": "Booked", "status_rejected_by_nurse": "Declined by nurse", "status_expired_no_response": "No response in time", "status_payment_deadline_expired": "Payment window lapsed", "status_cancelled_by_customer": "Cancelled" }, "auth": { "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", "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 →", "rate_limited": "Too many attempts — please try again shortly", "otp_title": "Enter the verification code", "otp_sent_to": "Code sent to {phone}", "otp_verify_customer": "Verify and continue", "otp_verify_nurse": "Verify and sign in", "otp_invalid": "The code is incorrect or has expired", "otp_locked": "Too many attempts. Request a new code to continue.", "resend_in": "Resend code in {time}", "resend": "Resend code", "change_number": "Change number", "routing_title": "Signing you in…", "select_role_title": "Welcome to Balinyaar", "select_role_subtitle": "Choose how you'll use Balinyaar to get started", "role_customer": "Family", "role_customer_desc": "Book nurses and home care", "role_nurse": "Nurse", "role_nurse_desc": "Offer nursing services", "continue": "Continue" }, "verification": { "title": "Verification", "subtitle": "Complete these steps to activate your profile and start receiving bookings.", "retry": "Try again", "load_error": "Couldn't load your verification status.", "start_title": "Start verification", "start_body": "Trust is the whole of Balinyaar. Completing these steps lets families choose you with confidence.", "start_cta": "Start verification", "starting": "Preparing…", "progress_title": "Verification progress", "progress_count": "{passed} of {total}", "blocking_summary": "Your profile isn't visible or bookable until every step is complete.", "continue": "Continue", "continue_step": "Continue step {n}", "approved_title": "Verification complete", "approved_body": "Everything checks out. You can now publish your profile and services.", "approved_cta": "Publish services", "step_mobile_verified": "Mobile number", "step_mobile_verified_desc": "Verified when you signed in.", "step_identity_kyc": "Identity (civil registry)", "step_identity_kyc_desc": "Automatic civil-registry check from your national ID + a liveness selfie.", "step_shahkar_match": "Shahkar match", "step_shahkar_match_desc": "Automatic check that your mobile number matches your national ID.", "step_moh_competency_license": "Competency license (MoH)", "step_moh_competency_license_desc": "Upload the document; reviewed manually by our team.", "step_ino_membership": "Nursing-council membership", "step_ino_membership_desc": "Upload your nursing-council card; reviewed manually.", "step_criminal_record": "Criminal-record clearance", "step_criminal_record_desc": "Upload the certificate; reviewed manually. Has an expiry date.", "step_bank_account_verification": "Bank-account verification", "step_bank_account_verification_desc": "Automatic IBAN-ownership check against your national ID.", "status_passed": "Verified", "status_in_review": "Under review", "status_pending": "Pending", "status_failed": "Rejected", "status_expired": "Expired", "status_next": "Next", "auto_query_note": "Automatic check — no document upload needed.", "row_go": "Complete this step", "row_fix": "Fix and resubmit", "reason_shared_sim": "This SIM doesn't appear to be registered in your name. Please try again with a SIM registered to you.", "reason_kyc_no_match": "Your identity details didn't match the civil registry.", "reason_national_id_mismatch": "The national ID didn't match.", "reason_blurry_scan": "The document image wasn't clear. Please upload a sharper copy.", "journey_identity": "Identity", "journey_credentials": "Credentials", "journey_review": "Review", "identity_title": "Verify identity", "identity_subtitle": "Your national ID, a photo of your ID card, and a liveness selfie.", "national_id_label": "National ID", "national_id_hint": "Enter your 10-digit national ID.", "national_id_invalid": "Enter a valid national ID.", "card_label": "National-ID card image", "card_hint": "Photograph your ID card in good light, clearly readable.", "card_recommended": "Uploading the ID card image is recommended.", "selfie_label": "Liveness selfie", "selfie_hint": "Take a selfie for face verification.", "auto_registry_note": "An automatic civil-registry check is performed.", "error_national_id_mismatch": "The national ID didn't match the civil registry. Please check and try again.", "error_shared_sim": "This SIM doesn't appear to be registered in your name. Please try again with a SIM registered to you.", "error_shahkar_mismatch": "The mobile-to-national-ID match failed. Please check and try again.", "identity_submit": "Submit & verify", "identity_submitting": "Verifying…", "identity_submitted": "Identity submitted — verification started", "back_to_checklist": "Back to checklist", "credentials_title": "Professional credentials", "credentials_subtitle": "Your documents are reviewed by our team after upload.", "credentials_needs_start": "Start verification from the status checklist first.", "ino_number_label": "Nursing-council number", "ino_number_hint": "Enter your nursing-council membership number.", "ino_number_required": "Enter your nursing-council number.", "doc_uploaded": "Document uploaded", "education_label": "Education certificate", "education_hint": "Optional — an image of your latest qualification.", "specialties_label": "Specialties", "specialties_hint": "Choose or add your areas of specialty.", "specialty_elderly": "Elderly care", "specialty_icu": "ICU", "specialty_pediatric": "Pediatric", "specialty_post_surgery": "Post-surgery", "specialty_wound_care": "Wound care", "specialty_add_placeholder": "Another specialty", "specialty_add": "Add", "registry_details_label": "Credential details (optional)", "issuing_authority_label": "Issuing authority", "issued_at_label": "Issue date", "expires_at_label": "Expiry date", "manual_review_note": "These documents are reviewed manually by our team — not an instant approval.", "credentials_submit": "Submit credentials", "credentials_submitting": "Submitting…", "credentials_submitted": "Credentials submitted — under review", "credentials_error": "Couldn't submit your credentials. Check the inputs and try again.", "review_title": "Under review", "review_body": "Your documents were submitted and are being reviewed by our team.", "review_eta": "This usually takes 24–48 hours.", "review_approved_title": "Verification complete", "review_approved_body": "Every step is verified. You can now publish your profile.", "review_summary_title": "Status summary", "review_view_status": "View status", "badge_verified": "Verified", "badge_unverified": "Not verified", "badge_expired": "Expired", "publish_ready_title": "Ready to publish", "publish_ready_body": "Your verification is complete. Your services are visible and bookable.", "publish_blocked_title": "Complete verification to publish", "publish_blocked_body": "Until verification is complete, your services won't appear in search and can't be booked.", "publish_cta": "Publish profile", "publish_complete_verification": "Complete verification", "publish_done": "Your profile has been published", "mock_admin_title": "Simulate admin review (demo)", "mock_admin_approve": "Approve all steps", "mock_admin_reject": "Reject a document", "upload_choose": "Choose file", "upload_capture": "Take photo", "upload_size_hint": "JPG, PNG or PDF — up to {size} MB.", "upload_uploading": "Uploading…", "upload_success": "Uploaded", "upload_change": "Change", "upload_error": "Upload failed.", "upload_bad_type": "That file type isn't allowed. Use JPG, PNG or PDF.", "upload_too_large": "The file must be smaller than {size} MB.", "upload_retry": "Try again", "upload_rejected": "This document was rejected", "upload_reupload": "Upload again" } }