/* ------------------------------------------------------------------ */
/*  IncrelogEMS bilingual dictionary — English (source of truth)      */
/* ------------------------------------------------------------------ */

export const en = {
  common: {
    appName: "IncrelogEMS",
    tagline: "Complete Educational Management Platform",
    login: "Login",
    logout: "Logout",
    register: "Register",
    email: "Email",
    password: "Password",
    card: "Card",
    name: "Name",
    phone: "Phone",
    address: "Address",
    dashboard: "Dashboard",
    packages: "Packages",
    institutions: "Institutions",
    accounts: "Accounts",
    requests: "Requests",
    payments: "Payments",
    academicInfo: "Academic Info",
    support: "Support",
    copy: "Copy",
    save: "Save",
    saveChanges: "Save Changes",
    cancel: "Cancel",
    confirm: "Confirm",
    delete: "Delete",
    edit: "Edit",
    create: "Create",
    update: "Update",
    search: "Search",
    noResults: "No matches",
    showing: "Showing",
    of: "of",
    rowsPerPage: "Rows per page",
    filter: "Filter",
    all: "All",
    status: "Status",
    type: "Type",
    actions: "Actions",
    createdAt: "Created",
    loading: "Loading…",
    noData: "No records found",
    confirmDelete: "Are you sure you want to delete this?",
    yes: "Yes",
    no: "No",
    back: "Back",
    amount: "Amount",
    method: "Method",
    date: "Date",
    note: "Note",
    optional: "optional",
    total: "Total",
    active: "Active",
    inactive: "Inactive",
    success: "Success",
    error: "Error",
    savedSuccessfully: "Saved successfully",
    deletedSuccessfully: "Deleted successfully",
    language: "Language",
    english: "English",
    bangla: "বাংলা",
    viewAll: "View All",
    print: "Print",
    home: "Home",
    features: "Features",
    price: "Price",
    duration: "Duration",
    months: "months",
    year: "year",
    maxStudents: "Max Students",
    validity: "Validity",
    expiry: "Expiry",
    view: "View",
    close: "Close",
    institution: "Institution",
    institutionType: "Institution Type",
    package: "Package",
    subscription: "Subscription",
    invoice: "Invoice",
    collected: "Collected",
    due: "Due",
    paid: "Paid",
    processing: "Processing…",
    required: "This field is required",
    invalidEmail: "Please enter a valid email address",
    minPassword: "Password must be at least 6 characters",
    tryAgain: "Something went wrong. Please try again.",
    perYear: "/ year",
    students: "students",
    sessionExpired: "Session expired. Please login again.",
    copied: "Copied",
    today: "Today",
    category: "Category",
    channel: "Channel",
    audience: "Audience",
    subject: "Subject",
    recipients: "Recipients",
    quantity: "Quantity",
    unit: "Unit",
    unitPrice: "Unit Price",
    value: "Value",
    from: "From",
    to: "To",
    reason: "Reason",
    employee: "Employee",
    designation: "Designation",
    department: "Department",
    salary: "Salary",
    month: "Month",
    days: "days",
    district: "District",
    subDistrict: "Sub-district (Upazila)",
    eiin: "EIIN",
    ein: "EIN (Primary)",
    mpoCode: "MPO Code",
    boardCode: "Board / College Code",
    educationBoard: "Education Board",
    establishedYear: "Established Year",
    postCode: "Post Code",
    select: "Select",
    monitoring: "Monitoring",
    attendance: "Attendance",
    present: "Present",
    absent: "Absent",
    leave: "Leave",
    rate: "Rate",
    teachers: "Teachers",
    events: "Events",
    complaints: "Complaints",
    notices: "Notices",
    results: "Results",
    papers: "Papers",
    daily: "Daily",
    weekly: "Weekly",
    monthly: "Monthly",
    average: "Average",
    highest: "Highest",
    lowest: "Lowest",
    upcoming: "Upcoming",
    running: "Running",
    finished: "Finished",
    trend: "Trend",
    allDistricts: "All Districts",
    allSubDistricts: "All Sub-districts",
    unassigned: "Not set",
  },

  nav: {
    centralPanel: "Central Panel",
    institutionPortal: "Institution Portal",
    memberPortal: "Member Portal",
  },

  /* Sidebar section headers — menu items keep their order, these labels only
     group the runs between them */
  navGroups: {
    general: "General",
    admissions: "Admissions & Students",
    administration: "Administration",
    finance: "Finance",
    academics: "Academics",
    hrCampus: "HR & Campus",
    communication: "Communication & Activities",
    toolsBilling: "Tools & Billing",
    overview: "Overview",
    management: "Management",
    billingSetup: "Billing & Setup",
    tools: "Tools",
    work: "My Work",
    campus: "Campus",
    account: "Account",
  },

  /* Short module names for the landing module-map infographic */
  moduleName: {
    dashboard: "Dashboard",
    admission: "Admission",
    students: "Students",
    identity: "Student Identity",
    controlPanel: "Control Panel",
    academicInfo: "Academic Info",
    routine: "Course Routine",
    exams: "Exams",
    results: "Results",
    promotions: "Promotions",
    lessonPlans: "Lesson Plans",
    omr: "OMR",
    fees: "Fees",
    accounts: "Accounts",
    payroll: "Payroll",
    hr: "HR",
    library: "Library",
    hostel: "Hostel",
    inventory: "Inventory",
    transport: "Transport",
    notices: "Notices",
    events: "Events",
    committees: "Committees",
    certificates: "Certificates",
    competitions: "Competitions",
    messages: "Messages",
    smsPanel: "SMS Panel",
    support: "Support",
  },

  landing: {
    heroBadge: "One platform for every institution",
    heroTitle: "Run your entire institution from one beautiful platform",
    heroSubtitle:
      "IncrelogEMS is the central controller for educational institutions of every kind — from kindergarten to university. Pick a package, register your institution and manage classes, sections, subjects and more.",
    getStarted: "Get Started",
    viewPackages: "View Packages",
    trustedBy: "Trusted by all types of institutions",
    packagesTitle: "Pricing for every education pattern",
    packagesSubtitle:
      "Flat monthly packages by student count — one price covers your whole institution. Pay yearly and save up to 20%.",
    setupNote: "One-time setup fee ৳5,000 — charged with your first subscription only",
    billedPerStudent: "Billed per active student · Unlimited students on every plan",
    yearlySave: "Save {pct}% yearly",
    yearlyPerStudent: "per student / year, paid yearly",
    featuresNav: "Features",
    featuresTitle: "Everything your institution runs on",
    featuresSubtitle:
      "Every module below is built and running in IncrelogEMS today — from weighted exam results to district-wise monitoring.",
    feat1Title: "Exam & Result Engine",
    feat1Desc:
      "Single, Periodical, Combined and weighted Final Result (3 Sets) with auto merit lists, letter grades and QR-verified A4 print sheets.",
    feat2Title: "Smart Attendance",
    feat2Desc:
      "Daily student & teacher attendance with photo rosters, live trends and daily, weekly and monthly summaries.",
    feat3Title: "Fees & Payments",
    feat3Desc:
      "Fee schedules, collections and statistics across bKash, Nagad, Rocket and cards — with due tracking and invoices.",
    feat4Title: "Central Monitoring",
    feat4Desc:
      "District & sub-district wise monitoring of every institution — exams, fee collection, attendance and complaint box.",
    feat5Title: "Notices & Events",
    feat5Desc:
      "Notices, event calendars and a complaint box that keep the central controller, institutions and guardians connected.",
    feat6Title: "Admissions & Profiles",
    feat6Desc:
      "Digital admission workflow with photo profiles, rolls, guardian records and smooth class-section-shift placement.",
    feat7Title: "Library · Transport · Hostel",
    feat7Desc:
      "Book issue & return, transport membership and hostel management — everything in the same institution portal.",
    feat8Title: "Bilingual & Print-ready",
    feat8Desc:
      "Complete English/Bangla interface with Bangla numerals in results and professional A4 landscape print sheets.",
    faqNav: "FAQ",
    faqTitle: "Frequently asked questions",
    faqSubtitle: "Everything institutions ask before joining IncrelogEMS.",
    faq1Q: "How does package pricing work?",
    faq1A: "Each institution type has flat monthly packages by student range — for example, a government school with up to 300 students pays ৳2,000/month, a non-government school ৳3,500 and a coaching center ৳4,500. Pay yearly and save up to 20%. No per-student fees, no hidden charges.",
    faq2Q: "Is there a setup fee?",
    faq2A: "Yes — a one-time ৳5,000 setup fee is charged with your first subscription only. Renewals and upgrades never include it again.",
    faq3Q: "How do we get started?",
    faq3A: "Register your institution from the Register page, wait for the central controller's approval, then request a package from your portal. Once approved, your subscription activates instantly.",
    faq4Q: "Which payment methods are supported?",
    faq4A: "Institutions can pay via bKash, Nagad, Rocket and cards. Fee collections from students also support the same methods with automatic statistics.",
    faq5Q: "Can we print result sheets?",
    faq5A: "Yes — result sheets print on A4 (portrait for periodical marksheets, landscape for the Final Result journal) with QR verification so any copy can be validated.",
    faq6Q: "Is Bangla fully supported?",
    faq6A: "The whole system is bilingual — English and Bangla. Result sheets even render marks in Bangla numerals, and every plan name, feature and report is translated.",
    faq7Q: "Do we get a discount for paying yearly?",
    faq7A: "Yes — schools, coaching centers and madrasa save 10% when paying yearly instead of monthly. The discount is applied automatically at checkout.",
    whyTitle: "Why IncrelogEMS?",
    whySubtitle: "Everything a central controller and an institution needs, in one place.",
    why1Title: "Package System",
    why1Desc:
      "Ready-made packages for Kindergarten, Primary, High School, College, University, Coaching and Madrasha — request and purchase online.",
    why2Title: "Payment Collection",
    why2Desc:
      "The central controller collects payments via bKash, Nagad, Rocket, Card, Bank Transfer or Cash — with invoices for every transaction.",
    why3Title: "Academic Setup",
    why3Desc:
      "Classes, Sections, Departments, Sessions, Subjects, Groups, Shifts and Rooms — registered centrally, selected by each institution as needed.",
    why4Title: "Bilingual Interface",
    why4Desc: "Complete English and Bangla interface — switch anytime with one click.",
    footerAbout:
      "IncrelogEMS — the central educational management controller. Packages, payments and academic setup for institutions of all types.",
    footerQuickLinks: "Quick Links",
    footerForInstitutions: "For Institutions",
    rights: "All rights reserved.",
    poweredBy: "Developed by Increlog Unified Solutions",
    requestThisPackage: "Request This Package",
    loginToRequest: "Login as an institution to request this package",

    supportLabel: "Support",
    /* ---- Student-count slab pricing ---- */
    vatNote: "* 5% VAT will be applicable on all fees and charges",
    addonNote: "* Each Add-on has a charge",
    perMonth: "Monthly",
    perYear: "Yearly",
    selectRange: "Select student range",
    yearlyMonthlyEq: "{amt} / mo billed yearly",
    yearlyRate: "{amt} / mo billed yearly",
    slabHint: "Flat monthly packages by student count — pick the range that fits, pay yearly and save.",
    slabFlatNote: "Flat monthly rate — the whole range covered",
    customOfferHint: "More than 3500 students?",
    customOfferBtn: "Contact For Custom Offer",
    customOfferPrefill: "Custom offer request — {cat}, more than 3500 students. Please share a tailored plan.",
    referralBadge: "{pct}% referral discount",
    referralOfferTitle: "Have a referral code? Get {pct}% off your first purchase",
    referralApply: "Apply",
    referralOfferLine: "{pct}% off your first purchase with a referral code",
    referralValidBanner:
      "Referral code {code} is active — {pct}% off your first package purchase, applied to the prices above.",
    referralInvalidBanner:
      "Referral code {code} is not valid — please check it with the referring institution.",

    /* ---- Features infographic: module map ---- */
    mapBadge: "Module Map",
    mapTitle: "One system — every module your institution runs on",
    mapSubtitle:
      "20+ connected modules across five suites. Enable only what you need from the Control Panel — everything else stays out of your way.",
    mapCore: "Core & People",
    mapAcademics: "Academics",
    mapFinance: "Finance",
    mapCampus: "Campus Operations",
    mapCommunication: "Communication",
    mapFooter: "English & Bangla interface · QR-verified documents · A4 print-ready",

    /* ---- Features infographic: deep dives ---- */
    deepBadge: "Inside the Modules",
    deepTitle: "Explore every module — in depth",
    deepSubtitle:
      "A closer look at the workflows and capabilities your institution gets from day one.",
    deepResultTitle: "Exam & Result Engine",
    deepResultDesc:
      "From marks entry to QR-verified, print-ready marksheets — a complete examination workflow for every academic level.",
    deepResultStat: "3",
    deepResultStatLabel: "final result sets",
    deepResultBullets: [
      "Single · Periodical · Combined results",
      "Weighted subject marks & auto grading",
      "Merit rank lists for every class",
      "Letter grades, GPA & tabulation sheets",
      "QR-verified marksheets & documents",
      "A4 print in English or Bangla",
    ],
    deepAttendanceTitle: "Smart Attendance",
    deepAttendanceDesc:
      "Photo rosters, biometric device sync and live trend dashboards — complete attendance oversight for every class.",
    deepAttendanceStat: "3",
    deepAttendanceStatLabel: "view modes — daily, weekly, monthly",
    deepAttendanceBullets: [
      "Photo rosters for every class & section",
      "Daily, weekly & monthly summaries",
      "Teacher & staff attendance",
      "ZK biometric device auto-sync",
      "Live trend dashboards for admins",
      "Instant absent & present reports",
    ],
    deepFeesTitle: "Fees & Payments",
    deepFeesDesc:
      "From fee heads to collection analytics — every transaction tracked, invoiced and reported.",
    deepFeesStat: "4",
    deepFeesStatLabel: "payment channels",
    deepFeesBullets: [
      "Fee heads & class-wise assignment",
      "Due tracking & defaulter reports",
      "Collection dashboard & statistics",
      "bKash · Nagad · Rocket · Card",
      "Invoices for every transaction",
      "Staff payroll & expense accounts",
    ],
    deepAdmissionTitle: "Admission & Student Records",
    deepAdmissionDesc:
      "From first inquiry to enrolled student — a smooth, fully digital admission journey.",
    deepAdmissionStat: "1-click",
    deepAdmissionStatLabel: "approval → enrollment",
    deepAdmissionBullets: [
      "Admission forms & inquiry follow-up",
      "Approval auto-enrolls the student",
      "Photo profiles, rolls & guardians",
      "Class · section · shift placement",
      "Promotions & instant student search",
      "Printable profiles & ID cards",
    ],
    deepCommunicationTitle: "Communication & Community",
    deepCommunicationDesc:
      "Keep guardians and staff informed and engaged — with two-way communication across every channel.",
    deepCommunicationStat: "3",
    deepCommunicationStatLabel: "broadcast channels",
    deepCommunicationBullets: [
      "Notice board & event calendar",
      "SMS · Email · WhatsApp broadcasts",
      "Two-way conversations with guardians",
      "Complaint box with resolution tracking",
      "Support tickets & announcements",
      "Committees with member roles",
    ],
    deepCampusTitle: "Campus Operations",
    deepCampusDesc:
      "Library, transport, hostel, inventory and HR — every corner of campus operations in one portal.",
    deepCampusStat: "5+",
    deepCampusStatLabel: "operations modules",
    deepCampusBullets: [
      "Library issue, return & members",
      "Transport routes & memberships",
      "Hostel rooms & seat management",
      "Inventory with QR-verified reports",
      "HR, departments & payroll",
      "Certificates & competition events",
    ],

    /* ---- Closing call-to-action ---- */
    ctaTitle: "Ready to run your institution on IncrelogEMS?",
    ctaSubtitle:
      "Register in minutes — pick a package, add your campus and go live the same day. Our team migrates your first data for free.",

    /* ---- Pricing card perks ---- */
    plansTagline: "Whichever plan you choose — every feature unlocked, with daily updates included.",
    planPerk: "All features unlocked · Daily updates",

    /* ---- Request a demo section ---- */
    demoBadge: "Request a Demo",
    demoTitle: "See IncrelogEMS in action — on us",
    demoTypeKgPrimary: "Kindergarten/Primary School",
    demoTypeHighSchool: "High School",
    demoTypePrimaryHigh: "Primary & High School",
    demoTypeCollegeUni: "College & University",
    demoTypeCoaching: "Coaching",
    demoTypeMadrasha: "Madrasha",
    demoSubtitle:
      "A guided walkthrough tailored to your institution. Tell us a little about your campus and we will set everything up.",
    demoPoint1: "30-minute guided walkthrough with a product specialist",
    demoPoint2: "Tailored to your institution type, size and workflow",
    demoPoint3: "No commitment — decide after you see it live",
    demoName: "Your Name",
    demoEmail: "Work Email",
    demoPhone: "Phone (optional)",
    demoInstitution: "Institution Name",
    demoType: "Institution Type",
    demoMessage: "What would you like to see? (optional)",
    demoSubmit: "Request Free Demo",
    demoSuccess: "Request received! Our team will contact you within 24 hours.",
    demoError: "Could not submit your request — please try again.",
  },

  auth: {
    loginTitle: "Welcome back",
    loginBrandTitle: "Run your entire institution from one beautiful platform.",
    loginBrandLine: "From admissions to results, fees to guardians — everything your campus needs, in English & Bangla.",
    loginBrandPoint1: "20+ connected modules — one single login",
    loginBrandPoint2: "QR-verified documents, print-ready in A4",
    loginBrandPoint3: "English & Bangla — switch anytime",
    loginBrandFoot: "Trusted by schools, colleges, coaching & madrasas",
    loginSubtitle: "Login to your IncrelogEMS account",
    registerTitle: "Register your institution",
    registerSubtitle:
      "Create an institution account. The central controller will approve it shortly.",
    institutionName: "Institution Name",
    adminName: "Administrator Name",
    adminEmail: "Administrator Email",
    confirmPassword: "Confirm Password",
    passwordMismatch: "Passwords do not match",
    emailExists: "An account with this email already exists",
    referralCode: "Referral Code",
    referralInvalid: "This referral code was not found — check it or leave the field empty",
    loginFailed: "Invalid email or password",
    registerSuccess: "Registration successful! Please login.",
    createAccount: "Create Account",
    haveAccount: "Already have an account?",
    noAccount: "Don't have an account?",
    registerNow: "Register Now",
    loginNow: "Login Now",
    demoTitle: "Demo Credentials",
    demoCentral: "Central Controller (IncrelogEMS)",
    demoInstitution: "Institution (Demo High School)",
    demoStudent: "Student (Demo High School)",
    demoTeacher: "Teacher (Demo High School)",
    demoSelect: "— Select a demo account —",
    demoGroupAdmins: "Administrator Accounts",
    demoGroupMembers: "Member Accounts (Institution Code · Username)",
    demoPrimary: "Primary School Admin",
    demoKindergarten: "Kindergarten Admin",
    demoCollege: "College Admin",
    demoCampusCollege: "College Admin — Campus modules (HSC · BBA)",
    demoCampusUniversity: "University Admin — Campus modules (CSE)",
    demoParent: "Parent (Demo High School)",
    demoStaff: "Staff (Demo High School)",
    institutionCode: "Institution Code",
    institutionCodeHint:
      "Students, teachers, parents & staff: enter your institution code and sign in with your username.",
    searchInstitution: "Search Institution",
    backToAdmin: "Back to admin sign in",
    searchTitle: "Find Your Institution",
    searchPlaceholder: "Type institution name…",
    searchHint: "Search by name, select your institution and continue — its code fills in automatically.",
    searchNoResults: "No institution found",
    searchMinChars: "Type at least 2 characters…",
    searchSearching: "Searching…",
    searchSelect: "Select & Continue",
    username: "Username / ID",
    usernameRequired: "Username is required with an institution code",
    accountDisabled: "This account has been disabled by the institution. Contact your institution admin.",
    studentInactive: "This student is no longer active. Contact your institution admin.",
    invalidCode: "No registered institution found with this code",
    institutionInactive: "This institution is not active yet",
    demoExpired:
      "Your demo access has expired — the demo was granted for a limited validity period. Please contact our team for an extension or explore the packages.",
    demoPendingNote:
      "Your institution is registered. The central controller will approve it soon.",
    forgotLink: "Forgot password?",
    forgot: {
      title: "Reset your password",
      subtitle1: "Identify your account to start the recovery.",
      subtitle2: "Choose where we should send the code.",
      subtitle3: "Choose a new password for your account.",
      subtitle4: "You're all set.",
      step1: "Account",
      step2: "Verify",
      step3: "New Password",
      findAccount: "Find Account",
      accountFound: "Account found — choose a delivery channel",
      chooseChannel: "How should we send the code?",
      viaEmail: "Email",
      viaSms: "SMS",
      sendCode: "Send Code",
      codeSentEmail: "We sent a 6-digit code to",
      codeSentSms: "We sent a 6-digit code to",
      expiresIn: "Code expires in {time}",
      codeExpired: "This code has expired — resend it",
      verify: "Verify Code",
      resend: "Resend code",
      resendIn: "Resend available in {sec}s",
      resent: "A new code has been sent.",
      useDifferentAccount: "Use a different account",
      newPassword: "New Password",
      confirmPassword: "Confirm New Password",
      passwordHint: "At least 6 characters.",
      resetButton: "Reset Password",
      successTitle: "Password updated!",
      successNote: "Your password has been changed. You can now log in with the new password.",
      backToLogin: "Back to Login",
      devCode: "Development mode — your code is",
      errIdentify: "No active account matches these details. Check the institution code / username / email.",
      errExpired: "This recovery session expired. Please start again.",
      errChannel: "This channel is not available for your account.",
      errNotConfigured: "OTP delivery is not configured yet. Please contact your administrator.",
      errCooldown: "Please wait a moment before requesting another code.",
      errTooMany: "Too many codes requested. Try again in an hour.",
      errOtpExpired: "That code has expired. Request a new one.",
      errInvalidCode: "Incorrect code. Please try again.",
      errAttempts: "Too many wrong attempts. Request a new code.",
      errShortPassword: "Password must be at least 6 characters.",
      errMismatch: "Passwords do not match.",
      errSend: "The code could not be delivered. Please try again or contact your administrator.",
      errTarget: "Enter a test recipient first.",
      errNoChannels: "This account has no email or phone number on file. Please contact your administrator.",
    },
  },

  notify: {
    title: "Email / SMS (OTP) Delivery",
    subtitle: "Credentials used to deliver password-reset codes to your users",
    centralTitle: "Central Email / SMS (OTP) Delivery",
    centralSubtitle:
      "Platform credentials — used for central accounts and as the fallback for institutions without their own setup",
    mailTitle: "Email (SMTP)",
    mailNotSet: "Not configured",
    smtpHost: "SMTP Host",
    smtpPort: "Port",
    smtpUser: "Username",
    smtpPass: "Password",
    fromEmail: "From Email",
    fromName: "From Name",
    smsTitle: "SMS Gateway",
    smsNotSet: "Not configured",
    smsApiUrl: "API URL",
    smsMethod: "Method",
    smsSender: "Sender ID",
    smsAuthUser: "API Username",
    smsAuthPass: "API Password / Key",
    smsBody: "POST Body Template",
    smsHeaders: "Custom Headers",
    smsPlaceholderHint:
      "Placeholders {phone} {message} {sender} are replaced on every send; leave body blank for the default phone={phone}&message={message}.",
    activeLabel: "Active",
    usingOwn: "Using institution settings",
    usingCentral: "Using central platform settings",
    notConfigured: "Not configured",
    fallbackHint:
      "If this institution has no active credentials, password-reset codes are delivered through the central platform settings.",
    testSend: "Test",
    testToEmail: "test@example.com",
    testToPhone: "+8801XXXXXXXXX",
    testSent: "Test message sent — check the inbox/phone.",
    mailSaved: "Email settings saved.",
    smsSaved: "SMS settings saved.",
    errRequired: "Please fill the required fields (host, from email, password / API URL).",
    errNotConfigured: "Nothing active to test — save and activate the settings first.",
    errSend: "Test failed — check the credentials and try again.",
    errTarget: "Enter a test recipient first.",
    verificationTitle: "Document Verification (QR)",
    verificationDefault: "All documents enabled by default",
    verificationCentralHint: "Platform fallback for institutions without their own settings",
    verificationStats: "{codes} codes · {scans} scans",
    verificationIssueHint:
      "Turning a document OFF stops issuing NEW verification codes/QRs for it; codes already printed keep verifying publicly.",
    verificationSaved: "Verification settings saved.",
    verifyResult: "Exam Result / Marksheet",
    verifySchedule: "Exam Schedule Report",
    verifyInventory: "Inventory Report",
    whatsappTitle: "WhatsApp Integration",
    whatsappNotSet: "Not configured",
    waApiUrl: "API URL",
    waMethod: "Method",
    waSender: "Sender / Phone Number ID",
    waToken: "Auth Token / API Key",
    waBody: "POST Body Template",
    waHeaders: "Custom Headers",
    waPlaceholderHint:
      "Placeholders {phone} {message} {sender} are replaced on every send; leave the body blank for the default phone={phone}&message={message}. Works with Meta Cloud API, Twilio or any BSP — set a JSON body and Content-Type header as your provider requires.",
    waSaved: "WhatsApp settings saved.",
    templatesTitle: "Premium Email Templates",
    templatesSubtitle: "The branded emails this platform sends — preview them before going live",
    tplDemoName: "Demo Access",
    tplDemoDesc: "Demo request response with login credentials",
    tplPaymentName: "Payment Received",
    tplPaymentDesc: "Thank-you receipt for a collected payment",
    tplCredentialName: "Login Credentials",
    tplCredentialDesc: "Institution admin account / password reset",
    tplWelcomeName: "Registration Welcome",
    tplWelcomeDesc: "Thank-you note for newly registered institutions",
    tplPreview: "Preview",
  },

  analytics: {
    title: "Google Analytics",
    subtitle: "Connect your GA4 property — track visitors and read live reports right here",
    measurementId: "Measurement ID (G-XXXXXXXXXX)",
    measurementHint: "Injects gtag.js site-wide so Google Analytics starts collecting visits",
    propertyId: "GA4 Property ID",
    propertyHint: "Digits only — from GA Admin → Property Settings",
    clientEmail: "Service Account Email",
    clientHint: "Share this email as a Viewer in GA Admin → Property Access Management",
    privateKey: "Service Account Private Key",
    keyPlaceholder: "•••••••• — leave blank to keep the saved key",
    activeLabel: "Active",
    saved: "Google Analytics settings saved",
    loadStats: "Load statistics",
    statsTitle: "Last 28 days",
    activeUsers: "Active Users",
    sessions: "Sessions",
    pageViews: "Page Views",
    bounceRate: "Bounce Rate",
    avgDuration: "Avg. Session",
    topPages: "Top Pages",
    topCountries: "Top Countries",
    views: "views",
    users: "users",
    notConfigured: "Save the property ID and service-account credentials to load statistics",
    statsFailed: "Could not load statistics — check the credentials and property ID",
    noData: "No data yet — visits appear here once tracking is active",
    setupGuide: "Setup: create a service account in Google Cloud, enable the Analytics Data API, add its email as a Viewer on your GA4 property, then paste the credentials here.",
  },

  flowchartPage: {
    navLabel: "Platform Flowchart",
    title: "IncrelogEMS Platform Flowchart",
    subtitle: "How one platform runs every level of education — from the central authority down to every stakeholder",
    tier1Title: "Central Authority",
    tier1Desc: "Licenses institutions · packages · network monitoring",
    link1: "approves & governs",
    tier2Title: "Institution Network",
    instPrimary: "Primary School",
    instHigh: "High School",
    instCollege: "College",
    instUniversity: "University",
    branchChip: "main campus & branches",
    link2: "one platform · every level",
    tier3Title: "Academic Core Engine",
    step1: "Admissions",
    step2: "Students",
    step3: "Academic Setup",
    step4: "Exam Scheduling",
    step5: "Marks Entry",
    step6: "Auto Grading",
    step7: "Results & Transcripts",
    link3: "runs daily operations",
    tier4Title: "Operations & Finance",
    opTransport: "Transport",
    opTransportDesc: "Routes · fares · TrxID digital payments",
    opLibrary: "Library",
    opLibraryDesc: "Books · issue & return · availability",
    opHostel: "Hostel",
    opHostelDesc: "Rooms · residents · attendance",
    opAccounts: "Accounts",
    opAccountsDesc: "Income & expense · premium charts",
    opInventory: "Inventory",
    opInventoryDesc: "Items · reports · QR verification",
    opNotices: "Notices",
    opNoticesDesc: "Announcements · events · communication",
    link4: "serves every stakeholder",
    tier5Title: "Stakeholders",
    shAdmins: "Institution Admins",
    shTeachers: "Teachers",
    shStudents: "Students & Parents",
    shMembers: "Service Members",
    bandTitle: "Built into every layer",
    bandSecurity: "Role-based security",
    bandBilingual: "Bilingual EN / বাংলা",
    bandMobile: "Mobile-first UI",
    bandReports: "Print-ready reports",
    edgeTitle: "Why IncrelogEMS dominates",
    edgeSubtitle: "The core advantages that keep it ahead of every other education-management service",
    f1Title: "Every level, one platform",
    f1Desc: "Primary to University — most providers cover a single segment; IncrelogEMS runs them all, branches included, in one system.",
    f2Title: "Bangladesh-native grading",
    f2Desc: "Board GPA-5 scale for schools & HSC, UGC GPA-4 CGPA for college & university — with retake, dropped and incomplete handling built in.",
    f3Title: "Clash-free scheduling",
    f3Desc: "Exam-room, course-routine, teacher and time conflicts are detected automatically — before they ever reach the students.",
    f4Title: "Traceable digital payments",
    f4Desc: "bKash, Nagad, Rocket, card and bank fare collection with a mandatory transaction ID on every digital payment.",
    f5Title: "Cross-term CGPA & transcripts",
    f5Desc: "Semester results roll up into a live CGPA, and board-style transcripts print with the institution's own branding.",
    f6Title: "A truly bilingual system",
    f6Desc: "English and বাংলা across every screen, report and marksheet — not just the menus.",
    f7Title: "Central-to-branch governance",
    f7Desc: "The main institution assigns exams to its branches and keeps publishing control of schedules and results.",
    f8Title: "Premium analytics & reports",
    f8Desc: "Lakh-and-crore formatted charts, branded printable reports and mobile-first sheets built for real school offices.",
  },

  verifyPage: {
    title: "Verify a Document",
    subtitle: "Check the authenticity of a marksheet, exam schedule or inventory report",
    tabEnter: "Enter Code",
    tabScan: "Scan QR",
    placeholder: "EMS-XXXX-XXXX",
    hint: "Type the code printed under the QR on the document — dashes optional.",
    verifyButton: "Verify",
    startCamera: "Start Camera",
    stopCamera: "Stop Camera",
    cameraError: "Camera unavailable or permission denied.",
    retryCamera: "Try Again",
    typeInstead: "Type the code instead →",
    errBoundary: "The verifier hit an unexpected error. Please retry — or type the code instead.",
    validTitle: "Verified — document is authentic",
    invalidTitle: "Not Verified",
    invalidNote: "This code doesn't match any issued document. Check the typing or contact the institution.",
    kindResult: "Exam Result / Marksheet",
    kindSchedule: "Exam Schedule",
    kindInventory: "Inventory Report",
    kindAdmitCard: "Exam Admit Card",
    examDates: "Exam Dates",
    institution: "Institution",
    exam: "Exam",
    issuedOn: "Issued On",
    student: "Student",
    roll: "Roll",
    classLabel: "Class",
    guardian: "Guardian",
    guardianPhone: "Guardian's Phone",
    marks: "Obtained Total",
    grade: "Grade",
    subjects: "Subjects",
    window: "Exam Window",
    haveCodeLink: "Have a printed code (EMS-XXXX-XXXX)? Verify it here →",
    navLabel: "Verify",
  },

  guide: {
    title: "User Guide",
    subtitle: "Every module from start to finish — where to begin, how it flows, and who can use it",
    navLabel: "User Guide",
    accessibilityTitle: "User Accessibility",
    accessibilityHint: "Each module below shows the roles that can access it — public pages need no login.",
    startLabel: "START",
    doneLabel: "DONE",
  },

  connection: {
    offlineTitle: "You're offline",
    offlineBody:
      "It looks like your internet connection was lost. Everything you entered is safe — reconnection is checked automatically.",
    reconnecting: "Reconnecting…",
    backOnline: "Back online",
  },

  trackPage: {
    title: "Track Your Application",
    subtitle: "Check your admission application status, queue position and fee — verified with your reference number",
    reference: "Application Reference",
    contactLabel: "Email / Phone Used in the Application",
    contactPlaceholder: "The email or phone number you applied with",
    passwordLabel: "Tracking Account Password (optional)",
    verifyHint:
      "Verify with the email or phone used in the application — or with the password of the tracking account you created while applying.",
    lookupButton: "Track Application",
    errDisabled: "This institution has not enabled application tracking.",
    errInstitution: "No active institution found with this code.",
    errNotFound: "No application found with this reference number.",
    errVerify: "Verification failed — the email/phone or password doesn't match this application.",
    refLabel: "Reference",
    positionLabel: "Position in queue",
    positionOf: "of {n} pending",
    feeVerifiedNote: "Payment verified by the institution",
    feeWhereHint: "Pay the fee to any account below, then submit your transaction ID so the institution can verify it.",
    gatewayLabel: "Payment Gateway / Method",
    submitPayment: "Submit Payment Info",
    paymentSubmitted: "Your payment information was submitted — the institution will verify it.",
    errNotDue: "This application's fee is not awaiting payment.",
    trackAnother: "Track another application",
    notAppliedYet: "Haven't applied yet?",
    trackCta: "Track your application →",
  },

  applyPage: {
    title: "Apply for Admission",
    subtitle: "Apply online to your chosen institution — no account needed",
    navLabel: "Apply for Admission",
    stepInstitution: "Institution",
    stepStudent: "Student",
    stepGuardian: "Guardian & Contact",
    stepAddress: "Address & Note",
    stepReview: "Review",
    continueButton: "Continue",
    backButton: "Back",
    stepOf: "Step {n} of {m}",
    stepInvalid: "Please fill in the required fields to continue.",
    reviewTitle: "Review & Submit",
    reviewHint: "Check everything before submitting — go back to a step to change anything.",
    step1Title: "Find your institution",
    step1Hint: "Enter your institution code, or search the institution by name.",
    findButton: "Find Institution",
    orLabel: "or",
    searchLabel: "Search by name",
    searchPlaceholder: "Type at least 2 letters of the institution name…",
    searchEmpty: "No matching institutions found. Try the institution code instead.",
    notFound: "No active institution found with this code.",
    codeHint: "The institution code is printed on ID cards and fee receipts — or ask your institution.",
    chosenLabel: "Applying to",
    changeInstitution: "Change institution",
    submitButton: "Submit Application",
    successTitle: "Application submitted!",
    successBody: "Your application has been received by {name}. The institution will contact you on the phone number you provided.",
    referenceLabel: "Reference no.",
    applyAnother: "Apply to another institution",
    rateLimited: "Too many applications were submitted from this device. Please try again later.",
    feeNoticeTitle: "Application Fee",
    feeNoticeBody:
      "A one-time application fee of {amount} is charged for this application. Pay it to any account below and keep the transaction ID (TrxID) — the institution verifies it on approval.",
    feeWhereTitle: "Where to pay",
    feeSuccessDue:
      "Please pay the {amount} application fee to one of the accounts below and keep the transaction ID — the institution will verify it.",
    emailSentNote: "Reference number sent to your email",
    accountTitle: "Create a tracking account",
    accountHint:
      "Use the email from this application with this password to track the application's status on the Track page.",
  },

  central: {
    supportPage: {
      title: "Support Panel",
      subtitle: "Track and resolve tickets raised by registered institutions",
      totalTickets: "Total Tickets",
      allStatuses: "All Statuses",
      institution: "Institution",
      subjectLabel: "Subject",
      replies: "Replies",
      attachmentsLabel: "Attachments",
      lastUpdate: "Last Update",
      conversation: "Conversation",
      reportedOn: "Reported on",
      startProgress: "Start Progress",
      resolve: "Resolve",
      closeTicket: "Close",
      reopen: "Reopen",
      updateLabel: "Post an update",
      postUpdate: "Post Update",
      markSolution: "Mark as solution (resolves the ticket)",
      updatePosted: "Update posted",
      solutionSent: "Solution posted — ticket resolved",
      statusChanged: "Ticket status updated",
      noTickets: "No support tickets",
      solution: "Solution",
      supportTeam: "Support Team",
    },
    dashboard: {
      title: "Central Dashboard",
      welcome: "Welcome back",
      totalInstitutions: "Total Institutions",
      pendingInstitutions: "Pending Approval",
      activeSubscriptions: "Active Subscriptions",
      pendingRequests: "Pending Requests",
      totalCollected: "Total Collected",
      totalDue: "Total Due",
      recentPayments: "Recent Payments",
      revenueTrend: "Revenue (Last 6 Months)",
      academicItems: "Academic Items",
      packagePlans: "Package Plans",
      quickActions: "Quick Actions",
      noPayments: "No payments collected yet",
    },
    packages: {
      title: "Package Plans",
      subtitle: "Create and manage packages for each institution type",
      newPackage: "New Package",
      editPackage: "Edit Package",
      /* referral program */
      referralTitle: "Referral Discount",
      referralHint:
        "Every subscriber holds a personal referral code to promote other institutions — registrations with a code get this percentage off their first package purchase (0 turns it off).",
      referralSaved: "Referral discount set to {pct}%",
      referralInvalid: "Enter a discount between 0 and 90",
      packageName: "Package Name (English)",
      packageNameBn: "Package Name (Bangla)",
      priceBDT: "Price (BDT)",
      durationMonths: "Duration (months)",
      maxStudentsLabel: "Maximum Students",
      featuresLabel: "Features — one per line (English)",
      featuresBnLabel: "Features — one per line (Bangla)",
      deactivate: "Deactivate",
      activate: "Activate",
      cannotDelete: "This package has requests or subscriptions. Deactivate it instead.",
      planCreated: "Package created successfully",
      planUpdated: "Package updated successfully",
      filterByType: "Filter by type",
      /* education-pattern pricing */
      heroBadge: "Education-pattern pricing",
      heroTitle: "One plan, priced by how you teach",
      heroText: "Every pattern pays per active student — nothing else. Government institutions get a flat ৳3 rate; private schools, coaching and madrasa save 10% when paying yearly.",
      setupFeeNote: "One-time setup fee",
      setupFeeValue: "৳5,000 — charged with the first subscription only",
      monthlyToggle: "Monthly",
      yearlyToggle: "Yearly",
      saveBadge: "{pct}% OFF",
      studentsLabel: "Students",
      calculatorHint: "Estimate any pattern — totals below update live",
      perStudentMonth: "/ student / month",
      perStudentYear: "/ student / year",
      yearlyOption: "Yearly payment",
      yearlyNowithDiscount: "with 10% off",
      monthlyTotal: "Monthly",
      yearlyTotal: "Yearly",
      groupGovernment: "Government Institutions",
      groupSchools: "Private Schools",
      groupHigher: "Higher Education",
      groupSpecial: "Coaching & Madrasa",
      govtBadge: "Govt. rate",
      unlimitedStudents: "Unlimited students",
      subscribers: "subscribers",
      legacyNote: "Legacy plan — not shown to institutions",
      estimateFor: "Estimate for",
      studentsWord: "students",
      billingBasis: "Billing basis",
      perStudentMonthBasis: "Per student / month",
      perStudentYearBasis: "Per student / year",
      ratePerStudent: "Rate per student (৳)",
      yearlyDiscount: "Yearly discount (%)",
      patternLabel: "Education pattern",
      cycleLabel: "Billing cycle",
      monthsShort: "mo",
    },
    institutionsPage: {
      title: "Institutions",
      subtitle: "Approve, monitor and manage registered institutions",
      approve: "Approve",
      suspend: "Suspend",
      reactivate: "Reactivate",
      approveConfirm: "Approve this institution? It will be able to request packages.",
      suspendConfirm: "Suspend this institution? Its admins will lose portal access to new requests.",
      statusUpdated: "Institution status updated",
      governmentLabel: "Government institution",
      governmentHint: "Government institutions get the special ৳3/student rate plans",
      addBranch: "Add Branch",
      branchCreated: "Branch created with its admin login",
      branchOf: "branch of",
      parentInstitution: "Parent Institution (Brand)",
      branchHint: "The branch inherits the parent's type and address. Its admin logs in with the email and password above.",
      manageClasses: "Classes",
      classesUpdated: "Linked classes updated",
      manageInfo: "Institution Info",
      infoUpdated: "Institution info updated",
      linkHelp: "Tick the catalog items that belong to this institution (or branch). Linked items appear only in this institution's portal — and its branches see the parent's items too.",
      linkedTo: "linked to",
      admin: "Admin",
      subscriptions: "Subscriptions",
      registeredOn: "Registered",
      noInstitutions: "No institutions registered yet",
      copyCode: "Click to copy the institution code",
      /* referral code management (central credential) */
      referralCode: "Referral Code",
      referralManage: "Referral",
      referralCurrent: "Current code",
      referralCustomLabel: "Custom code (4–20 letters, numbers or dashes)",
      referralGenerate: "Generate new code",
      referralUpdated: "Referral code updated",
      referralTaken: "This referral code is already used by another institution",
      referralFormat: "Use 4–20 letters, numbers or dashes — it must start with a letter or digit",
      referralHint:
        "This institution shares its code so other institutions can register with it — registrants get the platform referral discount (set in Landing Pricing) on their first package purchase.",
      sameAsParent: "Same as parent",
    },
    monitoringPage: {
      title: "Institution Monitoring",
      subtitle: "District & sub-district wise monitoring of exams, fees, attendance, notices, events and complaints",
      filters: "Filters",
      period: "Period",
      scopeSummary: "Scope",
      districtsCovered: "Districts",
      subDistrictsCovered: "Sub-districts",
      noInstitutionsInScope: "No institutions found in this area yet",
      drillTitle: "Area-wise Summary",
      drillHintDistrict: "Click a district to drill into its sub-districts",
      drillHintSubDistrict: "Click a sub-district to drill into its institutions",
      drillHintInstitution: "Showing institutions in the selected area",
      allDistricts: "All Districts",
      allSubDistricts: "All Sub-districts",
      backToAllDistricts: "← All districts",
      backToDistrict: "← All sub-districts",
      // tabs
      tabOverview: "Overview",
      tabExams: "Exams & Results",
      tabFees: "Fee Collection",
      tabAttendance: "Attendance",
      tabCommunication: "Notices, Events & Complaints",
      // overview
      openComplaints: "Open Complaints",
      // exams tab
      examStatusSummary: "Exam Status",
      publishedSchedules: "Schedules Published",
      resultsPublished: "Results Published",
      recentExams: "Exams",
      noExams: "No exams created in this scope",
      examResultsStats: "Result Statistics",
      resultsHint: "Average, highest and lowest score percentages per exam (from entered marks)",
      marksEntered: "Marks Entered",
      noResults: "No exam marks entered in this scope",
      schedulePublished: "Schedule published",
      // fees tab
      feeStatsTitle: "Fee Collection Statistics",
      collectedInPeriod: "Collected in period",
      collectionsInPeriod: "Collections",
      byMethod: "By Payment Method",
      monthlyTrend: "Collection (Last 6 Months)",
      topInstitutions: "Top Institutions",
      noFees: "No fees collected in this scope",
      transactions: "transactions",
      // attendance tab
      studentAttendance: "Student Attendance",
      teacherAttendance: "Teacher Attendance",
      attendanceTrend: "Attendance Trend",
      attendanceByInstitution: "By Institution",
      noAttendance: "No attendance records in this period",
      studentsMarked: "records",
      // communication tab
      activeNotices: "Active Notices",
      upcomingEvents: "Upcoming Events",
      complaintStatusSummary: "Complaints by Status",
      recentNotices: "Recent Notices",
      noNotices: "No notices published",
      noEvents: "No upcoming events",
      noComplaints: "No complaints submitted",
      venue: "Venue",
      pinned: "Pinned",
    },
    accountsPage: {
      title: "Accounts",
      subtitle: "Every institution login credential in one place — reset any account's password",
      loginEmail: "Login Account",
      role: "Role",
      centralController: "IncrelogEMS Central",
      noAccounts: "No accounts found",
      resetPassword: "Reset Password",
      newPassword: "New Password",
      resetHint: "Passwords are stored encrypted and can only be replaced, never viewed. Share the new password securely with the institution.",
      resetConfirm: "Reset this password? The old one stops working immediately.",
      passwordReset: "Password reset successfully",
    },
    requestsPage: {
      title: "Package Requests",
      subtitle: "Approve requests to create subscriptions for institutions",
      requestedBy: "Requested By",
      requestedPackage: "Requested Package",
      approve: "Approve",
      reject: "Reject",
      approveConfirm: "Approve this request? A subscription will be created and payment will be due.",
      rejectConfirm: "Reject this request? The institution will need to request again.",
      approved: "Request approved — subscription created",
      referralApplied: "referral discount {pct}% applied ({amt} off)",
      rejected: "Request rejected",
      noRequests: "No package requests yet",
      decidedOn: "Decided",
    },
    profilePage: {
      title: "Central Credential Profile",
      subtitle: "View and update the central administrator's own sign-in credential",
      infoTitle: "Credential Information",
      role: "Role",
      lastLogin: "Last Sign-in",
      createdAt: "Created",
      never: "Never",
      updateTitle: "Update Profile",
      updateHint: "Changing the email changes the credential used to sign in to the central panel.",
      changeTitle: "Change Password",
      currentPassword: "Current Password",
      newPassword: "New Password",
      confirmNewPassword: "Confirm New Password",
      passwordHint: "Minimum 6 characters.",
      updated: "Profile updated.",
      passwordUpdated: "Password changed.",
      wrongPassword: "Current password is incorrect.",
      updateBtn: "Update Profile",
      changeBtn: "Change Password",
    },
    uploadPolicyPage: {
      title: "Upload Policy",
      subtitle: "Set the image and document limits that every institution's uploads must follow",
      imageSizeLabel: "Image max size (KB)",
      imageSizeHint: "Profile photos and identity scans above this size are rejected",
      imageDimLabel: "Image max dimension (px)",
      imageDimHint: "Larger images are auto-downscaled to this dimension on upload",
      docSizeLabel: "PDF / document max size (KB)",
      docSizeHint: "Support-ticket attachments above this size are rejected",
      cardTitle: "Institution upload limits",
      cardNote: "Applies to all institutions on the platform",
      appliesTitle: "What this policy applies to",
      appliesStudents: "Student profile photos",
      appliesIdentity: "Student & guardian identity document scans",
      appliesLogo: "The institution profile logo",
      appliesSupport: "Support-ticket attachments (PDF and other documents)",
      appliesMembers: "Member profile photos (students, teachers, parents, staff)",
      saved: "Upload policy saved",
      invalid: "Enter valid positive values for all three limits",
    },
    demoRequestsPage: {
      title: "Demo Requests",
      subtitle: "Follow up on demo requests submitted from the landing page",
      requester: "Requester",
      institutionLabel: "Institution",
      messageLabel: "Message",
      requestedOn: "Requested",
      contacted: "Mark Contacted",
      convert: "Mark Converted",
      convertConfirm: "Mark this demo request as converted? Use it when the visitor registers as an institution.",
      reject: "Reject",
      rejectConfirm: "Reject this demo request?",
      contactedMsg: "Marked as contacted",
      convertedMsg: "Marked as converted — welcome aboard",
      rejectedMsg: "Demo request rejected",
      deletedMsg: "Demo request deleted",
      deleteConfirm: "Delete this demo request permanently?",
      noRequests: "No demo requests yet",
      decidedOn: "Closed",
      filterAll: "All",
      viewMessage: "View message",
      sendDemo: "Send Demo Access",
      sendDemoConfirm:
        "Grant demo access? A full demo environment will be created for this requester and the login credentials will be emailed to them.",
      demoSentMsg: "Demo credentials emailed — the requester can sign in now",
      demoResentMsg: "Demo credentials re-sent with a fresh password",
      demoSentManual:
        "Demo environment created, but the email could not be delivered. Share this password with the requester manually:",
      demoEmailTaken:
        "This requester's email is already used by another account — a demo environment could not be created",
      demoBadge: "Demo sent",
      validityLabel: "Demo validity (days)",
      validityHint:
        "How many days a granted demo stays usable — the audience can operate the demo environment only within this window",
      validitySaved: "Demo validity saved — new grants default to {days} days",
      validityInvalid: "Enter a validity between 1 and 365 days",
      validityUpdatedMsg: "Demo validity updated for this requester",
      daysColumn: "Days",
      expiresLabel: "Valid till",
      daysLeft: "{n}d left",
      expiredBadge: "Expired",
      sendDemoDaysNote: "The demo will stay usable for {n} days from now.",
    },
    pricingPage: {
      title: "Landing Pricing",
      subtitle: "Student-count slabs shown on the landing pricing cards — add or tune them any time",
      category: "Category",
      range: "Student Range",
      minStudents: "Min Students",
      maxStudents: "Max Students",
      maxUnlimited: "blank = no upper limit (e.g. 301+)",
      monthlyPrice: "Monthly Price (৳)",
      yearlyDiscount: "Yearly Discount (%)",
      yearlyHint: "Yearly billing takes this percentage off the monthly price",
      addTier: "Add Range",
      editTier: "Edit Range",
      noTiers: "No ranges yet — this card stays hidden on the landing page until you add one",
      tierSaved: "Pricing range saved",
      tierDeleted: "Pricing range deleted",
      deleteConfirm: "Delete this pricing range?",
      invalidRange: "Max students must be greater than min students",
      invalidPrice: "Enter a valid monthly price",
      invalidDiscount: "Yearly discount must be between 0 and 90",
      previewHint: "The landing page updates instantly — no rebuild needed.",
    },
    paymentsPage: {
      title: "Payment Collection",
      subtitle: "Collect payments for approved subscriptions and track invoices",
      dueSubscriptions: "Due Subscriptions",
      collectPayment: "Collect Payment",
      invoiceNo: "Invoice No",
      transactionRef: "Transaction Ref / TrxID",
      collectedBy: "Collected By",
      paymentHistory: "Payment History",
      paymentRecorded: "Payment recorded successfully",
      remainingDue: "Remaining due",
      fullyPaid: "Fully Paid",
      paidAmount: "Paid",
      dueAmount: "Due",
      subscriber: "Institution",
      planName: "Package",
      collect: "Collect",
      noDue: "No due subscriptions — everything is fully paid 🎉",
      confirmPayment: "Record this payment?",
      invalidAmount: "Amount must be greater than zero",
      amountExceeds: "Amount exceeds remaining due",
    },
    academicPage: {
      title: "Academic Info Registration",
      subtitle: "Central catalog of academic items — institutions select what they need",
      itemName: "Name (English)",
      itemNameBn: "Name (Bangla)",
      addItem: "Add Item",
      editItem: "Edit Item",
      itemExists: "An item with this name already exists in this category",
      linkedInstitution: "Linked Institution",
      globalItem: "Global (all institutions)",
      linkHint: "Linked items appear only for that institution (and its branches) instead of everyone.",
      itemCreated: "Item added successfully",
      syncTemplates: "Sync Standard Templates",
      syncDone: "Central catalog updated — {c} classes and {s} subjects added (Madrasa / College / University lists included)",
      itemUpdated: "Item updated successfully",
      selectedBy: "Selected by",
      institutionCount: "institutions",
      newItem: "New Item",
    },
  },

  portal: {
    dashboard: {
      title: "Institution Dashboard",
      welcome: "Welcome",
      myInstitution: "My Institution",
      statusPendingNote:
        "Your institution is awaiting approval from the central controller. You can explore packages meanwhile.",
      statusSuspendedNote:
        "Your institution is suspended. Please contact the central controller.",
      currentPackage: "Current Package",
      noPackage: "No active package",
      noPackageNote: "Browse available packages and send a purchase request.",
      expiresOn: "Expires on",
      paymentSummary: "Payment Summary",
      totalPaid: "Total Paid",
      outstandingDue: "Outstanding Due",
      academicSetup: "Academic Setup",
      selectedItems: "selected items",
      quickActions: "Quick Actions",
      browsePackages: "Browse Packages",
      manageAcademic: "Manage Academic Info",
      viewInvoices: "View Invoices",
      activeLabel: "Subscription active",
      memberSince: "Member since",
      demoBannerTitle: "Demo access",
      demoBannerBody:
        "This demo environment was granted for {n} days and stays usable till {date} — {left}. After that, access closes automatically.",
      demoBannerLastDay: "today is the last day",
      totalStudents: "Total Students",
      staffMembers: "Staff Members",
      pendingAdmissions: "Pending Admissions",
      feesCollected: "Fees Collected",
      thisMonth: "this month",
      latestNotices: "Latest Notices",
      upcomingEvents: "Upcoming Events",
      recentCollections: "Recent Fee Collections",
      daysRemaining: "days remaining",
      planDuration: "Plan duration",
      months: "months",
      invoiceNo: "Invoice No",
      noNotices: "No notices published yet",
      noEvents: "No upcoming events",
      supportStatus: "Support Status & Monitoring",
      noCollections: "No fee collections yet",
      manageStudents: "Manage Students",
      viewAdmissions: "View Admissions",
      todayAttendance: "Today Attendance",
      studentsLabel: "Students",
      staffLabel: "Staff",
      teachersLabel: "Teachers",
      last7Days: "Last 7 days — student attendance",
      todayLabel: "Today",
      attTarget: "Target {pct}%",
      present: "Present",
      absent: "Absent",
      onLeave: "On Leave",
      unmarked: "Unmarked",
      classWise: "Class-wise Attendance",
      sectionWise: "Section-wise Attendance",
      shiftWise: "Shift-wise Attendance",
      subjectWise: "Subject-wise Attendance",
      records: "Records",
      todaysActivities: "Today's Activities",
      rate: "Rate",
      absentStudents: "Absent Students",
      onLeaveStudents: "On Leave Students",
      absentStaff: "Absent Staff",
      onLeaveStaff: "On Leave Staff",
      listEmpty: "None",
      noStudentAttendanceToday: "No student attendance recorded yet today",
      recordAttendance: "Record Attendance",
    },
    packagesPage: {
      title: "Available Packages",
      subtitle: "Packages designed for your institution type",
      requestPackage: "Request Package",
      requested: "Requested",
      pendingReview: "Pending review",
      requestNoteLabel: "Message (optional)",
      requestNotePlaceholder: "Any note for the central controller…",
      requestSent: "Request sent! The central controller will review it shortly.",
      alreadyRequested: "You already have a pending request for this package",
      loginRequired: "Please login to request a package",
      notActiveNote:
        "Package requests will unlock once your institution is approved by the central controller.",
      myRequests: "My Requests",
      requestedOn: "Requested",
      /* referral program */
      referralCardTitle: "Referral Program",
      referralCopyLink: "Copy invite link",
      referralLinkCopied: "Invite link copied!",
      referralShareHint:
        "Share your code or invite link — institutions registering with it get {pct}% off their first package purchase.",
      referralCount: "{n} institution(s) joined with your code",
      referralPendingNote:
        "Referral benefit: {pct}% off will be applied to your first package purchase.",
      referralEarnTitle: "Referral earnings",
      referralEarnHint: "You earn {pct}% of every referred institution's total yearly amount when they take a yearly plan — paid out by the Increlog team.",
      referralEarnTotal: "Earned to date",
      referralEarnEmpty: "No yearly referrals yet — earnings appear here automatically.",
      referralEarnPayoutNote: "Payouts are arranged by the Increlog team.",
      selectRange: "Select student range",
      rangeTooSmall: "Your current students exceed this range — pick a wider one",
      activeRangeLabel: "Subscribed range: {range} students",
      validUntil: "Valid until {date}",
      /* education-pattern pricing */
      yourStudents: "Your active students",
      yourStudentsNote: "Totals below are billed per active student",
      perStudentMonth: "/ student / month",
      perStudentYear: "/ student / year",
      monthlyOption: "Monthly payment",
      yearlyOption: "Yearly payment",
      save10: "Save {pct}%",
      setupFeeLine: "One-time setup fee",
      totalLabel: "Total payable",
      cycleLabel: "Choose billing cycle",
      breakdownStudents: "Students",
      breakdownRate: "Rate",
      breakdownMonths: "Months",
      breakdownSubtotal: "Subtotal",
      breakdownDiscount: "Yearly discount",
      breakdownSetup: "Setup fee (one-time)",
      yearlyOnly: "Billed yearly only",
      estimateNote: "Final amount is confirmed by the central controller on approval.",
    },
    billingPage: {
      title: "Subscription & Payments",
      subtitle: "Your subscription details and payment history",
      subscriptionDetails: "Subscription Details",
      paymentHistory: "Payment History",
      noSubscription: "No subscription yet",
      noSubscriptionNote: "Request a package first — once approved, your subscription appears here.",
      totalAmount: "Package Amount",
      startEnd: "Validity Period",
      invoiceTitle: "Invoice",
      paidOn: "Paid On",
      noPayments: "No payments recorded yet",
      progress: "Payment Progress",
    },
    academicPage: {
      title: "Academic Info Setup",
      subtitle:
        "Select central catalog items and manage your institution's own — saved instantly",
      selected: "Selected",
      available: "Available",
      selectedCount: "selected",
      emptyCategory: "No items available in this category yet",
      autoSaveNote: "Selections save automatically",
      inactiveNote:
        "Central items are managed by the controller. Items you create below belong to your institution.",
      addItem: "Add Your Own",
      requestNote: "Academic catalog items are managed by the Central Controller — need something not listed?",
      requestCta: "Send a request via Support",
      filterAll: "All",
      filterCentral: "Central Catalog",
      filterOwn: "Your Items",
      noOwnItems: "No items created earlier for your institution",
      editItem: "Edit Item",
      itemName: "Name (English)",
      itemNameBn: "Name (Bangla)",
      ownBadge: "Yours",
      centralBadge: "Central",
      renameItem: "Rename",
      renamedBadge: "Renamed",
      resetName: "Reset to original",
      renamedSaved: "Display name updated",
      nameReset: "Display name reset to the original",
      searchItems: "Search items…",
      sortDefault: "Default",
      sortAZ: "Name A–Z",
      sortZA: "Name Z–A",
      subjectCode: "Subject Code",
      optionalLabel: "Optional Subject",
      optionalBadge: "Optional",
      nameExists: "An item with this name already exists in this category",
      itemCreated: "Item created",
      itemUpdated: "Item updated",
      itemDeleted: "Item deleted",
      itemInUse:
        "This item is used by students, admissions or fees and cannot be deleted",
      deleteOwnConfirm: "Delete this item? Selections using it will be removed.",
    },

    profile: {
      title: "Institution Profile",
      subtitle: "Manage your institution's own information shown as a profile",
      logo: "Institution Logo",
      uploadLogo: "Upload Logo",
      changeLogo: "Change Logo",
      removeLogo: "Remove",
      logoHint: "PNG / JPG — max ~1MB",
      logoTooLarge: "Logo is too large (max ~1MB)",
      website: "Website",
      description: "Description",
      contactInfo: "Contact Information",
      sectionEduInfo: "Bangladesh Education Info",
      eduInfoHint:
        "Official registry identifiers — EIIN (schools/colleges), EIN (primary), board/college code, MPO code, education board, established year and post code.",
      profileUpdated: "Profile updated successfully",
      memberSince: "Registered On",
      changePassword: "Change Password",
      currentPassword: "Current Password",
      newPassword: "New Password",
      confirmNewPassword: "Confirm New Password",
      passwordChanged: "Password changed successfully",
      wrongPassword: "Current password is incorrect",
    },

    myProfilePage: {
      title: "My Profile",
      subtitle: "Your photo, personal info and optional subjects",
      notLinked: "No student profile is linked to this account yet",
      photoLabel: "Profile Photo",
      personalInfo: "Personal Info",
      optionalSubjects: "Optional Subjects",
      optionalSubjectsHint: "Choose from the optional subjects your admin enabled for your class",
      save: "Save Changes",
      saved: "Profile updated successfully",
      guardianName: "Guardian Name",
      guardianPhone: "Guardian Phone",
      motherName: "Mother Name",
      addressLabel: "Address",
      nameBnLabel: "Name (Bangla)",
      dob: "Date of Birth",
      gender: "Gender",
      roll: "Roll",
      classLabel: "Class",
    },

    competitionsPage: {
      title: "Competition Manager",
      subtitle: "Clubs, competitions, scheduling, points, results and history",
      tabClubs: "Clubs",
      tabCompetitions: "Competitions",
      tabStandings: "Standings",
      tabHistory: "History",
      newClub: "New Club",
      clubName: "Club Name",
      clubNameBn: "Club Name (Bangla)",
      clubDescription: "Description",
      clubExists: "A club with this name already exists",
      clubCreated: "Club created",
      clubDeleted: "Club deleted",
      competitionsCount: "competitions",
      newCompetition: "New Competition",
      competitionName: "Competition Name",
      venue: "Venue",
      scheduleAt: "Schedule",
      selectClub: "Club (optional)",
      standalone: "Standalone",
      competitionCreated: "Competition scheduled",
      statusUpdated: "Status updated",
      rescheduled: "Competition rescheduled",
      deleted: "Deleted",
      statusUpcoming: "Upcoming",
      statusRunning: "Running",
      statusCompleted: "Completed",
      statusCancelled: "Cancelled",
      start: "Start",
      complete: "Complete",
      cancel: "Cancel",
      reopen: "Reopen",
      manageResults: "Points",
      resultsTitle: "Point Management",
      addParticipant: "Add participant",
      rank: "Rank",
      points: "Points",
      remarks: "Remarks",
      saveResults: "Save Points",
      resultsSaved: "Points saved",
      publish: "Publish Result",
      unpublish: "Unpublish",
      published: "Result published",
      unpublished: "Result unpublished",
      notPublished: "Not published",
      standingsTitle: "Cumulative Standings",
      standingsHint: "Built from published results only",
      totalPoints: "Points",
      wins: "Wins",
      played: "Events",
      allClubs: "All clubs",
      historyTitle: "Competition History",
      winner: "Winner",
      noEntries: "No entries yet",
      upcomingEmpty: "Nothing scheduled — create the first competition",
    },
    controlPanelPage: {
      title: "Control Panel",
      subtitle: "Choose your modules, rename academic terms and set up standard classes",
      modulesTitle: "Portal Modules",
      modulesSubtitle: "Toggle the modules your institution operates — core items stay on",
      modulesSaved: "Module selection saved",
      modulesAllOn: "All modules on",
      coreNote: "Dashboard, Admissions, Students, Academic, Exams and Results are always available",
      optTitle: "Optional Subjects Management",
      optSubtitle: "Step 1 — choose the classes that manage optional subjects · Step 2 — mark the possible subjects",
      optStep1: "Classes",
      optStep2: "Possible optional subjects",
      optStep2Hint: "Students of an assigned class (or their teacher) choose from these in the profile editor. Saving with none marked removes the class from optional management.",
      optManaged: "Managed",
      optPickClass: "Pick a class first",
      renameTitle: "Academic Terms Renaming",
      renameSubtitle: "Use your own words — e.g. Class → Course, Section → Batch, Session → Semester",
      renamePlaceholder: "e.g.",
      renameSaved: "Academic terms saved",
      classesTitle: "Standard Classes",
      classesSubtitle: "Apply the standard class list for your institution type",
      classesApply: "Apply Standard Classes",
      classesApplied: "Standard classes applied",
      classesHint: "Year-level classes are stamped with the current session; Madrasa / College / University types also select their standard Bangladesh subject list (Quran-Hadith-Fiqh, HSC group subjects, university courses)",
      subjectFeeTitle: "Subject-based Monthly Fees",
      subjectFeeSubtitle: "Collect fees according to the subjects assigned to each student",
      subjectFeeToggle: "Subject fee collection",
      subjectFeeHint:
        "When active, Fees → Subject Fees lets you assign each student's subjects with a monthly amount and generate monthly fee schedules for collection. Turning it off hides the tab; already generated schedules stay.",
      subjectFeeOn: "Subject fee collection activated — the Subject Fees tab is now available under Fees.",
      subjectFeeOff: "Subject fee collection deactivated.",
      caTitle: "Payment Collection Accounts",
      caSubtitle: "Where students pay — mobile banking, bank accounts and other receiving info shown on member fee pages",
      caAdd: "Add Account",
      caEdit: "Edit Account",
      caMobile: "Mobile Banking",
      caBank: "Bank Account",
      caOther: "Other",
      caProvider: "Provider",
      caAccountType: "Account Type",
      caPersonal: "Personal",
      caMerchant: "Merchant",
      caBankName: "Bank Name",
      caWalletNo: "Wallet Number",
      caAccountNo: "Account Number",
      caAccountName: "Account Name",
      caHolder: "Account Holder",
      caBranch: "Branch",
      caRouting: "Routing No.",
      caNoteHint: "e.g. Send money and keep the TrxID for verification",
      caLabel: "Display Label",
      caLabelCol: "Provider / Bank",
      caNumberCol: "Number",
      caNameCol: "Name / Branch",
      caEmpty: "No collection accounts yet",
      caEmptyHint: "Add the bKash/Nagad/Rocket wallet or bank account students should pay into",
      caMemberHint: "Active accounts appear on the students' & parents' Fees page with a copy button.",
      caCreated: "Collection account added.",
      caUpdated: "Collection account updated.",
      afTitle: "Admission Application Fee",
      afSubtitle:
        "Decide whether new admission applications carry a fee — online (/apply) and desk applications alike",
      afToggle: "Application fee",
      afAmountLabel: "Fee Amount (BDT)",
      afHint:
        "When active, every new application carries this amount as a due fee; applicants see where to pay from your Payment Collection Accounts below. Record or waive the payment from Admissions with the wallet button.",
      afSaved: "Admission fee settings saved",
      afAmountInvalid: "Enter an amount greater than 0 to activate the fee",
      tkTitle: "Application Tracking Page",
      tkSubtitle: "Let applicants publicly track their admission application status by reference number",
      tkToggle: "Public tracking page",
      tkHint:
        "When active, applicants can check their status, queue position and submit their fee transaction ID at /track after verifying with the phone/email on the application or their tracking-account password.",
      tkOn: "Application tracking enabled — the /track page is now available for your institution.",
      tkOff: "Application tracking disabled.",
      gsTitle: "Group / Department-wise Subjects",
      gsSubtitle: "Define the subject set per group (school & college) or per department (university) — students are identified and pre-assigned by theirs",
      gsGroupBasis: "Group (School/College)",
      gsDeptBasis: "Department (University)",
      gsGroupHint: "e.g. Science → Higher Mathematics, Biology, Chemistry, Physics",
      gsDeptHint: "e.g. CSE department → its course/subject list",
      gsPickGroup: "Pick a Group",
      gsPickDept: "Pick a Department",
      gsSubjects: "Subjects",
      gsNoItems: "No groups/departments yet — add them under Academic Info first.",
      gsEmpty: "No subject sets yet",
      gsEmptyHint: "Pick a group or department above and tick its subjects",
      gsSaved: "Subject set saved.",
      gsUsageHint: "A student's group/department pre-selects these subjects in Fees → Subject Fees assignment and identifies their academic profile.",
      gsGroupLevel: "School/College",
      gsDeptLevel: "University",
      amTitle: "Attendance Machines",
      amSubtitle: "ZKTeco & universal devices — punches feed attendance automatically",
      amAdd: "Add Machine",
      amEdit: "Edit Machine",
      amBrand: "Brand",
      amGenericHttp: "Generic (HTTP Push)",
      amCsvOnly: "CSV Only",
      amMode: "Connection",
      amModePoll: "ZK Direct Poll",
      amModePush: "HTTP Push",
      amModeCsv: "CSV Import",
      amCapabilities: "Supports",
      amFinger: "Finger",
      amFace: "Face",
      amIp: "Device IP",
      amPort: "Port",
      amPollMinutes: "Auto-poll every (minutes)",
      amLocation: "Location",
      amSerial: "Serial No.",
      amToday: "Today",
      amLastSeen: "Last Seen",
      amTest: "Test",
      amSync: "Sync Now",
      amTestOk: "Device connected",
      amUsers: "users",
      amSynced: "Sync complete",
      amMatched: "matched",
      amUnmatched: "unmatched",
      amUnreachable: "Device unreachable — check the IP/port and that the machine is online.",
      amIpRequired: "Set the device IP first.",
      amCreated: "Machine added.",
      amUpdated: "Machine updated.",
      amFeed: "Punch Feed",
      amRecent: "Recent",
      amUnmatchedShort: "Unmatched",
      amPunchTime: "Time",
      amIdentifier: "Card No.",
      amPerson: "Person",
      amMap: "Map",
      amMapHint: "Choose the person this card no. belongs to — the mapping is remembered for future punches.",
      amMapped: "{n} punch(es) applied to attendance.",
      amMapNow: "Map Now",
      amUnmatchedHint: "{n} punch(es) have no matching student/staff yet.",
      amImportCsv: "Import CSV",
      amCsvHint: "Upload the attendance log exported from the machine's software (any brand)",
      amChooseFile: "Choose File",
      amRowsFound: "{n} rows found",
      amAutoMapped: "columns auto-detected",
      amMapColumns: "map the columns below",
      amColId: "ID / Card Column",
      amColDate: "Date Column",
      amColTime: "Time Column",
      amNoMachine: "No machine (import only)",
      amImport: "Import",
      amImported: "Imported {created} punches — {matched} matched, {unmatched} unmatched, {duplicates} duplicates skipped.",
      amNoRows: "No valid rows found — check the column mapping.",
      amRegistry: "Card Registry (RFID)",
      amRegistryHint: "Pre-register each student's / staff's RFID card no — their punches match instantly instead of landing in the unmatched queue. Badges and device user IDs work too.",
      amRegistryEmpty: "No RFID cards registered yet",
      amRegistryEmptyHint: "Add the card numbers your students & staff tap on the machines",
      amAddCard: "Add Card No.",
      amEditCard: "Edit Card No.",
      amCardNo: "RFID Card No.",
      amCardNoHint: "The number the machine reads from the person's RFID card (a badge or device user ID works too).",
      amMachineUserId: "Device User ID",
      amSaveToStudent: "Also save this card number to the student's profile (Card No. — RFID)",
      amCardSaved: "Card registered.",
      amCardUpdated: "Card updated.",
      amAppliedPunches: "{n} earlier unmatched punch(es) were matched to attendance.",
      amIdentifierTaken: "This card no. is already registered to another person.",
      amSourceAuto: "Auto-learned",
      amSourceManual: "Entered",
      amEmpty: "No attendance machines yet",
      amEmptyHint: "Add your ZKTeco (or any) device, or just import its CSV export",
      amApiKeyHint: "For HTTP Push: point the device/gateway to POST /api/device/punch with the x-api-key header using this key.",
      classesManage: "Manage full academic info (multi-select)",
      classStyleLabel: "Class naming style",
      classStyleWord: "Word — One, Two, Three",
      classStyleDigit: "Digit — Class 1, Class 2",
    },
    inquiriesPage: {
      title: "Admission Inquiry",
      subtitle: "Capture and follow up pre-admission inquiries from guardians",
      newInquiry: "New Inquiry",
      studentName: "Student Name",
      guardianName: "Guardian Name",
      phone: "Phone",
      classInterested: "Class Interested",
      note: "Note",
      statusLabel: "Status",
      inquiryCreated: "Inquiry recorded",
      statusUpdated: "Inquiry status updated",
      statusNew: "New",
      statusContacted: "Contacted",
      statusAdmitted: "Admitted",
      statusClosed: "Closed",
      markContacted: "Mark Contacted",
      markAdmitted: "Admitted",
      closeInquiry: "Close",
      noInquiries: "No inquiries yet — record the first one",
    },
    admissionsPage: {
      title: "Admission Form",
      subtitle: "Register admission applications — approval enrolls the student automatically",
      newApplication: "New Application",
      studentName: "Student Name",
      studentNameBn: "Student Name (Bangla)",
      gender: "Gender",
      male: "Male",
      female: "Female",
      other: "Other",
      dob: "Date of Birth",
      guardianName: "Guardian Name",
      guardianNameBn: "Father / Guardian Name (Bangla)",
      motherName: "Mother Name",
      motherNameBn: "Mother Name (Bangla)",
      guardianPhone: "Guardian Phone",
      applyClass: "Class Applied For",
      note: "Note / Message",
      notePlaceholder: "Message for the institution (appears in Communication)…",
      applicationCreated: "Application submitted",
      rapidType: "Rapid Application",
      detailsType: "Detailed Admission",
      sectionAdmissionInfo: "Admission Info",
      sectionIdentity: "Identity",
      sectionContact: "Contact Info",
      sectionAddress: "Address",
      bloodGroup: "Blood Group",
      religion: "Religion",
      islam: "Islam",
      hinduism: "Hinduism",
      christianity: "Christianity",
      buddhism: "Buddhism",
      otherReligion: "Other",
      studentPhone: "Student Phone",
      presentAddress: "Present Address",
      permanentAddress: "Permanent Address",
      contactPhone: "Contact Phone",
      approved: "Application approved — student enrolled. Roll:",
      rejected: "Application rejected",
      approveConfirm: "Approve this application? A student record with a roll number will be created.",
      rejectConfirm: "Reject this application?",
      approveTitle: "Approve & Enroll",
      approveBody: "Enroll this applicant",
      roll: "Roll",
      noApplications: "No admission applications yet",
      searchApplications: "Search application…",
      allStatuses: "All statuses",
      allClasses: "All classes",
      allSessions: "All sessions",
      appliedOn: "Applied",
      deleteConfirm: "Delete this application permanently? Its message thread is removed too.",
      deletedMsg: "Application deleted",
      deleteBlocked:
        "Approved applications that already created a student cannot be deleted — remove the student instead",
      noMatch: "No applications match your filters",
      decidedOn: "Decided",
      studentCreated: "Student enrolled",
      bulkUpload: "Bulk Upload",
      bulkUploadTitle: "Bulk Admission Applications (CSV)",
      bulkHint: "Download the template, then fill one row per application — keep the header row and column order exactly as-is. Required: studentName, guardianPhone. gender: MALE/FEMALE/OTHER · dob: YYYY-MM-DD. Excel: save as CSV first.",
      bulkChooseFile: "Choose CSV file",
      bulkDownloadTemplate: "Download CSV Template",
      bulkHeaderMismatch: "Header mismatch — the columns don't match the template, so this upload was not submitted. Download the template and keep every column in the same order (no extra, missing, or renamed columns).",
      bulkPreview: "Rows read",
      bulkValid: "valid",
      bulkRowInvalid: "invalid",
      bulkCreate: "Create {n} applications",
      bulkCreated: "Created",
      bulkFailedRows: "Failed",
      bulkRow: "Row",
      bulkDetail: "Detail",
      bulkAgain: "Upload another file",
      bulkTooMany: "Too many rows — upload at most 500 at a time",
      bulkParseError: "Could not read the file — save it as CSV and try again",
      bulkFailed: "Bulk upload failed — please try again",
      bulkErrMISSING_FIELDS: "studentName and guardianPhone are required",
      bulkErrCLASS_NOT_FOUND: "Class not found in your academic selections",
      bulkErrDB_ERROR: "Could not create this row",
      feeCol: "Application Fee",
      feePaid: "Paid",
      feeWaived: "Waived",
      recordFee: "Record Fee",
      feeModalTitle: "Application Fee",
      feeMarkPaid: "Mark Paid",
      feeWaive: "Waive",
      feeWaiveConfirm: "Waive this application fee? No payment will be recorded.",
      feeReopen: "Mark Due Again",
      feeReopenConfirm:
        "Set this application fee back to due? Any recorded payment info will be cleared.",
      feeRecorded: "Application fee recorded as paid",
      feeWaivedDone: "Application fee waived",
      feeReopened: "Application fee set back to due",
      feeDueApproveHint:
        "The application fee is still due — you can approve now and record the payment later.",
      feeWaivedNote: "This fee has been waived — no payment is required.",
    },

    studentsPage: {
      title: "Students",
      subtitle: "Enrolled students with class, guardian and fee status",
      profileReport: "Student Profile Report",
      rollNo: "Roll",
      photoCol: "Photo",
      classLabel: "Class",
      sectionLabel: "Section",
      guardian: "Guardian",
      feesDue: "Fees Due",
      noStudents: "No students enrolled yet — approve an admission application first",
      feeStatement: "Fee Statement",
      totalAssigned: "Total Assigned",
      admittedOn: "Admitted On",
      viewReport: "Report",
      filterLabel: "Search student…",
      /* datagrid update + bulk academic info */
      bulkSelectAll: "Select all students on this page",
      bulkSelected: "{n} selected",
      bulkSelectAllFiltered: "Select all {n}",
      bulkClear: "Clear",
      bulkAcademicLabel: "Set academic info for the selection:",
      bulkUnchanged: "unchanged",
      bulkApply: "Apply to Selected",
      bulkConfirm:
        "Update academic info of {n} selected student(s)? Fields left as \"unchanged\" keep their current value.",
      academicBulkApplied: "Academic info updated for {n} student(s)",
      bulkNoFields: "Choose at least one academic field to apply",
      quickUpdate: "Update academic info in the list",
      academicUpdated: "Academic info updated",
      /* profile update system */
      editProfile: "Edit Profile",
      profileUpdated: "Profile updated successfully",
      photoLabel: "Profile Photo",
      personalInfo: "Personal Info",
      motherName: "Mother Name",
      addressLabel: "Address",
      nameBnLabel: "Name (Bangla)",
      optionalSubjects: "Optional Subjects",
      optionalSubjectsHint: "Picked from the optional pool your admin set for this class",
      optionalPoolEmpty: "No optional subjects are available for this class yet",
      optionalPoolTitle: "Optional Subject Availability",
      optionalPoolSubtitle: "Admins decide which subjects are optional for each class",
      optionalPoolSave: "Save Availability",
      optionalPoolSaved: "Optional subject availability saved",
      poolForClass: "Class",
      choosePhoto: "Choose image",
      /* documents & media */
      mediaTitle: "Documents & Media",
      mediaStudentId: "Student NID / Birth ID",
      mediaFatherNid: "Father NID",
      mediaMotherNid: "Mother NID",
      sideFront: "Front Side",
      sideBack: "Back Side",
      mediaUpload: "Upload",
      mediaReplace: "Replace",
      mediaView: "View",
      mediaDownload: "Download",
      mediaRemove: "Remove",
      mediaEmpty: "Not uploaded",
      mediaSaved: "Document saved",
      mediaRemoved: "Document removed",
      mediaHint: "JPG / PNG — auto-resized. Visible to authorized staff only.",
      tabStudents: "All Students",
      tabAttendance: "Attendance",
      tabActivities: "Activities",
      filterClass: "Class",
      allClasses: "All Classes",
      filterSection: "Section",
      allSections: "All Sections",
      filterShift: "Shift",
      allShifts: "All Shifts",
      subjectOptional: "Subject (optional)",
      subjectHint: "Pick a subject to mark subject-wise attendance; leave empty for the general daily record.",
      newActivity: "New Activity",
      activityTitle: "Activity Title",
      activityNote: "Note / Details",
      activityDate: "Date",
      targetAll: "All Students",
      targetSelected: "Selected Students",
      pickStudents: "Pick students",
      audienceAll: "ALL",
      audience: "Audience",
      recipientsLabel: "recipients",
      activityCreated: "Activity recorded",
      activityDeleted: "Activity deleted",
      noActivities: "No activities recorded yet",
      deleteActivityConfirm: "Delete this activity?",
      markAttendance: "Mark Attendance",
      attendanceSaved: "Attendance saved successfully",
      attendanceHint: "Pick a date (and optionally a class), set each student's status and save. Leave status carries into the dashboard's Today Attendance section.",
      modeIndividual: "Individual",
      modeBulk: "Bulk Select",
      markingMode: "Marking mode",
      bulkHint: "Tick multiple students, then apply Present / Absent / Leave to all of them at once.",
      selectedLabel: "selected",
      selectAll: "Select all",
      clearSelection: "Clear",
      applyToSelected: "Apply to selected:",
      bulkApplied: "student(s) marked — review and save",
      unmarked: "Unmarked",
      photoTitle: "Profile Photo",
      photoUpload: "Upload Photo",
      photoChange: "Change Photo",
      photoRemove: "Remove Photo",
      photoSaved: "Profile photo updated",
      photoRemoved: "Profile photo removed",
      photoInvalid: "Please choose a valid image (JPG/PNG/WebP, under 2 MB)",
      photoHint: "JPG / PNG / WebP, up to 2 MB — automatically resized.",
    },

    identityPage: {
      title: "Student Identity",
      subtitle: "Maintain student roll, registration and ID-card information",
      // maintainer assignment (admin)
      maintainersTitle: "Maintainers",
      maintainersHint: "Decide who may maintain roll, registration and card information — the admin always can. Assign a staff member, optionally limited to specific classes. Their staff login gets access to only this page.",
      selectStaff: "Staff member",
      scopeLabel: "Class scope",
      allClassesScope: "All classes",
      assign: "Assign",
      removeConfirm: "Remove identity-maintainer access for",
      assigned: "Maintainer assigned",
      removed: "Maintainer removed",
      // students table
      studentsTitle: "Students",
      studentsHint: "Set each student's roll, board registration number and ID-card data. ID number, blood group and validity are printed on the ID Card in Certificates; the Card No. (RFID) is what attendance machines read.",
      studentsHintManager: "You can maintain roll, registration and card information for the students in your assigned scope.",
      searchPlaceholder: "Search roll, name, registration…",
      roll: "Roll",
      registrationNo: "Registration No.",
      cardNo: "ID No.",
      rfidCardNo: "Card No. (RFID)",
      bloodGroup: "Blood Group",
      cardIssuedAt: "Card Issued On",
      cardValidTill: "Valid Till",
      editTitle: "Edit Identity",
      updated: "Student identity updated",
      rollRequired: "Roll is required",
      rollExists: "This roll is already used by another student",
      registrationExists: "This registration number is already used by another student",
      rollAutoHint: "Leave empty to auto-assign the next roll number",
      noStudents: "No students found",
      noAccess: "No access",
      noAccessHint: "Your institution admin has not assigned you to maintain student identity data.",
    },

    feesPage: {
      title: "Fees Management",
      subtitle: "Fee heads, assignment, collection, due report and dashboard",
      tabOverview: "Overview & Due",
      tabHeads: "Fee Heads",
      tabAssign: "Assign Fees",
      tabCollections: "Collections",
      tabSubjectFees: "Subject Fees",
      sfMonth: "Month",
      sfGenerate: "Generate Schedules",
      sfGenerateHint: "Creates one fee schedule per student × subject for the picked month (existing ones are skipped) — collect them from the normal Collect flow.",
      sfSubjects: "Subjects",
      sfMonthly: "Monthly Total",
      sfAssign: "Assign Subjects",
      sfAssignHint: "Tick the subjects this student takes and set each monthly fee.",
      sfNoSubjects: "No subjects found — add subjects under Academic Info first.",
      sfSaved: "Subject fees saved.",
      sfGenerated: "{created} fee schedules created ({skipped} already existed).",
      sfMonthRequired: "Pick a month first.",
      sfRatesTitle: "Subject Fee Rates",
      sfRatesSubtitle: "Default monthly fee per subject — auto-filled when assigning students",
      sfRatesSet: "rates set",
      sfRatesHint: "Set each subject's standard monthly fee (e.g. Math 1000, Bangla 800); 0 removes the rate. Assignments auto-fill these amounts and stay overridable per student.",
      sfRatesSaved: "Subject fee rates saved.",
      cfDetailsTitle: "Transaction Details",
      cfTxnId: "Transaction ID (TrxID)",
      cfAccount: "Sender Account / Wallet No.",
      cfBank: "Bank Name",
      cfBranch: "Branch",
      cfRef: "Cheque / Transfer Reference No.",
      cfAcNo: "Account No.",
      cfCardType: "Card Type",
      cfCredit: "Credit",
      cfDebit: "Debit",
      cfPrepaid: "Prepaid",
      cfLast4: "Card Last 4 Digits",
      cfApproval: "Approval / Reference No.",
      cfCashHint: "Cash collection — no extra transaction details needed.",
      cfDetailsRequired: "Please fill the required transaction details for this payment method.",
      sfGroupPre: "This student's GROUP subjects are pre-selected from the Control Panel set — adjust fees and save.",
      sfDeptPre: "This student's DEPARTMENT subjects are pre-selected from the Control Panel set — adjust fees and save.",
      newHead: "New Fee Head",
      headName: "Name",
      headNameBn: "Name (Bangla)",
      headType: "Type",
      defaultAmount: "Default Amount",
      schedulesCount: "assignments",
      assignFee: "Assign Fee",
      assignTo: "Assign To",
      entireClass: "Entire Class",
      individualStudent: "Individual Student",
      feeTitle: "Title",
      feeTitlePlaceholder: "e.g. August Tuition / Admission 2026",
      dueDate: "Due Date",
      month: "Month (optional)",
      amountLabel: "Amount (BDT)",
      assign: "Assign",
      scheduleCreated: "1 fee schedule created",
      schedulesCreated: "fee schedules created",
      classStudentsNone: "No active students found in this class",
      targetRequired: "Select a student or a class",
      collectFee: "Collect Fee",
      recordCollection: "Record Fee Collection",
      studentLabel: "Student",
      scheduleLabel: "Fee (optional)",
      unspecific: "General payment (not tied to a fee)",
      collectionRecorded: "Collection recorded:",
      collectedTotal: "Collected",
      dueTotal: "Total Due",
      assignedTotal: "Total Assigned",
      assignments: "Assignments",
      activeStudents: "Active Students",
      byHead: "By Fee Head",
      dueReport: "Due Report",
      dueSearchPlaceholder: "Search student, roll or fee…",
      dueHeadAll: "All Heads",
      dueOverdue: "Overdue",
      dueUpcoming: "Upcoming",
      noDueFees: "No due fees — all paid 🎉",
      monthlyCollections: "Collections (Last 6 Months)",
      historyTitle: "Recent Collections",
      claimsTitle: "Online Payment Claims",
      claimRefCol: "Reference",
      claimGeneralItem: "General fee payment",
      claimPending: "Pending",
      claimApproved: "Approved",
      claimRejected: "Rejected",
      claimAll: "All",
      claimApproveConfirm: "Approve this payment claim? A fee collection (invoice) will be recorded for it.",
      claimRejectConfirm: "Reject this payment claim? The student will see it as rejected.",
      claimApprovedMsg: "Payment claim approved — the invoice has been recorded",
      claimRejectedMsg: "Payment claim rejected",
      claimStale: "This claim can no longer be approved — the fee item was fully paid in the meantime",
      claimsHint: "Students/parents submit transaction references from their portal; approving posts the invoice against the fee item.",
      headInUse: "This fee head has assignments and cannot be deleted",
      headCreated: "Fee head created",
      headUpdated: "Fee head updated",
    },

    accountsPage: {
      title: "Accounts",
      subtitle: "Income & expense vouchers with financial reports",
      tabOverview: "Overview",
      tabHeads: "Heads",
      tabVouchers: "Vouchers",
      tabReport: "Report",
      totalIncome: "Total Income",
      totalExpense: "Total Expense",
      balance: "Balance (Surplus / Deficit)",
      voucherCount: "Vouchers",
      incomeVsExpense: "Income vs Expense (Last 12 Months)",
      income: "Income",
      expense: "Expense",
      recentEntries: "Recent Entries",
      head: "Head",
      newHead: "New Head",
      editHead: "Edit Head",
      headName: "Head Name (English)",
      headNameBn: "Head Name (Bangla)",
      headExists: "A head with this name already exists",
      headInUse: "This head has voucher entries and cannot be deleted",
      noHeads: "No account heads yet — create one to start recording vouchers",
      entriesCount: "entries",
      voucherNo: "Voucher No",
      party: "Party (Received From / Paid To)",
      createdBy: "Created By",
      newVoucher: "New Voucher",
      selectHead: "Select head",
      voucherCreated: "Voucher recorded",
      voucherDeleted: "Voucher deleted",
      deleteVoucherConfirm: "Delete this voucher? This cannot be undone.",
      noVouchers: "No vouchers found for the selected filters",
      allHeads: "All Heads",
      fromDate: "From Date",
      toDate: "To Date",
      apply: "Apply",
      reset: "Reset",
      reportTitle: "Income & Expense Statement",
      reportPeriod: "Period",
      incomeDistribution: "Income Distribution",
      expenseDistribution: "Expense Distribution",
      incomeStatement: "Income Statement",
      expenseStatement: "Expense Statement",
      surplus: "Surplus / (Deficit)",
      monthlyBreakdown: "Monthly Breakdown",
      print: "Print",
      exportCsv: "Export CSV",
      exportVouchers: "Export Vouchers",
      grandTotal: "Grand Total",
      noReportData: "No entries recorded in this period",
      generatedOn: "Generated On",
      statementOf: "Statement of Income & Expense",
    },

    resultsPage: {
      title: "Exam Results",
      subtitle: "Result system specific to your institution type — primary education grading is live",
      systemFor: "Result System",
      operational: "Operational",
      operationalFor: "Live for your institution type",
      setupOnly: "Setup Only",
      setupOnlyNote:
        "Result systems for these institution types are configured for a future release. Primary education results are fully operational today.",
      currentType: "Your institution type",
      selectExam: "Select an exam to view its result sheet",
      resultSheet: "Result Sheet",
      gradeScale: "Grading Scale (Primary)",
      fullMarks: "Full",
      obtained: "Obtained",
      grade: "Grade",
      total: "Total",
      percent: "%",
      position: "Position",
      result: "Result",
      passed: "Passed",
      failed: "Failed",
      failedSubjects: "Failed Subjects",
      incomplete: "Incomplete",
      publish: "Publish Result",
      unpublish: "Unpublish Result",
      publishConfirm: "Publish this result? Marks entry will be locked until unpublished.",
      unpublishConfirm: "Unpublish this result? Marks entry will be unlocked again.",
      published: "Result published — marks entry locked",
      unpublished: "Result unpublished — marks entry unlocked",
      noExams: "No exams found — create an exam in the Exams module first",
      marksEntered: "marks entered",
      subjectsCount: "subjects",
      print: "Print",
      missing: "Not graded",
      studentsCount: "students",
      formatLabel: "Result Format",
      formats: { SINGLE: "Single Format", PERIODICAL: "Periodical Format", FINAL: "Combined (All Exams)", COMBINED: "Final Result (3 Sets)", HIGHSCHOOL: "High School Result" },
      formatHint: {
        SINGLE: "Result of one selected exam — summary with merit list",
        PERIODICAL: "Average across the class's periodical exams — summary with merit list",
        FINAL: "Combined result across all exams of the class — summary with merit list",
        COMBINED: "Weighted final result from three exam sets (Tutorial + Semester each) with your own marks ratios and pass-in ratio",
        HIGHSCHOOL: "High school marksheet — CQ / MCQ / Applied parts, paired paper grades and GPA",
      },
      formulaBadge: "Result Formula",
      formulaTitle: "How this result is calculated",
      formulaSingle: [
        "Subject marks = sum of its papers (CQ + MCQ + Applied parts); subject full marks = sum of the papers' full marks.",
        "Pass in a subject: obtained marks ≥ 33% of the subject's full marks.",
        "Letter grade & grade point come from the percentage per the national 7-tier scale (A+ ≥ 80% … F < 33%).",
        "Total = sum of subject marks; the overall grade follows the total percentage.",
        "Result: FAILED if any subject is failed, INCOMPLETE if any marks are missing — otherwise PASSED.",
        "Merit position: students with complete marks are ranked 1, 2, 3… by total marks (highest first); the Highest column shows the class-best per subject.",
      ],
      formulaPeriodical: [
        "All periodical exams of the class appear side by side; a subject's combined marks = SUM of its exam columns.",
        "Subject full marks = sum of every paper's full marks across those exams; pass requires ≥ 33%.",
        "Grades, overall result and merit ranking follow the same rules as the Single format.",
      ],
      formulaFinal: [
        "The exams you pick appear side by side; a subject's combined marks = SUM of the picked exam columns.",
        "Pass requires ≥ 33% of the subject's combined full marks; grades follow the 7-tier scale.",
        "Merit position ranks complete students by the combined total, exactly like the Single format.",
      ],
      formulaCombined: [
        "Each set's marks = that set's Tutorial + Semester paper marks.",
        "Weighted subject total = Σ (set marks × set weight ÷ 100); weighted full = Σ (paper full × set weight ÷ 100).",
        "A subject passes when its weighted total ≥ the pass-in ratio × its weighted full (weight & pass-in ratio are set in the query form above).",
        "Grand total = sum of the weighted subject totals; FAILED if any subject fails, INCOMPLETE until every subject has marks.",
        "Merit position: complete students ranked by the weighted grand total.",
      ],
      formulaHighSchool: [
        "Papers combine into units — a subject's 1st and 2nd paper pair becomes one unit automatically.",
        "Paired-paper pass (Bangladesh rule, default): the pair passes on its COMBINED marks — sum of both papers ≥ 33% of the combined full marks (e.g. English 1st 30 + 2nd 36 = 66 out of 200 → PASS). Switch the toggle to 'Each paper separately' to require 33% in every paper instead.",
        "Each unit earns a grade point from its percentage per the 7-tier scale.",
        "GPA = average of the required units' points; the optional subject adds only its points above 2.00 (GPA capped at 5.00).",
        "A single failed unit makes the footer grade F; otherwise the letter grade follows (GPA ÷ 5) × 100.",
        "Merit position: students passing every subject rank first — by highest total marks, then highest GPA, then highest attendance; students with failures follow — fewest failed subjects first, then the same marks → GPA → attendance order.",
      ],
      hsPassCombined: "Combined Marks (BD)",
      hsPassEach: "Each Paper",
      hsPassCombinedHint: "Bangladesh rule — a 1st+2nd paper pair passes on the combined marks: sum ≥ 33% of the combined full (e.g. 66/200)",
      hsPassEachHint: "Every paper must reach 33% of its own full marks on its own",
      hsTypeLabel: "Sheet Type",
      hsWithOptional: "With Optional Subject",
      hsCombineLabel: "Combine subjects (shared Grade Point / Letter Grade)",
      hsCombineHint: "Pick two or more subjects to merge into one graded cell — 1st/2nd papers pair automatically.",
      hsWithoutOptional: "Without Optional Subject",
      gradePointCol: "Grade Point",
      letterGradeCol: "Letter Grade",
      optionalGroupLabel: "Optional Subject",
      optNote: "GPA logic: only the optional subject's points above 2.00 count — {subject}: {gp} − 2.00 = {excess} added to the GPA",
      optNoteExcluded: "{subject} shown for information — its (GP − 2) bonus is not applied in this sheet",
      gpaLabel: "GPA",
      showParts: "Show CQ / MCQ / Applied",
      partsOff: "Totals only",
      cq: "CQ",
      mcq: "MCQ",
      applied: "Applied",
      selectClass: "Select class",
      aggregatedFrom: "Aggregated from",
      examsWord: "exams",
      noPeriodicalForClass: "No periodical exams found for this class",
      noExamsForClass: "No exams found for this class",
      meritList: "Merit List",
      meritPos: "Merit",
      pickExams: "Combine exams",
      pickExamsHint: "pick from the dropdown — leave empty for all",
      addExam: "+ Add exam…",
      clearAll: "Clear all",
      combining: "Combining",
      activities: "Activities",
      signGuardian: "Guardian's Signature",
      signTeacher: "Teacher's Signature",
      signPrincipal: "Principal's Signature",
      issueDate: "Date of Issue",
      examLabel: "Exam",
      sheetTitle: "ফলাফল বিবরণী",
      resultSheetTitle: "Result Sheet",
      finalQueryTitle: "Final Result Query",
      finalQueryHint: "Pick three exam sets (Tutorial + Semester each), set each set's ratio of the total marks and the pass-in ratio — then load the student list",
      instituteLabel: "Institute",
      passInPct: "Pass In (%)",
      tutorialLabel: "Tutorial",
      semesterLabel: "Semester",
      setLabel1: "1st Exam Set",
      setLabel2: "2nd Exam Set",
      setLabel3: "Annual Exam Set",
      setFull1: "First Term Examination",
      setFull2: "Second Term Examination",
      setFull3: "Third Term Examination",
      setShort1: "1st",
      setShort2: "2nd",
      setShort3: "Annual",
      ratioLabel: "Ratio (%)",
      studentListBtn: "View Result",
      hsIncrelogPattern: "Increlog Pattern",
      hsBoardPattern: "Board Pattern",
      hsIncrelogPatternHint: "The existing Increlog marksheet layout",
      hsBoardPatternHint: "Board-style academic transcript — paper pairs shown as single subjects",
      weightsSumHint: "The three ratios usually add up to 100%",
      examNone: "— None —",
      finalEmpty: "Select a class and at least one exam, then press View Result",
      finalBlock: "Final Result",
      totalMarksCol: "Total Marks",
      fatherLabel: "Father",
      motherLabel: "Mother",
      sessionLabel: "Session",
      periodicalExam: "Periodical Exam",
      marksCol: "Marks",
      highestCol: "Highest",
      statusCol: "Status",
      academicDay: "Academic Day",
      present: "Present",
      absent: "Absent",
      progress: "Progress",
      inProcess: "In Process",
      good: "Good",
      better: "Better",
      needImprovement: "Need Improvement",
      bad: "Bad",
      authorization: "Authorization",
      gradeScaleTitle: "Grading Scale",
      gradeCol: "Grade",
      gradeMarksCol: "Marks (%)",
      scanToVerify: "Scan to verify",
      developedBy: "Developed by Increlog Unified Solutions",
      verifyTitle: "Result Verification",
      verifySubtitle: "Scanning the QR code on a result sheet? Here is the confirmation.",
      verifyValid: "Valid Result Copy",
      verifyInvalid: "Invalid Copy",
      verifyInvalidNote: "This QR code is not authentic — the result copy may have been altered. Please contact the institution.",
      verifyInstitution: "Institution",
      verifyDocument: "Document",
      verifyIssued: "Issued On",
      colorsLabel: "Color theme",
      primaryLabel: "Primary color",
      accentLabel: "Accent color",
      fieldsLabel: "Show in header / sheet",
      fieldNames: {
        photo: "Photo", father: "Father", mother: "Mother", roll: "Roll",
        className: "Class", section: "Section", shift: "Shift", session: "Session",
        attendance: "Attendance", progress: "Progress",
      },
    },

    examsPage: {
      title: "Exams",
      subtitle: "Manage exams per class & shift and build the exam schedule",
      tabExams: "Exams",
      tabSchedule: "Schedule",
      examName: "Exam Name (English)",
      examNameBn: "Exam Name (Bangla)",
      classLabel: "Class",
      shiftLabel: "Shift",
      startDate: "Start Date",
      endDate: "End Date",
      papers: "Papers",
      newExam: "New Exam",
      editExam: "Edit Exam",
      selectExam: "Select exam",
      noExams: "No exams created yet",
      noPapers: "No papers scheduled for this exam yet",
      addPaper: "Add Paper",
      subject: "Subject",
      date: "Date",
      startTime: "Start Time",
      endTime: "End Time",
      room: "Room",
      fullMarks: "Full Marks",
      examCreated: "Exam created",
      examUpdated: "Exam updated",
      examDeleted: "Exam deleted",
      paperAdded: "Paper added to the schedule",
      paperDeleted: "Paper removed",
      roomClash: "This room is already booked at an overlapping time on that date",
      subjectExists: "This subject already has a paper in this exam",
      deleteExamConfirm: "Delete this exam? All of its scheduled papers will be removed too.",
      deletePaperConfirm: "Remove this paper from the schedule?",
      endBeforeStart: "End must be after the start",
      filterClass: "Class",
      allClasses: "All Classes",
      filterShift: "Shift",
      allShifts: "All Shifts",
      scheduleOf: "Schedule of",
      branchLabel: "Branch (Institution)",
      mainBranch: "Main",
      sectionLabel: "Section",
      groupLabel: "Group",
      departmentLabel: "Department",
      totalMarks: "Total Marks",
      outOfMarks: "Out of Marks",
      cqMarks: "CQ Marks",
      outOfCqMarks: "Out of CQ Marks",
      mcqMarks: "MCQ Marks",
      outOfMcqMarks: "Out of MCQ Marks",
      appliedMarks: "Applied Marks",
      outOfAppliedMarks: "Out of Applied Marks",
      appliedExamDate: "Applied Exam Date",
      appliedShort: "Applied",
      marksColumn: "Marks",
      marksSection: "Marks Distribution",
      marksHint: "\"Out of\" fields mean the minimum passing marks",
      passExceedsMarks: "Passing marks cannot be greater than the full marks",
      publishSchedule: "Publish Schedule",
      publishedBadge: "Published",
      allowEdit: "Allow Edit",
      publishConfirm: "Publish this exam schedule? Papers will be locked for editing until an admin allows edit again.",
      allowEditConfirm: "Allow editing again? The schedule will become unpublished (draft).",
      schedulePublishedMsg: "Exam schedule published",
      allowEditDone: "Schedule unlocked for editing",
      scheduleLocked: "This schedule is published — an admin must allow edit first",
      editPaper: "Edit Paper",
      paperUpdated: "Paper updated",
      detailsReport: "Details Report",
      summaryReport: "Summary Report",
      preparedBy: "Prepared By",
      approvedBy: "Approved By (Head of Institution)",
      showQr: "Verification QR",
      showQrHint: "Show/Hide the verification QR code on the printed report",
      reportTitle: "Exam Schedule Report",
      generatedOn: "Generated On",
      fullPass: "Full / Pass",
      totalPapers: "Total Papers",
      publishedOn: "Published On",
      marksInput: "Marks Input",
      subjectWise: "Subject Wise",
      studentWise: "Student Wise",
      selectSubject: "Select Subject",
      selectStudent: "Select Student",
      studentLabel: "Student",
      rollLabel: "Roll",
      saveMarks: "Save Marks",
      marksSaved: "Marks saved",
      marksExceedError: "Marks cannot exceed the paper's full marks",
      noStudents: "No students match this exam (class / section / group)",
      enteredCount: "Entered",
      notGradedHint: "empty = not graded",
      resultPublishedBadge: "Result Published",
      publishResult: "Publish Result",
      unpublishResult: "Unpublish Result",
      resultPublishTitle: "Publish Result?",
      resultPublishText: "Once the result is published, marks cannot be entered or edited until it is unpublished. Publish now?",
      resultUnpublishTitle: "Unpublish Result?",
      resultUnpublishText: "Marks input will be enabled again. Continue?",
      resultPublishedMsg: "Result published — marks input is locked",
      resultUnpublishedMsg: "Result unpublished — marks input is enabled",
      marksLockedTitle: "Marks Input Locked",
      marksLockedText: "The result of this exam is published, so marks cannot be entered or edited. Unpublish the result to make changes.",
    },

    messagesPage: {
      title: "Conversations",
      subtitle: "Two-way message threads with guardians and admission applicants",
      threads: "Conversations",
      selectThread: "Select a conversation to start messaging",
      applicant: "Applicant",
      studentLabel: "Student",
      typePlaceholder: "Write a message…",
      send: "Send",
      noThreads: "No conversations yet",
      messageSent: "Message sent",
      you: "Institution",
      searchPlaceholder: "Search conversations…",
      newChat: "New chat",
      pickPerson: "Choose someone to message",
      peopleEmpty: "Everyone already has a conversation",
      today: "Today",
      yesterday: "Yesterday",
      messagesCount: "messages",
      enterHint: "Enter to send · Shift+Enter for a new line",
    },

    omrPage: {
      title: "OMR Sheet Management",
      subtitle: "Answer keys, scanned response import with auto MCQ scoring, and pushing marks into the exam",
      pickExam: "Select an exam to manage its OMR sheets",
      pickExamHint: "One answer key per paper and question set — then import the scanned responses",
      noPapers: "This exam has no scheduled papers yet",
      mcqFull: "MCQ Full",
      keyCol: "Answer Key",
      responsesCol: "Responses",
      addKey: "Set Key",
      editKey: "Edit Answer Key",
      setCol: "Set",
      questionsCol: "Questions",
      markEachCol: "Mark / Question",
      negativeCol: "Negative Mark",
      keyLenHint: "characters — must equal the question count",
      keysTitle: "Answer Keys",
      noKeys: "No answer key set for this paper",
      noKeysHint: "Add a key first — responses are scored against it",
      keySaved: "Answer key saved",
      keyDeleted: "Answer key removed",
      keyDeleteConfirm: "Remove this answer key and all its imported responses?",
      errKeyLength: "The key length must equal the question count",
      errInvalidSetup: "Invalid key setup — check the values",
      responsesTitle: "Scanned Responses",
      noResponses: "No responses imported yet",
      noResponsesHint: "Import the scanner output (roll, set, responses) below",
      importBtn: "Import",
      importTitle: "Import Scanned Responses",
      importHint: "Paste the OMR scanner output — one line per sheet: roll, set, responses (A–D, - for blank). Set can be omitted when the paper has a single key.",
      savedCol: "Saved",
      correctCol: "Correct",
      wrongCol: "Wrong",
      blankCol: "Blank",
      marksCol: "MCQ Marks",
      stMatched: "Matched",
      stUnmatched: "Unknown roll",
      stInvalid: "Invalid",
      pushBtn: "Push to Marks",
      pushConfirm: "Write the computed MCQ marks into this paper's exam marks (matched students)?",
      pushDone: "{n} students' MCQ marks saved to the exam",
      errPublished: "This exam's result is published — marks are locked",
      errNothing: "Nothing matched to push — import responses first",
      errNoRows: "Nothing to import — paste rows first",
      manage: "Manage",
      scanBtn: "Scan Sheets",
      scanTitle: "Scan OMR Sheets",
      scanHint: "Photograph the filled printed sheets (all 4 corner squares visible) — the QR identifies the student and set, then the bubbles are read automatically.",
      scanPick: "Camera / Photos",
      scanSampleBtn: "Try a sample sheet",
      scanSample: "Sample sheet scanned",
      scanMatchNote: "match with the filled answers",
      scanWorking: "Reading sheets…",
      scanNoQr: "QR not readable — make sure the sheet is flat and all corners are in the photo",
      scanFailed: "could not be read",
      scanQuality: "Quality",
      printBtn: "Print Sheets",
      printTitle: "Print OMR Sheets",
      printRegenerate: "Regenerate",
      printHint: "One sheet per student of this paper's class, with the QR, corner marks and the bubble grid. The first image is a pre-filled sample preview.",
      stepKey: "Set the answer key (per set)",
      stepImport: "Import scanned responses",
      stepReview: "Review computed marks",
      stepPush: "Push into exam marks",
    },

    hrPage: {
      title: "Human Resource",
      subtitle: "Staff directory, attendance, leave and payroll of your institution",
      tabStaff: "Staff",
      tabAttendance: "Attendance",
      tabLeave: "Leave",
      tabSalary: "Salary",
      totalStaff: "Total Staff",
      presentToday: "Present Today",
      onLeaveToday: "On Leave Today",
      monthlyPayroll: "Monthly Payroll",
      newStaff: "New Staff",
      editStaff: "Edit Staff",
      employeeCode: "Employee Code",
      joinDate: "Join Date",
      monthlySalary: "Monthly Salary (BDT)",
      phoneLabel: "Phone",
      staffCreated: "Staff member added",
      staffUpdated: "Staff member updated",
      codeExists: "An employee with this code already exists",
      staffInUse:
        "This staff member has attendance, leave or salary records — set the status to inactive instead",
      noStaff: "No staff added yet",
      attendanceFor: "Attendance for",
      markAttendance: "Mark Attendance",
      attendanceSaved: "Attendance saved",
      noAttendanceYet: "No attendance marked for this date yet",
      newLeave: "Leave Request",
      fromDate: "From Date",
      toDate: "To Date",
      leaveDaysLabel: "days",
      leaveRequested: "Leave request submitted",
      leaveDecided: "Leave request updated",
      approveLeaveConfirm: "Approve this leave request?",
      rejectLeaveConfirm: "Reject this leave request?",
      invalidRange: "End date must be on or after the start date",
      noLeaves: "No leave requests",
      payrollFor: "Payroll for",
      paySalary: "Pay Salary",
      salaryPaid: "Salary paid",
      alreadyPaid: "Paid this month",
      payConfirm: "Record this salary payment?",
      noSalaries: "No salary payments recorded for this month",
      paidLabel: "Paid",
      dueLabel: "Due",
      salaryHistory: "Recent Payments",
      tabAudit: "Login Audit",
      auditEmpty: "No login activity recorded yet",
      auditIdentifier: "Login ID",
      auditSuccess: "Success",
      auditFailed: "Failed",
      signatureTitle: "Signature",
      signatureEmpty: "No signature uploaded",
      signatureHint: "PNG / JPG on a white background works best — auto-resized.",
      signatureSaved: "Signature updated",
      signatureRemoved: "Signature removed",
    },

    communicationPage: {
      title: "Communication Panel",
      subtitle: "Send SMS, Email and WhatsApp notifications to guardians and staff",
      composeTitle: "Compose Notification",
      channelsLabel: "Channels",
      audienceLabel: "Audience",
      selectClass: "Select Class",
      selectStudent: "Select Student",
      selectStaff: "Select Staff",
      subjectLabel: "Subject (for Email)",
      messageLabel: "Message",
      messagePlaceholder: "Write your notification…",
      templatesLabel: "Quick Templates",
      templateFeeReminder: "Fee Reminder",
      templateFeeReminderBody:
        "Dear Guardian, the monthly tuition fee is due on the 10th. Please pay via bKash or at the office.",
      templateHoliday: "Holiday Notice",
      templateHolidayBody:
        "Dear Guardian, the institution will remain closed tomorrow due to a government holiday. Classes resume the following day.",
      templateExam: "Exam Notice",
      templateExamBody:
        "Dear Guardian, the half-yearly examination starts from Sunday. Please ensure your child's preparation.",
      templateMeeting: "Parent Meeting",
      templateMeetingBody:
        "Dear Guardian, a parents-teacher meeting will be held on Friday at 10 AM. Your presence is requested.",
      recipientsCount: "recipients will receive this",
      sendNotification: "Send",
      sendingLabel: "Sending…",
      noChannel: "Select at least one channel",
      noRecipients: "No recipients match this audience",
      sentSuccessfully: "Notification sent",
      totalSent: "Notifications Sent",
      smsSent: "SMS",
      emailSent: "Emails",
      whatsappSent: "WhatsApp",
      historyTitle: "Send History",
      noBroadcasts: "No notifications sent yet",
      recipientsTitle: "Recipients",
      simulatedNote:
        "Demo mode — every send is logged per recipient without calling a real gateway",
      tabCompose: "Compose & History",
      tabPurchase: "SMS Purchase",
      tabIntegration: "Integrations",
      smsBalance: "SMS Balance",
      balanceNote: "Each SMS recipient consumes 1 from the balance",
      buyNow: "Buy Now",
      purchaseConfirm: "Purchase this SMS package?",
      purchaseSuccess: "SMS package purchased — balance updated",
      purchaseHistory: "Purchase History",
      noPurchases: "No purchases yet",
      smsIntegration: "SMS Gateway Integration",
      emailIntegration: "Email (SMTP) Integration",
      waIntegration: "WhatsApp Integration",
      apiUrl: "API URL / Host",
      apiKey: "API Key",
      senderId: "Sender ID",
      smsTypeLabel: "SMS Type",
      masking: "Masking",
      nonMasking: "Non-Masking",
      smtpHostLabel: "SMTP Host",
      smtpPortLabel: "Port",
      smtpUserLabel: "Username",
      smtpPassLabel: "Password",
      smtpFromNameLabel: "From Name",
      smtpFromEmailLabel: "From Email",
      smtpSecureLabel: "Use TLS / SSL",
      waPhoneLabel: "Phone Number ID",
      integrationSaved: "Integration settings saved",
      integrationNote:
        "Credentials are stored for your institution. Sending stays simulated until a real gateway is connected.",
      secretKeepNote: "Leave key/password unchanged to keep the saved value",
      smsLowBalance: "Not enough SMS balance — purchase a package first",
    },

    libraryPage: {
      title: "Library",
      subtitle: "Book catalog, issue/return tracking and overdue fines",
      totalTitles: "Book Titles",
      totalCopiesLabel: "Total Copies",
      availableNow: "Available Now",
      issuedNow: "Currently Issued",
      overdueNow: "Overdue",
      finesCollected: "Fines Collected",
      tabBooks: "Books",
      tabIssue: "Issue Book",
      tabHistory: "Issue History",
      newBook: "New Book",
      editBook: "Edit Book",
      bookTitle: "Title (English)",
      bookTitleBn: "Title (Bangla)",
      author: "Author",
      publisher: "Publisher",
      isbn: "ISBN",
      shelf: "Shelf",
      copies: "Total Copies",
      price: "Price (BDT)",
      bookCreated: "Book added",
      bookUpdated: "Book updated",
      bookInUse: "This book has issue records and cannot be deleted",
      availableCount: "available",
      issueBookTitle: "Issue a Book",
      memberType: "Member",
      selectBook: "Select Book",
      selectMember: "Select Member",
      issueDate: "Issue Date",
      dueDateLabel: "Due Date",
      loanDays: "loan days",
      issueCreated: "Book issued",
      noCopiesAvailable: "No copies of this book are available",
      returnBook: "Return",
      returnConfirm: "Return this book? Overdue fine is calculated automatically.",
      fineLabel: "Fine",
      activeIssues: "Active",
      returnedIssues: "Returned",
      allIssues: "All",
      noIssues: "No issue records yet",
      noBooks: "No books in the catalog yet",
      fineRateNote: "Overdue fine: ৳10 per day",
      allCategories: "All categories",
      allMemberTypes: "All member types",
      availAll: "All copies",
      availAvailable: "Available",
      availOut: "Out of stock",
    },

    inventoryPage: {
      title: "Inventory",
      subtitle: "Institution assets, stock movement and low-stock alerts",
      totalItems: "Inventory Items",
      stockValue: "Stock Value",
      lowStockLabel: "Low Stock",
      movementsThisMonth: "Movements (This Month)",
      printReport: "Inventory Report",
      tabItems: "Items",
      tabStock: "Stock In / Out",
      tabHistory: "Movement History",
      newItem: "New Item",
      editItem: "Edit Item",
      itemNameLabel: "Name (English)",
      itemNameBn: "Name (Bangla)",
      initialQty: "Initial Quantity",
      minQty: "Low-stock Level",
      locationLabel: "Location",
      itemCreated: "Item created",
      itemUpdated: "Item updated",
      itemInUse:
        "This item has stock movements and cannot be deleted — deactivate it instead",
      lowBadge: "LOW",
      noItems: "No inventory items yet",
      stockIn: "Stock In",
      stockOut: "Stock Out",
      movementQty: "Quantity",
      partyLabel: "Issued To / Source",
      movementRecorded: "Stock movement recorded",
      insufficientStock: "Not enough stock available",
      qtyInvalid: "Quantity must be greater than zero",
      noMovements: "No stock movements yet",
      deactivate: "Deactivate",
      activate: "Activate",
      onHand: "On Hand",
    },

    transportPage: {
      title: "Transport",
      subtitle: "Vehicles, routes with stops, student members and monthly fares",
      tabVehicles: "Vehicles",
      tabRoutes: "Routes & Stops",
      tabMembers: "Members",
      tabCollections: "Collections",
      totalVehicles: "Vehicles",
      activeRoutes: "Active Routes",
      membersLabel: "Students on Transport",
      monthlyExpected: "Monthly Expected",
      monthCollected: "Collected This Month",
      monthDueLabel: "Due This Month",
      newVehicle: "New Vehicle",
      editVehicle: "Edit Vehicle",
      vehicleName: "Vehicle Name",
      registrationNo: "Registration No.",
      vehicleType: "Type",
      capacity: "Capacity (seats)",
      driverName: "Driver Name",
      driverPhone: "Driver Phone",
      vehicleCreated: "Vehicle added",
      vehicleUpdated: "Vehicle updated",
      vehicleInUse: "This vehicle is assigned to a route and cannot be deleted",
      noVehicles: "No vehicles added yet",
      routesAssigned: "routes",
      newRoute: "New Route",
      editRoute: "Edit Route",
      routeName: "Route Name (English)",
      routeNameBn: "Route Name (Bangla)",
      assignVehicle: "Assign Vehicle",
      baseFare: "Base Monthly Fare (BDT)",
      stopsLabel: "Stops & Extra Fare",
      addStop: "Add Stop",
      stopName: "Stop name",
      extraFare: "Extra fare",
      routeCreated: "Route created",
      routeUpdated: "Route updated",
      routeInUse: "Students are assigned to this route and cannot be deleted",
      noRoutes: "No routes created yet",
      noStops: "No stops on this route",
      memberCountLabel: "members",
      assignMember: "Assign Student",
      selectStudentLabel: "Student",
      selectRouteLabel: "Route",
      selectStop: "Stop (optional)",
      monthlyFareLabel: "Monthly Fare (BDT)",
      memberAssigned: "Student assigned to transport",
      memberUpdated: "Member updated",
      alreadyMember: "This student is already assigned to transport",
      noMembers: "No students assigned yet",
      collectFare: "Collect Fare",
      fareFor: "Fares for",
      fareCollected: "Fare collected",
      alreadyPaidFare: "Paid this month",
      collectConfirm: "Record this fare collection?",
      noMembersForFare: "No active transport members",
      expectedTotal: "Expected",
      stopFareNote: "Member fare = route base + stop extra",
      allVehicleTypes: "All types",
      allStatuses: "All statuses",
      allRoutes: "All routes",
      allPayments: "All payments",
      trxId: "Transaction / Reference ID",
      trxHint: "Enter the TrxID (bKash/Nagad/Rocket), card reference or bank slip number — digital collections are tracked with it.",
      trxRequired: "Transaction / Reference ID is required for digital payments",
    },

    hostelPage: {
      title: "Hostel",
      subtitle: "Hostels, rooms, resident allocation and daily attendance",
      tabHostels: "Hostels",
      tabRooms: "Rooms",
      tabResidents: "Residents",
      tabAttendance: "Attendance",
      totalHostels: "Hostels",
      totalRooms: "Rooms",
      capacity: "Total Beds",
      residents: "Residents",
      vacantBeds: "Vacant Beds",
      monthlyExpected: "Monthly Expected",
      feeNote: "Resident fee = room fee if set, else hostel fee",
      newHostel: "New Hostel",
      editHostel: "Edit Hostel",
      hostelName: "Hostel Name",
      hostelNameBn: "Hostel Name (Bangla)",
      hostelType: "Type",
      warden: "Warden Name",
      wardenPhone: "Warden Phone",
      defaultFee: "Default Monthly Fee (BDT)",
      hostelCreated: "Hostel added",
      hostelUpdated: "Hostel updated",
      hostelInUse: "Students are allocated to this hostel and cannot be deleted",
      noHostels: "No hostels added yet",
      roomsColumn: "Rooms / Residents",
      residentsShort: "residents",
      newRoom: "New Room",
      editRoom: "Edit Room",
      roomNo: "Room No",
      floor: "Floor",
      beds: "Beds",
      roomType: "Room Type",
      roomFee: "Room Fee / Month (BDT)",
      occupancy: "Occupancy",
      free: "free",
      roomCreated: "Room added",
      roomUpdated: "Room updated",
      duplicateRoom: "A room with this number already exists in the hostel",
      capacityBelowOccupancy: "Capacity cannot be lower than current occupancy",
      roomInUse: "This room has allocations and cannot be deleted",
      noRooms: "No rooms added yet",
      allHostels: "All hostels",
      createHostelFirst: "Create a hostel first to add rooms",
      assignTitle: "Allocate Student",
      selectStudentLabel: "Student",
      selectHostelLabel: "Hostel",
      selectRoomLabel: "Room (optional)",
      noRoomPreference: "No room preference",
      bedNoLabel: "Bed No (optional)",
      monthlyFeeLabel: "Monthly Fee (BDT)",
      memberAssigned: "Student allocated to hostel",
      memberUpdated: "Resident updated",
      alreadyMember: "This student is already living in a hostel",
      roomFull: "This room has no free beds",
      vacateConfirm: "Vacate this student from the hostel?",
      memberRemoved: "Student vacated from hostel",
      noMembers: "No students allocated yet",
      changeRoomTitle: "Change Hostel / Room",
      clearRoomOption: "No room (to be assigned)",
      attendanceFor: "Attendance for",
      saveAttendance: "Save Attendance",
      attendanceSaved: "Attendance saved",
      allTypes: "All types",
      allRoomTypes: "All room types",
      allStatuses: "All statuses",
    },
    promotionsPage: {
      title: "Promotions",
      subtitle: "Promote students between classes, sections, shifts and groups — with full history",
      tabPromote: "Promote",
      tabHistory: "History",
      promoteTitle: "Promote Students",
      promoteType: "Promotion Type",
      promoteTo: "Promote To",
      selectionNote: "Tick students on the right, then promote. A history record is kept for every student.",
      selectAll: "Select all",
      willPromote: "Will change",
      noChange: "No change",
      promotedCount: "Students promoted",
      alreadySet: "Selected students already have this value",
      promoteBtn: "Promote",
      fromTo: "From → To",
      by: "by",
      searchHistory: "Search student / class…",
      noHistory: "No promotion records yet",
      totalPromotions: "Total Promotions",
      classPromotions: "Class Promotions",
      sectionPromotions: "Section Promotions",
      otherPromotions: "Shift / Group",
    },

    lessonPlanPage: {
      title: "Lesson Plans",
      subtitle: "Chapter plans with teachers, weekly breakdown and teaching progress",
      newPlan: "New Lesson Plan",
      editPlan: "Edit Lesson Plan",
      chapter: "Chapter / Unit",
      chapterPlaceholder: "e.g. Chapter 3: Photosynthesis",
      topics: "Topics",
      startLabel: "Start Date",
      endLabel: "End Date",
      totalPeriods: "Total Periods",
      completedPeriods: "Completed Periods",
      periods: "periods",
      periodsTaught: "Periods Taught",
      progress: "Progress",
      updateProgress: "Update progress",
      progressSaved: "Progress updated",
      weeklyBreakdown: "Weekly Breakdown",
      addWeek: "Add Week",
      weekTopic: "Week topic",
      homework: "Homework",
      weekDone: "Done",
      weeksDone: "weeks done",
      totalPlans: "Total Plans",
      noPlans: "No lesson plans created yet",
      planCreated: "Lesson plan created",
      planUpdated: "Lesson plan updated",
    },

    noticesPage: {
      title: "Notice Board",
      subtitle: "Publish notices for students and staff with pinning and expiry",
      newNotice: "New Notice",
      editNotice: "Edit Notice",
      noticeTitle: "Title (English)",
      noticeTitleBn: "Title (Bangla)",
      noticeBody: "Notice Text",
      audienceLabel: "Audience",
      publishDate: "Publish Date",
      expiryDate: "Expiry Date",
      pinNotice: "Pin to top of the board",
      totalNotices: "Total Notices",
      activeNotices: "Active",
      pinnedNotices: "Pinned",
      expiredNotices: "Expired",
      noNotices: "No notices published yet",
      noticeCreated: "Notice published",
      noticeUpdated: "Notice updated",
      published: "Published",
      expires: "expires",
      expiredBadge: "expired",
    },

    complaintsPage: {
      title: "Complaint Box",
      subtitle: "Receive, track and resolve complaints from students, parents and staff",
      tabList: "Complaints",
      tabFile: "File a Complaint",
      totalLabel: "Total Complaints",
      complainant: "Complainant",
      subjectLabel: "Subject",
      descriptionLabel: "Description",
      complainantType: "Complainant Type",
      complainantName: "Complainant Name",
      linkedStudent: "Student (optional)",
      submitComplaint: "Submit Complaint",
      complaintFiled: "Complaint submitted",
      complaintUpdated: "Complaint updated",
      respondTitle: "Review Complaint",
      responseNote: "Response / Resolution Note",
      noComplaints: "No complaints yet",
    },

    supportPage: {
      title: "Support",
      subtitle: "Raise issues with the central team, attach files and track your tickets",
      newTicket: "New Ticket",
      subjectLabel: "Subject",
      messageLabel: "Describe the issue",
      attachmentsLabel: "Attachments",
      addFiles: "Add files",
      attachHint: "Images or documents up to 2 MB each (max 5)",
      fileTooLarge: "Each file must be 2 MB or smaller",
      tooManyFiles: "A maximum of 5 attachments is allowed",
      ticketCreated: "Ticket submitted to the support team",
      noTickets: "No support tickets yet",
      replies: "Replies",
      lastUpdate: "Last Update",
      conversation: "Conversation",
      reportedOn: "Reported on",
      replyLabel: "Write a reply",
      sendReply: "Send Reply",
      replySent: "Reply sent",
      closeTicket: "Close Ticket",
      closeConfirm: "Close this ticket? The conversation will be read-only afterwards.",
      ticketClosed: "Ticket closed",
      ticketClosedError: "This ticket is closed",
      solution: "Solution",
      reopenHint: "Replying to a resolved ticket reopens it",
      supportTeam: "Support Team",
      you: "You",
      allStatuses: "All Statuses",
    },

    certificatesPage: {
      title: "Certificates",
      subtitle: "Printable student documents — profile, admit card, exam seat plan and ID card",
      tabProfile: "Student Profile",
      tabAdmit: "Admit Card",
      tabSeat: "Exam Seat Plan",
      seatPatternList: "Room List",
      seatPatternCard: "Seat Card",
      seatLayoutGrid: "4 / Page",
      seatLayoutSingle: "1 / Page",
      seatLayoutGridHint: "Four seat cards per printed page",
      seatLayoutSingleHint: "One seat card per printed page",
      tabTestimonial: "Testimonial",
      tabTranscript: "Academic Transcript",
      tabId: "ID Card",
      studentTestimonial: "Student Testimonial",
      academicTranscript: "Academic Transcript",
      refLabel: "Ref No",
      dateOfIssue: "Date of Issue",
      classTeacher: "Class Teacher",
      headOfInstitution: "Head of Institution",
      tBody1Son: "This is to certify that {name}, son of {guardian}, Roll {roll}, has been a bona fide student of this institution since {since}.",
      tBody1Daughter: "This is to certify that {name}, daughter of {guardian}, Roll {roll}, has been a bona fide student of this institution since {since}.",
      tBody2: "During the whole period of study at this institution, {name} maintained good conduct, discipline and excellent moral character.",
      tBody3: "This testimonial is issued at the student's request for official use.",
      fullMarksLabel: "Full Marks",
      passMarksLabel: "Pass Marks",
      obtainedLabel: "Obtained",
      gradeLabel: "Grade",
      totalLabel: "Total",
      noResultsLabel: "No exam results recorded for this student yet",
      selectStudent: "Select Student",
      selectExam: "Select Exam",
      variantMinimal: "Minimal",
      variantDetailed: "Detailed",
      print: "Print",
      studentProfile: "Student Profile",
      admitCard: "Admit Card",
      seatPlan: "Exam Seat Plan",
      studentIdCard: "Student ID Card",
      noStudents: "No students found",
      dateLabel: "Date",
      timeLabel: "Time",
      roomLabel: "Room",
      subjectLabel: "Subject",
      marksLabel: "Marks (Full / Pass)",
      studentsLabel: "Students",
      roomsLabel: "Rooms",
      seatNo: "Seat",
      signature: "Signature",
      instructions: "Instructions",
      ins1: "Reach the exam hall 30 minutes before the exam starts.",
      ins2: "Bring this admit card and show it when asked.",
      ins3: "Mobile phones or electronic devices are not allowed.",
      designLabel: "Card Design",
      designClassic: "Classic",
      designModern: "Modern",
      designSide: "Side Rail",
      designFrame: "Elegant Frame",
      fieldsLabel: "Show on Card",
      previewLabel: "Preview",
      colorsLabel: "Color Theme",
      primaryLabel: "Primary",
      accentLabel: "Accent",
      allLabel: "All",
      selectedLabel: "{n} selected",
      selectStudents: "Select Students",
      selectExams: "Select Exams",
      fName: "Name",
      fRoll: "Roll",
      fPhoto: "Photo",
      verifyScan: "Scan to verify",
      fClass: "Class",
      fSection: "Section",
      fShift: "Shift",
      fGroup: "Group",
      fDob: "Date of Birth",
      fGender: "Gender",
      fGuardian: "Guardian",
      fPhone: "Guardian Phone",
      fAddress: "Address",
      fId: "Student ID",
      fCardNo: "ID No.",
      fRegistration: "Registration No.",
      fBlood: "Blood Group",
      fValidTill: "Valid Till",
      male: "Male",
      female: "Female",
    },

    eventsPage: {
      title: "Events",
      subtitle: "Academic, cultural and sports events calendar",
      newEvent: "New Event",
      editEvent: "Edit Event",
      eventTitle: "Event Title (English)",
      eventTitleBn: "Event Title (Bangla)",
      venue: "Venue",
      startDate: "Start Date",
      endDate: "End Date",
      description: "Description",
      totalEvents: "Total Events",
      upcomingEvents: "Upcoming",
      thisMonth: "This Month",
      pastEvents: "Past",
      tabUpcoming: "Upcoming",
      tabPast: "Past",
      noUpcoming: "No upcoming events",
      noPast: "No past events",
      eventCreated: "Event created",
      eventUpdated: "Event updated",
    },

    committeesPage: {
      title: "Committees",
      subtitle: "Form committees with staff and external members and their roles",
      newCommittee: "New Committee",
      editCommittee: "Edit Committee",
      committeeName: "Committee Name (English)",
      committeeNameBn: "Committee Name (Bangla)",
      formed: "Formed",
      totalCommittees: "Committees",
      totalMembers: "Total Members",
      membersShort: "members",
      noMembers: "No members yet",
      noCommittees: "No committees formed yet",
      addMember: "Add Member",
      memberSource: "Member Type",
      sourceStaff: "Staff Member",
      sourceExternal: "External Member",
      roleLabel: "Role",
      committeeCreated: "Committee created",
      committeeUpdated: "Committee updated",
      memberAdded: "Member added",
    },

    schedulePage: {
      title: "Class Routine",
      subtitle: "Schedule classes with teacher, room and weekly time slots",
      tabSchedules: "Schedules",
      tabRoutine: "Routine View",
      totalSchedules: "Schedules",
      activeSchedules: "Active",
      classesCovered: "Classes Covered",
      teachersInvolved: "Teachers",
      newSchedule: "New Schedule",
      editSchedule: "Edit Schedule",
      teacherLabel: "Teacher",
      sessionLabel: "Session",
      departmentLabel: "Department",
      subjectLabel: "Subject",
      roomNo: "Room No",
      noteLabel: "Note",
      startLabel: "Start Time",
      endLabel: "End Time",
      daysLabel: "Days",
      timeLabel: "Time",
      activeLabel: "Active",
      noSchedules: "No class schedules created yet",
      scheduleCreated: "Schedule created",
      scheduleUpdated: "Schedule updated",
      daysRequired: "Select at least one day",
      timeInvalid: "End time must be after the start time",
      conflictTeacher: "This teacher already has a class in one of these time slots",
      conflictRoom: "This room is already occupied in one of these time slots",
      conflictClass: "This class/section already has a class in one of these time slots",
      routineFor: "Routine for",
      selectClassView: "Select Class",
      noRoutine: "No routine found for this class",
      filterClass: "Filter by class",
      allClasses: "All classes",
      printRoutine: "Print",
      dayBasisReport: "Day-wise Routine",
      reportPreview: "Report Preview",
      routineReport: "Class Routine Report",
      generatedOn: "Generated On",
      selectTeacher: "Select Teacher",
      teacherTimetable: "Time Table",
      teacherTimetableReport: "Teacher Time Table Report",
    },

    campusAcademicPage: {
      title: "College & University Setup",
      subtitle: "Degree programs, terms, courses and offerings for higher education — HSC, Degree/Honours and university semesters",
      tabPrograms: "Programs",
      tabTerms: "Terms",
      tabCourses: "Courses",
      tabOfferings: "Offerings",
      tabRoutine: "Course Routine",
      newSlot: "Add Class Slot",
      fieldOffering: "Course offering",
      fieldDay: "Day",
      fieldRoom: "Room",
      fieldNote: "Note",
      thTime: "Time",
      thRoom: "Room",
      noSlots: "No routine slots yet — add the weekly class times",
      slotSaved: "Class slot saved",
      slotDeleted: "Class slot deleted",
      confirmDeleteSlot: "Delete this class slot?",
      errCourseClash: "This course already has a class at that time",
      errTeacherClash: "This teacher already has a class at that time",
      errRoomClash: "This room is occupied at that time",
      newProgram: "New Program",
      editProgram: "Edit Program",
      fieldName: "Program name",
      fieldNameBn: "Program name (Bangla)",
      fieldCode: "Code",
      fieldDegree: "Degree level",
      fieldFaculty: "Faculty",
      fieldDepartment: "Department",
      fieldDuration: "Duration (years)",
      fieldTotalCredits: "Total credits",
      fieldScale: "Grading scale",
      degree_HSC: "Higher Secondary (HSC)",
      degree_DEGREE_PASS: "Degree (Pass)",
      degree_HONOURS: "Honours",
      degree_BACHELORS: "Bachelor's",
      degree_MASTERS: "Master's",
      degree_DIPLOMA: "Diploma",
      scaleGpa4: "UGC / NU — GPA 4.00 scale",
      scaleGpa5: "Board HSC — GPA 5.00 scale",
      thProgram: "Program",
      thCode: "Code",
      thDegree: "Degree",
      thDuration: "Duration",
      thScale: "Scale",
      thTerms: "Terms",
      thCourses: "Courses",
      thStudents: "Students",
      thExams: "Exams",
      fieldProgram: "Program",
      noPrograms: "No programs yet — create the first degree program",
      programSaved: "Program saved",
      programDeleted: "Program deleted",
      confirmDeleteProgram: "Delete this program? Its terms and courses go with it (blocked while students or exams exist).",
      newTerm: "New Term",
      editTerm: "Edit Term",
      fieldTerm: "Term name",
      fieldTermBn: "Term name (Bangla)",
      fieldSequence: "Sequence (order)",
      thTerm: "Term",
      thSequence: "Order",
      thStart: "Start",
      thEnd: "End",
      noTerms: "No terms yet — add the year/semester terms of a program",
      termSaved: "Term saved",
      termDeleted: "Term deleted",
      confirmDeleteTerm: "Delete this term?",
      newCourse: "New Course",
      editCourse: "Edit Course",
      fieldCourseCode: "Course code",
      fieldCourseName: "Course title",
      fieldCourseNameBn: "Course title (Bangla)",
      fieldCredits: "Credit hours",
      fieldCourseType: "Course type",
      fieldFull: "Full marks",
      fieldPass: "Pass marks",
      type_THEORY: "Theory",
      type_LAB: "Lab",
      type_SESSIONAL: "Sessional",
      type_THESIS: "Thesis",
      type_PROJECT: "Project",
      type_VIVA: "Viva",
      thCourse: "Course",
      thCredits: "Credits",
      thType: "Type",
      thFull: "Full marks",
      thPass: "Pass marks",
      thOfferings: "Offerings",
      noCourses: "No courses yet — add courses with credit hours",
      courseSaved: "Course saved",
      courseDeleted: "Course deleted",
      confirmDeleteCourse: "Delete this course?",
      newOffering: "New Offering",
      editOffering: "Edit Offering",
      fieldCourse: "Course",
      fieldSession: "Session",
      fieldSection: "Section",
      fieldTeacher: "Teacher",
      fieldSeats: "Max seats",
      sessionPlaceholder: "e.g. 2025-26",
      thSession: "Session",
      thSection: "Section",
      thTeacher: "Teacher",
      thSeats: "Seats",
      thEnrolled: "Enrolled",
      noTeacher: "— not assigned —",
      noOfferings: "No offerings yet — open a course for a session",
      offeringSaved: "Offering saved",
      offeringDeleted: "Offering deleted",
      confirmDeleteOffering: "Delete this offering? Its enrollments are removed too.",
      allPrograms: "All programs",
      errCodeExists: "This code already exists",
      errSequenceExists: "This sequence already exists for the program",
      errInUse: "Cannot delete — still referenced by other records",
      errOfferingExists: "This course is already offered for the session/section",
      errPassExceeds: "Pass marks cannot exceed full marks",
      errInvalidTerm: "Term does not belong to this program",
    },

    campusStudentsPage: {
      title: "College & University Students",
      subtitle: "Student information for degree programs — HSC, Degree/Honours and university semesters",
      tabStudents: "Students",
      tabEnrollments: "Course Enrollment",
      searchPlaceholder: "Search ID, name, roll, registration…",
      allPrograms: "All programs",
      allSessions: "All sessions",
      allStatuses: "All statuses",
      thId: "Student ID",
      thName: "Name",
      thProgram: "Program",
      thSession: "Session",
      thTerm: "Current term",
      thGuardian: "Guardian",
      thPhone: "Phone",
      thStatus: "Status",
      thCourses: "Courses",
      newStudent: "New Student",
      editStudent: "Edit Student",
      viewProfile: "Profile",
      fieldStudentId: "Student ID",
      fieldStudentIdHint: "e.g. CSE-2023-015",
      fieldName: "Full name",
      fieldNameBn: "Full name (Bangla)",
      fieldGender: "Gender",
      male: "Male",
      female: "Female",
      fieldDob: "Date of birth",
      fieldGuardian: "Guardian name",
      fieldGuardianPhone: "Guardian phone",
      fieldPhone: "Phone",
      fieldEmail: "Email",
      fieldAddress: "Address",
      fieldProgram: "Program",
      fieldSession: "Admission session",
      fieldTerm: "Current term",
      fieldBoardRoll: "Board roll (HSC)",
      fieldRegistration: "NU registration no",
      fieldAdmissionDate: "Admission date",
      fieldStatus: "Status",
      fieldNote: "Note",
      st_ACTIVE: "Active",
      st_GRADUATED: "Graduated",
      st_DROPPED: "Dropped",
      st_SUSPENDED: "Suspended",
      st_TRANSFERRED: "Transferred",
      noStudents: "No students found",
      studentSaved: "Student saved",
      studentDeleted: "Student deleted",
      confirmDeleteStudent: "Delete this student? Their enrollments and marks are removed too.",
      errIdExists: "This Student ID already exists",
      profileTitle: "Student Profile",
      infoTitle: "Academic Information",
      contactTitle: "Contact & Guardian",
      enrollmentListTitle: "Enrolled Courses",
      marksListTitle: "Exam Marks History",
      thCourse: "Course",
      thCredits: "Credits",
      thTeacher: "Teacher",
      thEnrollStatus: "Status",
      thExam: "Exam",
      thMarks: "Marks",
      thPublished: "Published",
      yes: "Yes",
      no: "No",
      enrollTitle: "Enroll a Student in Courses",
      pickStudent: "Student",
      pickSession: "Session (offering)",
      hintPickStudentFirst: "Pick a student to see their offered courses",
      enrollBtn: "Enroll Selected",
      enrollSelectAll: "Select all",
      enrollResult: "{n} enrolled · {m} already enrolled",
      noOfferings: "No offerings for this session",
      enr_ENROLLED: "Enrolled",
      enr_DROPPED: "Dropped",
      enr_RETAKE: "Retake",
      confirmRemoveEnrollment: "Remove this course enrollment?",
      enrollmentSaved: "Enrollment updated",
      enrollmentRemoved: "Enrollment removed",
      sessionPlaceholder: "e.g. 2025-26",
    },

    campusExamsPage: {
      title: "College & University Exams",
      subtitle: "Mid-term & semester final exams, exam routine and marks entry",
      tabExams: "Exams",
      tabSchedule: "Exam Routine",
      tabMarks: "Marks Input",
      newExam: "New Exam",
      editExam: "Edit Exam",
      fieldName: "Exam name",
      fieldNameBn: "Exam name (Bangla)",
      fieldProgram: "Program",
      fieldTerm: "Term",
      fieldExamType: "Exam type",
      fieldSession: "Session",
      fieldStartDate: "Start date",
      fieldEndDate: "End date",
      fieldNote: "Note",
      ty_MIDTERM: "Mid-Term",
      ty_SEMESTER_FINAL: "Semester Final",
      ty_FINAL: "Final Exam",
      ty_PRELIMINARY: "Preliminary",
      ty_TEST: "Test Exam",
      ty_QUIZ: "Quiz",
      thExam: "Exam",
      thProgram: "Program",
      thTerm: "Term",
      thType: "Type",
      thSession: "Session",
      thDates: "Start → End",
      thPapers: "Papers",
      thStatus: "Status",
      thCredits: "Credits",
      thStudent: "Student",
      noExams: "No exams yet — create the first term/semester exam",
      examSaved: "Exam saved",
      examDeleted: "Exam deleted",
      confirmDeleteExam: "Delete this exam? Its routine and marks are removed too.",
      pickExam: "Select exam…",
      noExamSelected: "Select an exam to manage its routine.",
      addPaper: "Add Paper",
      editPaper: "Edit Paper",
      fieldCourse: "Course",
      fieldDate: "Date",
      fieldStart: "Start time",
      fieldEnd: "End time",
      fieldRoom: "Room",
      fieldFull: "Full marks",
      fieldPass: "Pass marks",
      thCourse: "Course",
      thDate: "Date",
      thTime: "Time",
      thRoom: "Room",
      thFull: "Full",
      thPass: "Pass",
      thEntered: "Entered",
      noPapers: "No papers yet — add courses to build the routine",
      paperSaved: "Paper saved",
      paperDeleted: "Paper deleted",
      confirmDeletePaper: "Delete this paper and its marks?",
      publishRoutine: "Publish Routine",
      allowEdit: "Allow Edit",
      publishRoutineConfirm: "Publish the routine? Papers are locked until an admin allows edit again.",
      allowEditConfirm: "Unpublish the routine to edit papers again?",
      routinePublished: "Routine published",
      editAllowed: "Edit allowed again",
      printRoutine: "Print Routine",
      publishResult: "Publish Result",
      unpublishResult: "Unpublish Result",
      publishResultConfirm: "Publish this result? Marks input will be locked.",
      unpublishResultConfirm: "Unpublish the result to edit marks again?",
      resultPublishedMsg: "Result published",
      resultUnpublishedMsg: "Result unpublished",
      marksLocked: "Result is published — marks are locked",
      modeCourse: "Course Wise",
      modeStudent: "Student Wise",
      pickCourse: "Select course paper…",
      pickStudent: "Select student…",
      thObtained: "Obtained marks",
      thAbsent: "Absent",
      saveMarks: "Save Marks",
      marksSaved: "Marks saved",
      noEligible: "No enrolled students found for this exam's courses & session",
      errCourseExists: "This course is already in the routine",
      errCourseNotInProgram: "Course does not belong to the exam's program",
      errRoomClash: "Room clash — this room is occupied at that time",
      errSchedulePublished: "The routine is published — allow edit first",
      errResultPublished: "The result is published — unpublish first",
      errEndBeforeStart: "End must be after start",
    },

    campusResultsPage: {
      title: "College & University Results",
      subtitle: "Semester GPA results, marksheet, tabulation sheet and CGPA transcript",
      tabSemester: "Semester Results",
      tabTranscript: "Transcript (CGPA)",
      pickExam: "Select exam…",
      noExamSelected: "Select an exam to compute its semester result.",
      statStudents: "Students",
      statPassed: "Passed",
      statFailed: "Failed",
      statIncomplete: "Incomplete",
      statHighestGpa: "Highest GPA",
      statLowestGpa: "Lowest GPA",
      thStudent: "Student",
      thTotal: "Total marks",
      thCredits: "Credits",
      thGpa: "GPA",
      thResult: "Result",
      thActions: "Actions",
      res_PASSED: "Passed",
      res_FAILED: "Failed",
      res_INCOMPLETE: "Incomplete",
      viewMarksheet: "Marksheet",
      printTabulation: "Print Tabulation Sheet",
      publishResult: "Publish Result",
      unpublishResult: "Unpublish Result",
      publishResultConfirm: "Publish this result? Marks input will be locked.",
      unpublishResultConfirm: "Unpublish the result to edit marks again?",
      resultPublishedMsg: "Result published",
      resultUnpublishedMsg: "Result unpublished",
      marksheetTitle: "Semester Marksheet",
      studentIdLabel: "Student ID",
      nameLabel: "Name",
      programLabel: "Program",
      termLabel: "Term",
      sessionLabel: "Academic session",
      examLabel: "Examination",
      courseLabel: "Course",
      creditsLabel: "Credits",
      fullMarksLabel: "Full marks",
      passMarksLabel: "Pass marks",
      obtainedLabel: "Obtained",
      percentLabel: "Percent",
      gradeLabel: "Grade",
      pointLabel: "Point",
      totalsLabel: "Totals",
      gpaLabel: "GPA",
      resultLabel: "Result",
      scaleLabel: "Grading scale",
      preparedByLabel: "Prepared by",
      controllerLabel: "Controller of Examinations",
      absentShort: "Absent",
      notEntered: "—",
      pickProgram: "Program",
      pickStudent: "Select student…",
      hintPickStudent: "Pick a student to build the transcript",
      noStudentsInProgram: "No students in this program yet",
      noPublishedResults: "No published semester-final results for this program yet",
      transcriptTitle: "Academic Transcript",
      facultyLabel: "Faculty",
      departmentLabel: "Department",
      boardRollLabel: "Board roll",
      registrationLabel: "NU registration",
      creditsCompletedLabel: "Credits completed",
      cgpaLabel: "Cumulative GPA (CGPA)",
      registrarLabel: "Registrar",
      printTranscript: "Print Transcript",
      tabulationTitle: "Tabulation Sheet",
    },

    credentials: {
      tabTitle: "Credentials",
      title: "Member Credentials",
      create: "Create Credential",
      username: "Username",
      role: "Role",
      linkedTo: "Linked To",
      student: "Student",
      staffMember: "Staff Member",
      resetPassword: "Reset Password",
      newPassword: "New Password",
      infoCode: "Members sign in with this Institution Code + their username:",
      noCredentials: "No member credentials yet — create logins for students, teachers, parents & staff",
      created: "Credential created successfully",
      deleted: "Credential deleted",
      passwordReset: "Password reset successfully",
      usernameExists: "This username is already taken in your institution",
      deleteConfirm: "Delete the credential \"{name}\"? The member will no longer be able to log in.",
      // management upgrades
      searchPlaceholder: "Search username, name, roll…",
      filterAllRoles: "All roles",
      lastLogin: "Last Login",
      editTitle: "Edit Credential",
      enable: "Enable",
      disable: "Disable",
      disableConfirm: "Disable the account \"{name}\"? The member will not be able to log in until re-enabled.",
      updated: "Credential updated",
      generate: "Generate password",
      copy: "Copy",
      show: "Show password",
      hide: "Hide password",
      roll: "Roll",
      hasLogin: "has login",
      alreadyLinked: "This person already has a linked account of this type",
      // bulk creation
      bulk: "Bulk Create",
      bulkTitle: "Bulk Create Credentials",
      bulkHint: "Creates logins for every active student without one — usernames default to the roll (parents: roll-P) with generated passwords.",
      bulkClass: "Class",
      bulkRun: "Create Logins",
      bulkResult: "{n} credential(s) created · {m} skipped (already have a login)",
      bulkResultHint: "Copy or download these passwords now — they cannot be shown again.",
      noStudentsInScope: "No active students found in this scope",
      // subscription menu access
      menuAccess: "Menu Access",
      menuAccessTitle: "Subscription Menu Access",
      menuAccessHint: "Choose which sidebar menus are visible for your institution and each member type. Unticked menus disappear from that sidebar; core menus (dashboard, profile, packages, billing, settings) always stay visible.",
      menuAccessSaved: "Menu access saved — affected sidebars update on next visit",
      menuAccessSaveError: "Could not save menu access",
      menuAudInstitution: "Institution (Admin)",
      menuAudTeacher: "Teachers",
      menuAudStudent: "Students",
      menuAudParent: "Parents",
      menuAudStaff: "Staff",
      menuHiddenCount: "{n} hidden",
      menuSelectAll: "Tick all",
      menuClearAll: "Untick all",
    },
  },

  types: {
    PRIMARY_AND_HIGH_SCHOOL: "Primary & High School",
    COLLEGE_AND_UNIVERSITY: "College & University",
    COACHING: "Coaching",
    MADRASHA: "Madrasha",
  },

  me: {
    profile: "Profile",
    attendanceMonth: "Attendance (This Month)",
    classRoutine: "Class Routine",
    results: "Results",
    noResults: "No published results yet",
    exam: "Exam",
    totalMarks: "Total Marks",
    time: "Time",
    room: "Room",
    teacher: "Teacher",
    usernameLabel: "Username",
    mySchedule: "My Teaching Schedule",
    pinned: "Pinned",
    // module navigation
    navResults: "Results",
    navExams: "Exam Routine",
    navAttendance: "Attendance",
    navFees: "Fees & Payments",
    navNotices: "Notices",
    navComplaints: "Complaints",
    navIdCard: "ID Card",
    navProfile: "My Profile",
    // results page
    resultsTitle: "My Results",
    resultsSubtitle: "Published exam results with subject-wise marks",
    noResultsDetail: "No published results for your class yet",
    publishedOn: "Published",
    subjectCol: "Subject",
    appliedCol: "Applied",
    totalCol: "Total",
    fullMarksCol: "Full Marks",
    grandTotal: "Grand Total",
    // exam routine page
    examsTitle: "Exam Routine",
    examsSubtitle: "Published exam schedules with date, time and room",
    noRoutines: "No published exam routines yet",
    roomCol: "Room",
    passMarksCol: "Pass Marks",
    resultPublishedBadge: "Result published",
    // attendance page
    attendanceTitle: "My Attendance",
    attendanceSubtitle: "Monthly attendance history",
    noAttendance: "No attendance records in this month",
    attendanceRate: "Attendance Rate",
    recordsMarked: "records",
    dailyRecords: "Daily Records",
    generalRecord: "General record",
    // fees page
    feesTitle: "Fees & Payments",
    feesSubtitle: "Your fee statement and payment history",
    payWhereTitle: "Where to Pay",
    payWhereSubtitle: "Send your payments to these institution accounts and keep the transaction reference",
    payCopy: "Copy",
    payCopied: "Copied!",
    payMerchant: "Merchant",
    payPersonal: "Personal",
    payRouting: "Routing",
    deviceBadge: "Device",
    feeStatement: "Fee Statement",
    feeItem: "Fee",
    dueDateCol: "Due Date",
    noFees: "No fees assigned yet",
    paymentHistory: "Payment History",
    noPayments: "No payments recorded yet",
    paid: "Paid",
    partial: "Partial",
    due: "Due",
    // notices page
    noticesTitle: "Notice Board",
    noticesSubtitle: "Notices published by your institution",
    // complaints page
    complaintsTitle: "Complaints",
    complaintsSubtitle: "Raise an issue and track its status",
    newComplaint: "New Complaint",
    complaintSubmitted: "Complaint submitted — the institution has been notified",
    noComplaints: "No complaints submitted yet",
    myComplaints: "My Complaints",
    complaintDetails: "Describe the issue",
    responseCol: "Institution Response",
    // id card page
    idCardTitle: "My ID Card",
    idCardSubtitle: "Your student ID information maintained by the institution",
    idCardHint: "Card data is maintained by your institution on the Student Identity page. Contact the office for corrections.",
    idCardDataTitle: "Card Information",
    idCardDataHint: "The preview above uses your institution's official ID card designs — the printed copy will look exactly like this.",
    // class schedule page
    navSchedule: "Class Schedule",
    scheduleTitle: "Class Schedule",
    scheduleSubtitle: "Your weekly class routine — subjects, rooms and teachers",
    noSchedule: "No class routine published for your class yet",
    scheduleHint: "Today's column is highlighted. Rows are the weekly time slots.",
    printRoutine: "Print Routine",
    todayBadge: "Today",
    // exam routine page extras
    admitCardBtn: "Admit Card",
    admitCardTitle: "Admit Card",
    admitCardUnavailable: "Admit card is not available for this exam",
    examToday: "Today",
    // results page extras
    gradeCol: "Grade",
    gpaCol: "GPA",
    resultCol: "Result",
    resultPassed: "Passed",
    resultFailed: "Failed",
    resultIncomplete: "Incomplete",
    positionCol: "Position",
    attendanceCol: "Exam Attendance",
    marksheetBtn: "Marksheet",
    marksheetTitle: "Mark Sheet",
    failedShort: "Failed",
    studentName: "Student",
    // attendance dashboard extras
    attTabDashboard: "Dashboard",
    attTabYearly: "Yearly Report",
    attCalendar: "Monthly Calendar",
    attSubjectWise: "Subject-wise Attendance",
    attYearlyTitle: "Yearly Attendance Report",
    attYearlyRate: "Yearly Rate",
    attRateCol: "Rate",
    attPrintMonth: "Print Month",
    attPrintYear: "Print Report",
    // fees page extras
    filterAll: "All",
    noFeesInFilter: "No fees in this filter",
    overdueBadge: "Overdue",
    overdueItems: "overdue item(s)",
    printStatement: "Print Statement",
    receiptBtn: "Receipt",
    receiptTitle: "Money Receipt",
    receiptReceivedBy: "Received By",
    // online payment claims
    payOnline: "Pay Online",
    payOnlineTitle: "Pay Online — Submit Payment Reference",
    payOnlineHint: "Pay the amount to one of the institution accounts (Where to Pay), then submit the transaction reference here. The office verifies it and records your payment — the invoice appears in your history once approved.",
    payOnlineSubmit: "Submit for Verification",
    payAccount: "Paid To (Account)",
    claimTxnId: "Transaction ID (TrxID)",
    claimRefCol: "Reference",
    claimGeneralItem: "General fee payment",
    claimsTitle: "Online Payment Requests",
    claimsHint: "Pending claims are verified by the institution; approved claims become invoices in your payment history.",
    claimSubmitted: "Payment reference submitted — the institution will verify it shortly",
    claimExists: "A claim for this fee item is already pending verification",
    claimAmountExceeds: "Amount exceeds the remaining due for this fee item",
    claimPending: "Pending",
    claimApproved: "Approved",
    claimRejected: "Rejected",
    // take-attendance panel + signature + marks parity
    navTakeAttendance: "Take Attendance",
    takeAttendanceTitle: "Take Attendance",
    takeAttendanceSubtitle: "Mark student attendance for your own classes — individual or bulk",
    takePickClass: "Your classes",
    takePickClassFirst: "Pick one of your classes to load the student list",
    takeNotYourClass: "This class is not in your teaching schedule",
    signatureTitle: "My Signature",
    signatureUpload: "Upload Signature",
    signatureReplace: "Replace Signature",
    signatureRemove: "Remove",
    signatureSaved: "Signature saved",
    signatureRemoved: "Signature removed",
    signatureInvalid: "Choose a PNG/JPG/WebP image up to 2 MB",
    signatureHint: "This signature is printed on documents you sign (results, certificates).",
    marksMode: "Entry mode",
    pickStudentFirst: "Pick a student to enter marks paper by paper",
    marksSavedCount: "Marks saved — {n} row(s)",
    marksEntered: "Entered: {x} / {y}",
    marksNotGraded: "not graded yet",
    marksLockedNotice: "The result of this exam is published, so the marks are locked. Ask the office to unpublish the result if a correction is needed.",
    // security
    changePassword: "Change Password",
    currentPassword: "Current Password",
    newPasswordLabel: "New Password",
    passwordChanged: "Password changed successfully",
    wrongPassword: "Current password is incorrect",
    // teacher/staff modules
    navMarks: "Marks Entry",
    navLeaves: "Leave Requests",
    navPayroll: "Payroll",
    navLessonPlans: "Lesson Plans",
    // marks entry
    marksTitle: "Marks Entry",
    marksSubtitle: "Enter marks for the exam papers you teach",
    noPapers: "No exam papers assigned to you yet — papers match your class-routine subjects",
    examCol: "Exam",
    pickExamFirst: "Pick an exam to start entering marks",
    marksSaved: "Marks saved successfully",
    marksExceed: "Marks cannot exceed the paper's full/part marks",
    marksLocked: "The result is published — marks are locked",
    marksLockedBadge: "Result published",
    notYourPaper: "You can only enter marks for your own papers",
    noStudentsInClass: "No active students in this class",
    rollCol: "Roll",
    // leave requests
    leavesTitle: "Leave Requests",
    leavesSubtitle: "Apply for leave and track approval status",
    applyLeave: "Apply for Leave",
    leaveSubmitted: "Leave request submitted — the office will review it",
    noLeaves: "No leave requests yet",
    myLeaves: "My Leave Requests",
    fromCol: "From",
    toCol: "To",
    decidedOn: "Decided On",
    invalidDates: "The end date cannot be before the start date",
    // payroll
    payrollTitle: "Payroll",
    payrollSubtitle: "Your salary payment history (payslips)",
    payslips: "Payslips",
    noPaymentsYet: "No salary payments recorded yet",
    // lesson plans
    lessonPlansTitle: "Lesson Plans",
    lessonPlansSubtitle: "Your chapter plans with weekly breakdown and progress",
    noLessonPlans: "No lesson plans assigned to you yet",
    weeks: "weeks",
    progress: "Progress",
    // staff profile
    staffProfileTitle: "My Profile",
    staffProfileSubtitle: "Your staff record and contact information",
    profileUpdated: "Profile updated successfully",
    joinedOn: "Joined On",
    contactInfo: "Contact Information",
    contactHint: "You can update your own contact details; name, designation and salary are maintained by the office.",
  },

  status: {
    PENDING: "Pending",
    ACTIVE: "Active",
    APPROVED: "Approved",
    REJECTED: "Rejected",
    CONTACTED: "Contacted",
    CONVERTED: "Converted",
    SUSPENDED: "Suspended",
    EXPIRED: "Expired",
    CANCELLED: "Cancelled",
    SUPER_ADMIN: "Super Admin",
    INSTITUTION_ADMIN: "Institution Admin",
    STUDENT: "Student",
    TEACHER: "Teacher",
    PARENT: "Parent",
    STAFF: "Staff",
    PRINCIPAL: "Principal",
    VICE_PRINCIPAL: "Vice Principal",
    EXECUTIVE_MEMBER: "Executive Member",
    UPCOMING: "Upcoming",
    RUNNING: "Running",
    FINISHED: "Finished",
    PRESENT: "Present",
    ABSENT: "Absent",
    LEAVE: "On Leave",
    ISSUED: "Issued",
    RETURNED: "Returned",
    OVERDUE: "Overdue",
    SENT: "Sent",
    FAILED: "Failed",
    IN: "Stock In",
    OUT: "Stock Out",
    IN_REVIEW: "In Review",
    RESOLVED: "Resolved",
    PLANNED: "Planned",
    IN_PROGRESS: "In Progress",
    COMPLETED: "Completed",
      OPEN: "Open",
      CLOSED: "Closed",
  },

  methods: {
    BKASH: "bKash",
    NAGAD: "Nagad",
    ROCKET: "Rocket",
    CARD: "Card",
    BANK_TRANSFER: "Bank Transfer",
    CASH: "Cash",
  },

  categories: {
    CLASS: "Class",
    SECTION: "Section",
    DEPARTMENT: "Department",
    SESSION: "Session",
    SUBJECT: "Subject",
    GROUP: "Group",
    SHIFT: "Shift",
    ROOM: "Room",
  },

  feeTypes: {
    ADMISSION: "Admission Fee",
    TUITION: "Tuition Fee",
    EXAM: "Exam Fee",
    OTHER: "Other",
  },

  channels: {
    SMS: "SMS",
    EMAIL: "Email",
    WHATSAPP: "WhatsApp",
  },

  audiences: {
    ALL_STUDENTS: "All Students (Guardians)",
    BY_CLASS: "One Class (Guardians)",
    STUDENT: "Single Student (Guardian)",
    ALL_STAFF: "All Staff",
    STAFF: "Single Staff",
  },

  designations: {
    PRINCIPAL: "Principal",
    VICE_PRINCIPAL: "Vice Principal",
    HEAD_TEACHER: "Head Teacher",
    TEACHER: "Teacher",
    ASSISTANT_TEACHER: "Assistant Teacher",
    LIBRARIAN: "Librarian",
    ACCOUNTANT: "Accountant",
    OFFICE_ASSISTANT: "Office Assistant",
    LAB_ASSISTANT: "Lab Assistant",
    DRIVER: "Driver",
    SECURITY_GUARD: "Security Guard",
    OTHER: "Other",
  },

  departments: {
    ACADEMIC: "Academic",
    SCIENCE: "Science",
    ARTS: "Arts",
    COMMERCE: "Commerce",
    ADMINISTRATION: "Administration",
    ACCOUNTS: "Accounts",
    LIBRARY: "Library",
    IT: "IT",
    OTHER: "Other",
  },

  bookCategories: {
    TEXTBOOK: "Textbook",
    REFERENCE: "Reference",
    LITERATURE: "Literature",
    SCIENCE: "Science",
    HISTORY: "History",
    RELIGIOUS: "Religious",
    CHILDREN: "Children",
    OTHER: "Other",
  },

  inventoryCategories: {
    FURNITURE: "Furniture",
    EQUIPMENT: "Equipment",
    STATIONERY: "Stationery",
    LAB: "Lab",
    IT: "IT",
    CLEANING: "Cleaning",
    OTHER: "Other",
  },

  inventoryUnits: {
    PCS: "pcs",
    BOX: "box",
    SET: "set",
    PACK: "pack",
    LITER: "liter",
    KG: "kg",
    REAM: "ream",
  },

  memberTypes: {
    STUDENT: "Student",
    STAFF: "Staff",
  },

  vehicleTypes: {
    BUS: "Bus",
    MINIBUS: "Minibus",
    MICROBUS: "Microbus",
    VAN: "Van",
    OTHER: "Other",
  },

  hostelTypes: {
    BOYS: "Boys",
    GIRLS: "Girls",
    MIXED: "Co-ed",
  },

  roomTypes: {
    SINGLE: "Single",
    DOUBLE: "Double",
    TRIPLE: "Triple",
    DORMITORY: "Dormitory",
  },

  noticeAudiences: {
    ALL: "Everyone",
    STUDENTS: "Students",
    STAFF: "Staff",
  },

  complaintTypes: {
    STUDENT: "Student",
    PARENT: "Parent / Guardian",
    STAFF: "Staff",
    OTHER: "Other",
  },

  complaintCategories: {
    GENERAL: "General",
    ACADEMIC: "Academic",
    FACILITY: "Facility",
    HARASSMENT: "Harassment",
    FINANCIAL: "Financial",
    OTHER: "Other",
  },

  eventCategories: {
    ACADEMIC: "Academic",
    CULTURAL: "Cultural",
    SPORTS: "Sports",
    EXAM: "Exam",
    HOLIDAY: "Holiday",
    MEETING: "Meeting",
  },

  committeeRoles: {
    PRESIDENT: "President",
    VICE_PRESIDENT: "Vice President",
    SECRETARY: "Secretary",
    TREASURER: "Treasurer",
    MEMBER: "Member",
  },

  applicationTypes: {
    RAPID: "Rapid",
    DETAILS: "Detailed",
    PUBLIC: "Online (Public)",
  },

  promotionTypes: {
    CLASS: "Class",
    SECTION: "Section",
    SHIFT: "Shift",
    GROUP: "Group",
  },

  lessonStatuses: {
    PLANNED: "Planned",
    IN_PROGRESS: "In Progress",
    COMPLETED: "Completed",
  },
  notifications: {
    title: "Notifications",
    empty: "No notifications yet",
    markAllRead: "Mark all read",
    enableAlerts: "Enable desktop alerts",
    alertsEnabled: "Desktop alerts enabled",
    kindNotice: "Notice",
    kindEvent: "Event",
    kindResult: "Result",
    kindSystem: "Announcement",
    pushTo: "Notify",
    groupStudents: "Students",
    groupParents: "Parents",
    groupTeachers: "Teachers",
    groupStaff: "Staff",
    groupAdmins: "Institution Admins",
    announcementsTitle: "Announcements",
    announcementsSubtitle: "Publish a push notification to role groups across every institution",
    newAnnouncement: "New Announcement",
    formTitle: "Title",
    formBody: "Message",
    audienceLabel: "Send to",
    audienceRequired: "Pick at least one recipient group",
    announcementsHint: "The push lands in the notification bell of every matching user across all institutions.",
    noAnnouncements: "No announcements published yet",
    announcementPublished: "Announcement pushed to the selected groups",
    reached: "Reached",
    publish: "Publish",
  },
  days: {
    SAT: "Saturday",
    SUN: "Sunday",
    MON: "Monday",
    TUE: "Tuesday",
    WED: "Wednesday",
    THU: "Thursday",
    FRI: "Friday",
  },

  boards: {
    DHAKA: "Dhaka",
    RAJSHAHI: "Rajshahi",
    CHATTOGRAM: "Chattogram",
    CUMILLA: "Cumilla",
    JASHORE: "Jashore",
    BARISHAL: "Barishal",
    SYLHET: "Sylhet",
    DINAJPUR: "Dinajpur",
    MYMENSINGH: "Mymensingh",
    TECHNICAL: "Technical Education Board",
    MADRASAH: "Madrasah Education Board",
    NATIONAL_UNIVERSITY: "National University",
    OTHER: "Other / Not Applicable",
  },
};

export type Dictionary = typeof en;

/* ------------------------------------------------------------------ */
/*  Bangla dictionary                                                 */
/* ------------------------------------------------------------------ */

export const bn: Dictionary = {
  common: {
    appName: "ইনক্রিলগইএমএস",
    tagline: "সম্পূর্ণ শিক্ষা ব্যবস্থাপনা প্ল্যাটফর্ম",
    login: "লগইন",
    logout: "লগআউট",
    register: "নিবন্ধন",
    email: "ইমেইল",
    password: "পাসওয়ার্ড",
    card: "কার্ড",
    name: "নাম",
    phone: "ফোন",
    address: "ঠিকানা",
    dashboard: "ড্যাশবোর্ড",
    packages: "প্যাকেজ",
    institutions: "প্রতিষ্ঠান",
    accounts: "অ্যাকাউন্ট",
    requests: "অনুরোধ",
    payments: "পেমেন্ট",
    academicInfo: "একাডেমিক তথ্য",
    support: "সাপোর্ট",
    copy: "কপি",
    save: "সংরক্ষণ করুন",
    saveChanges: "পরিবর্তন সংরক্ষণ করুন",
    cancel: "বাতিল করুন",
    confirm: "নিশ্চিত করুন",
    delete: "মুছে ফেলুন",
    edit: "সম্পাদনা করুন",
    create: "তৈরি করুন",
    update: "আপডেট করুন",
    search: "খুঁজুন",
    noResults: "কোনো মিল নেই",
    showing: "দেখানো হচ্ছে",
    of: "এর মধ্যে",
    rowsPerPage: "প্রতি পৃষ্ঠায় সারি",
    filter: "ফিল্টার",
    all: "সকল",
    status: "অবস্থা",
    type: "ধরন",
    actions: "কার্যক্রম",
    createdAt: "তৈরির তারিখ",
    loading: "লোড হচ্ছে…",
    noData: "কোনো তথ্য পাওয়া যায়নি",
    confirmDelete: "আপনি কি নিশ্চিতভাবে এটি মুছতে চান?",
    yes: "হ্যাঁ",
    no: "না",
    back: "ফিরে যান",
    amount: "পরিমাণ",
    method: "পদ্ধতি",
    date: "তারিখ",
    note: "নোট",
    optional: "ঐচ্ছিক",
    total: "মোট",
    active: "সক্রিয়",
    inactive: "নিষ্ক্রিয়",
    success: "সফল",
    error: "সমস্যা",
    savedSuccessfully: "সফলভাবে সংরক্ষিত হয়েছে",
    deletedSuccessfully: "সফলভাবে মুছে ফেলা হয়েছে",
    language: "ভাষা",
    english: "English",
    bangla: "বাংলা",
    viewAll: "সব দেখুন",
    print: "প্রিন্ট",
    home: "হোম",
    features: "ফিচারসমূহ",
    price: "মূল্য",
    duration: "মেয়াদ",
    months: "মাস",
    year: "বছর",
    maxStudents: "সর্বোচ্চ শিক্ষার্থী",
    validity: "মেয়াদ",
    expiry: "মেয়াদ শেষ",
    view: "দেখুন",
    close: "বন্ধ করুন",
    institution: "প্রতিষ্ঠান",
    institutionType: "প্রতিষ্ঠানের ধরন",
    package: "প্যাকেজ",
    subscription: "সাবস্ক্রিপশন",
    invoice: "ইনভয়েস",
    collected: "আদায় হয়েছে",
    due: "বাকি",
    paid: "পরিশোধিত",
    processing: "প্রসেস হচ্ছে…",
    required: "এই ঘরটি পূরণ করুন",
    invalidEmail: "একটি সঠিক ইমেইল দিন",
    minPassword: "পাসওয়ার্ড কমপক্ষে ৬ অক্ষরের হতে হবে",
    tryAgain: "কিছু একটি সমস্যা হয়েছে। আবার চেষ্টা করুন।",
    perYear: "/ বছর",
    students: "শিক্ষার্থী",
    sessionExpired: "সেশন শেষ হয়েছে। আবার লগইন করুন।",
    copied: "কপি হয়েছে",
    today: "আজ",
    category: "ক্যাটাগরি",
    channel: "চ্যানেল",
    audience: "প্রাপক গোষ্ঠী",
    subject: "বিষয়",
    recipients: "প্রাপক",
    quantity: "পরিমাণ",
    unit: "একক",
    unitPrice: "একক মূল্য",
    value: "মূল্য",
    from: "থেকে",
    to: "পর্যন্ত",
    reason: "কারণ",
    employee: "কর্মচারী",
    designation: "পদবি",
    department: "বিভাগ",
    salary: "বেতন",
    month: "মাস",
    days: "দিন",
    district: "জেলা",
    subDistrict: "উপজেলা",
    eiin: "EIIN (শিক্ষা প্রতিষ্ঠান আইডি নম্বর)",
    ein: "EIN (প্রাথমিক)",
    mpoCode: "এমপিও কোড",
    boardCode: "বোর্ড / কলেজ কোড",
    educationBoard: "শিক্ষা বোর্ড",
    establishedYear: "প্রতিষ্ঠার সাল",
    postCode: "পোস্ট কোড",
    select: "নির্বাচন",
    monitoring: "মনিটরিং",
    attendance: "উপস্থিতি",
    present: "উপস্থিত",
    absent: "অনুপস্থিত",
    leave: "ছুটি",
    rate: "হার",
    teachers: "শিক্ষক",
    events: "ইভেন্ট",
    complaints: "অভিযোগ",
    notices: "নোটিশ",
    results: "ফলাফল",
    papers: "পত্র",
    daily: "দৈনিক",
    weekly: "সাপ্তাহিক",
    monthly: "মাসিক",
    average: "গড়",
    highest: "সর্বোচ্চ",
    lowest: "সর্বনিম্ন",
    upcoming: "আসন্ন",
    running: "চলমান",
    finished: "সমাপ্ত",
    trend: "প্রবণতা",
    allDistricts: "সব জেলা",
    allSubDistricts: "সব উপজেলা",
    unassigned: "নির্ধারিত নয়",
  },

  nav: {
    centralPanel: "কেন্দ্রীয় প্যানেল",
    institutionPortal: "প্রতিষ্ঠান পোর্টাল",
    memberPortal: "সদস্য পোর্টাল",
  },

  navGroups: {
    general: "সাধারণ",
    admissions: "ভর্তি ও শিক্ষার্থী",
    administration: "প্রশাসন",
    finance: "আর্থিক",
    academics: "একাডেমিক",
    hrCampus: "এইচআর ও ক্যাম্পাস",
    communication: "যোগাযোগ ও কার্যক্রম",
    toolsBilling: "টুলস ও বিলিং",
    overview: "ওভারভিউ",
    management: "ব্যবস্থাপনা",
    billingSetup: "বিলিং ও সেটআপ",
    tools: "টুলস",
    work: "আমার কাজ",
    campus: "ক্যাম্পাস",
    account: "অ্যাকাউন্ট",
  },

  /* ল্যান্ডিং মডিউল-ম্যাপ ইনফোগ্রাফিকের ছোট মডিউল নাম */
  moduleName: {
    dashboard: "ড্যাশবোর্ড",
    admission: "ভর্তি",
    students: "শিক্ষার্থী",
    identity: "শিক্ষার্থী আইডি",
    controlPanel: "কন্ট্রোল প্যানেল",
    academicInfo: "একাডেমিক তথ্য",
    routine: "ক্লাস রুটিন",
    exams: "পরীক্ষা",
    results: "ফলাফল",
    promotions: "প্রমোশন",
    lessonPlans: "লেসন প্ল্যান",
    omr: "ওএমআর",
    fees: "ফি",
    accounts: "অ্যাকাউন্ট",
    payroll: "পেরোল",
    hr: "এইচআর",
    library: "লাইব্রেরি",
    hostel: "হোস্টেল",
    inventory: "ইনভেন্টরি",
    transport: "ট্রান্সপোর্ট",
    notices: "নোটিশ",
    events: "ইভেন্ট",
    committees: "কমিটি",
    certificates: "সার্টিফিকেট",
    competitions: "প্রতিযোগিতা",
    messages: "মেসেজ",
    smsPanel: "এসএমএস প্যানেল",
    support: "সাপোর্ট",
  },

  landing: {
    heroBadge: "প্রতিটি প্রতিষ্ঠানের জন্য একটি প্ল্যাটফর্ম",
    heroTitle: "আপনার পুরো প্রতিষ্ঠান পরিচালনা করুন একটি সুন্দর প্ল্যাটফর্ম থেকে",
    heroSubtitle:
      "ইনক্রিলগইএমএস হলো সকল ধরনের শিক্ষা প্রতিষ্ঠানের কেন্দ্রীয় নিয়ন্ত্রণ ব্যবস্থা — কিন্ডারগার্টেন থেকে বিশ্ববিদ্যালয় পর্যন্ত। প্যাকেজ বেছে নিন, প্রতিষ্ঠান নিবন্ধন করুন এবং শ্রেণি, শাখা, বিষয় সহ সবকিছু পরিচালনা করুন।",
    getStarted: "শুরু করুন",
    viewPackages: "প্যাকেজ দেখুন",
    trustedBy: "সকল ধরনের প্রতিষ্ঠানের আস্থার নাম",
    packagesTitle: "প্রতিটি শিক্ষা প্যাটার্নের জন্য মূল্য",
    packagesSubtitle:
      "শিক্ষার্থী সংখ্যা অনুযায়ী সমতল মাসিক প্যাকেজ — একটি মূল্যেই পুরো প্রতিষ্ঠান কভার। বছরে পরিশোধ করলে ২০% পর্যন্ত সাশ্রয়।",
    setupNote: "এককালীন সেটআপ ফি ৳৫,০০০ — শুধু প্রথম সাবস্ক্রিপশনের সাথে",
    billedPerStudent: "সক্রিয় শিক্ষার্থী প্রতি বিলিং · প্রতিটি প্ল্যানে অসীম শিক্ষার্থী",
    yearlySave: "বছরে পরিশোধে {pct}% সাশ্রয়",
    yearlyPerStudent: "প্রতি শিক্ষার্থী / বছর, বার্ষিক পরিশোধে",
    featuresNav: "ফিচারসমূহ",
    featuresTitle: "আপনার প্রতিষ্ঠানের প্রতিটি প্রয়োজনীয় ব্যবস্থা",
    featuresSubtitle:
      "নিচের প্রতিটি মডিউল আজই ইনক্রিলগইএমএস-এ চালু আছে — ওয়েটেড পরীক্ষার ফলাফল থেকে জেলাভিত্তিক মনিটরিং পর্যন্ত।",
    feat1Title: "পরীক্ষা ও ফলাফল ইঞ্জিন",
    feat1Desc:
      "সিঙ্গেল, পিরিয়ডিক্যাল, কম্বাইন্ড এবং ওয়েটেড চূড়ান্ত ফলাফল (৩ সেট) — স্বয়ংক্রিয় মেধা তালিকা, লেটার গ্রেড ও QR যাচাইকৃত A4 প্রিন্ট।",
    feat2Title: "স্মার্ট উপস্থিতি",
    feat2Desc:
      "ছবিসহ রোস্টারে শিক্ষার্থী ও শিক্ষকের দৈনিক উপস্থিতি — লাইভ ট্রেন্ড এবং দৈনিক, সাপ্তাহিক, মাসিক সারসংক্ষেপ।",
    feat3Title: "ফি ও পেমেন্ট",
    feat3Desc:
      "বিকাশ, নগদ, রকেট ও কার্ড জুড়ে ফি শিডিউল, কালেকশন ও পরিসংখ্যান — বাকি ট্র্যাকিং ও ইনভয়েস সহ।",
    feat4Title: "কেন্দ্রীয় মনিটরিং",
    feat4Desc:
      "জেলা ও উপজেলাভিত্তিক প্রতিটি প্রতিষ্ঠানের মনিটরিং — পরীক্ষা, ফি আদায়, উপস্থিতি ও অভিযোগ বক্স।",
    feat5Title: "নোটিশ ও ইভেন্ট",
    feat5Desc:
      "নোটিশ, ইভেন্ট ক্যালেন্ডার ও অভিযোগ বক্স — কেন্দ্রীয় নিয়ন্ত্রক, প্রতিষ্ঠান ও অভিভাবকদের সংযুক্ত রাখে।",
    feat6Title: "ভর্তি ও প্রোফাইল",
    feat6Desc:
      "ডিজিটাল ভর্তি কার্যক্রম — ছবি প্রোফাইল, রোল, অভিভাবক তথ্য এবং শ্রেণি-শাখা-শিফট বণ্টন।",
    feat7Title: "লাইব্রেরি · ট্রান্সপোর্ট · হোস্টেল",
    feat7Desc:
      "বই ইস্যু ও ফেরত, ট্রান্সপোর্ট সদস্যপদ এবং হোস্টেল ব্যবস্থাপনা — সব একই প্রতিষ্ঠান পোর্টালে।",
    feat8Title: "দ্বিভাষিক ও প্রিন্ট-রেডি",
    feat8Desc:
      "সম্পূর্ণ ইংরেজি/বাংলা ইন্টারফেস — ফলাফলে বাংলা সংখ্যা এবং পেশাদার A4 ল্যান্ডস্কেপ প্রিন্ট শীট।",
    faqNav: "সাধারণ জিজ্ঞাসা",
    faqTitle: "সাধারণ জিজ্ঞাসাসমূহ",
    faqSubtitle: "ইনক্রিলগইএমএস-এ যোগ দেওয়ার আগে প্রতিষ্ঠানগুলো যা জানতে চায়।",
    faq1Q: "শিক্ষার্থী প্রতি মূল্য কীভাবে কাজ করে?",
    faq1A: "প্রতিটি ধরনের প্রতিষ্ঠানের জন্য শিক্ষার্থী-সংখ্যা অনুযায়ী সমতল মাসিক প্যাকেজ রয়েছে — যেমন ৩০০ পর্যন্ত শিক্ষার্থীর সরকারি বিদ্যালয়ের জন্য মাসে ৳২,০০০, বেসরকারি বিদ্যালয়ের জন্য ৳৩,৫০০ এবং কোচিং সেন্টারের জন্য ৳৪,৫০০। বছরে পরিশোধ করলে ২০% পর্যন্ত সাশ্রয়। কোনো শিক্ষার্থী-ভিত্তিক ফি বা গোপন চার্জ নেই।",
    faq2Q: "সেটআপ ফি আছে কি?",
    faq2A: "হ্যাঁ — এককালীন ৳৫,০০০ সেটআপ ফি শুধু প্রথম সাবস্ক্রিপশনের সাথে যোগ হয়। নবায়ন বা আপগ্রেডে এটি আর আসে না।",
    faq3Q: "আমরা কীভাবে শুরু করব?",
    faq3A: "রেজিস্টার পেজ থেকে প্রতিষ্ঠান নিবন্ধন করুন, কেন্দ্রীয় নিয়ন্ত্রকের অনুমোদনের জন্য অপেক্ষা করুন, তারপর আপনার পোর্টাল থেকে প্যাকেজের অনুরোধ পাঠান। অনুমোদনের সাথে সাথে সাবস্ক্রিপশন চালু হয়ে যায়।",
    faq4Q: "কোন কোন পেমেন্ট পদ্ধতি সমর্থিত?",
    faq4A: "প্রতিষ্ঠানগুলো বিকাশ, নগদ, রকেট ও কার্ডে পরিশোধ করতে পারে। শিক্ষার্থীদের কাছ থেকে ফি আদায়েও একই পদ্ধতি স্বয়ংক্রিয় পরিসংখ্যানসহ কাজ করে।",
    faq5Q: "ফলাফলের শীট প্রিন্ট করা যাবে?",
    faq5A: "হ্যাঁ — ফলাফলের শীট A4-এ প্রিন্ট হয় (পিরিয়ডিক্যল মার্কশীট পোর্ট্রেট, চূড়ান্ত ফলাফল জার্নাল ল্যান্ডস্কেপ) এবং QR যাচাইয়ের মাধ্যমে যেকোনো কপি প্রমাণ করা যায়।",
    faq6Q: "বাংলা সম্পূর্ণভাবে সমর্থিত?",
    faq6A: "পুরো সিস্টেমটি দ্বিভাষিক — ইংরেজি ও বাংলা। ফলাফলের শীটে বাংলা সংখ্যাও দেখায়, আর প্রতিটি প্ল্যানের নাম, ফিচার ও রিপোর্ট অনূদিত।",
    faq7Q: "বার্ষিক পরিশোধে ছাড় পাওয়া যায়?",
    faq7A: "হ্যাঁ — স্কুল, কোচিং ও মাদ্রাসা মাসিকের বদলে বার্ষিক পরিশোধ করলে ১০% সাশ্রয় করে। ছাড়টি স্বয়ংক্রিয়ভাবে প্রয়োগ হয়।",
    whyTitle: "কেন ইনক্রিলগইএমএস?",
    whySubtitle: "কেন্দ্রীয় নিয়ন্ত্রক এবং প্রতিষ্ঠানের প্রয়োজনীয় সবকিছু এক জায়গায়।",
    why1Title: "প্যাকেজ সিস্টেম",
    why1Desc:
      "কিন্ডারগার্টেন, প্রাথমিক, উচ্চ বিদ্যালয়, কলেজ, বিশ্ববিদ্যালয়, কোচিং ও মাদ্রাসার জন্য সাজানো প্যাকেজ — অনলাইনেই অনুরোধ ও ক্রয় করুন।",
    why2Title: "পেমেন্ট সংগ্রহ",
    why2Desc:
      "কেন্দ্রীয় নিয়ন্ত্রক বিকাশ, নগদ, রকেট, কার্ড, ব্যাংক ট্রান্সফার বা নগদ টাকায় পেমেন্ট আদায় করেন — প্রতিটি লেনদেনের ইনভয়েস সহ।",
    why3Title: "একাডেমিক সেটআপ",
    why3Desc:
      "শ্রেণি, শাখা, বিভাগ, শিক্ষাবর্ষ, বিষয়, গ্রুপ, শিফট ও কক্ষ — কেন্দ্রীয়ভাবে নিবন্ধিত, প্রতিটি প্রতিষ্ঠান প্রয়োজন অনুযায়ী নির্বাচন করে।",
    why4Title: "দ্বিভাষিক ইন্টারফেস",
    why4Desc: "সম্পূর্ণ ইংরেজি ও বাংলা ইন্টারফেস — এক ক্লিকে যেকোনো সময় পরিবর্তন করুন।",
    footerAbout:
      "ইনক্রিলগইএমএস — কেন্দ্রীয় শিক্ষা ব্যবস্থাপনা নিয়ন্ত্রক। সকল ধরনের প্রতিষ্ঠানের জন্য প্যাকেজ, পেমেন্ট ও একাডেমিক সেটআপ।",
    footerQuickLinks: "দ্রুত লিংক",
    footerForInstitutions: "প্রতিষ্ঠানের জন্য",
    rights: "সর্বস্বত্ব সংরক্ষিত।",
    poweredBy: "ইনক্রিলগ ইউনিফায়েড সলিউশনস দ্বারা উন্নয়িত",
    requestThisPackage: "এই প্যাকেজের অনুরোধ করুন",
    loginToRequest: "অনুরোধ করতে প্রতিষ্ঠান হিসেবে লগইন করুন",

    supportLabel: "সাপোর্ট",
    /* ---- শিক্ষার্থী-সংখ্যা ভিত্তিক প্যাকেজ ---- */
    vatNote: "* সকল ফি ও চার্জের উপর ৫% ভ্যাট প্রযোজ্য",
    addonNote: "* প্রতিটি অ্যাড-অনের জন্য চার্জ প্রযোজ্য",
    perMonth: "মাসিক",
    perYear: "বার্ষিক",
    selectRange: "শিক্ষার্থী রেঞ্জ নির্বাচন করুন",
    yearlyMonthlyEq: "বার্ষিক পরিশোধে {amt} / মাস",
    yearlyRate: "বছরে পরিশোধে {amt} / মাস",
    slabHint: "শিক্ষার্থী সংখ্যা অনুযায়ী সমতল মাসিক প্যাকেজ — আপনার প্রতিষ্ঠানের মানানসই রেঞ্জ বেছে নিন, বছরে পরিশোধ করলেই সাশ্রয়।",
    slabFlatNote: "সমতল মাসিক মূল্য — পুরো রেঞ্জ কভার",
    customOfferHint: "৩৫০০-এর বেশি শিক্ষার্থী?",
    customOfferBtn: "কাস্টম অফারের জন্য যোগাযোগ করুন",
    customOfferPrefill: "কাস্টম অফারের অনুরোধ — {cat}, ৩৫০০-এর বেশি শিক্ষার্থী। একটি সুনির্দিষ্ট প্ল্যান পাঠান।",
    referralBadge: "{pct}% রেফারেল ছাড়",
    referralOfferTitle: "রেফারেল কোড আছে? প্রথম ক্রয়ে {pct}% ছাড় নিন",
    referralApply: "প্রয়োগ",
    referralOfferLine: "রেফারেল কোড দিয়ে প্রথম ক্রয়ে {pct}% ছাড়",
    referralValidBanner:
      "রেফারেল কোড {code} সক্রিয় — প্রথম প্যাকেজ ক্রয়ে {pct}% ছাড়, উপরের মূল্যে প্রয়োগ করা হয়েছে।",
    referralInvalidBanner:
      "রেফারেল কোড {code} সঠিক নয় — রেফারকারী প্রতিষ্ঠানের সাথে মিলিয়ে নিন।",

    /* ---- ফিচার ইনফোগ্রাফিক: মডিউল ম্যাপ ---- */
    mapBadge: "মডিউল ম্যাপ",
    mapTitle: "এক সিস্টেমে — প্রতিষ্ঠান চালানোর সব মডিউল",
    mapSubtitle:
      "পাঁচটি স্যুটে ২০+ সংযুক্ত মডিউল। কন্ট্রোল প্যানেল থেকে শুধু দরকারি মডিউল চালু করুন — বাকি সব সরে যাবে।",
    mapCore: "কোর ও মানুষ",
    mapAcademics: "একাডেমিক",
    mapFinance: "আর্থিক",
    mapCampus: "ক্যাম্পাস কার্যক্রম",
    mapCommunication: "যোগাযোগ",
    mapFooter: "ইংরেজি ও বাংলা ইন্টারফেস · যাচাইকৃত ডকুমেন্ট · A4 প্রিন্ট-রেডি",

    /* ---- ফিচার ইনফোগ্রাফিক: বিস্তারিত ---- */
    deepBadge: "মডিউলের ভেতরে",
    deepTitle: "প্রতিটি মডিউল ঘুরে দেখুন — বিস্তারিতভাবে",
    deepSubtitle:
      "প্রতিটি মডিউলের কার্যক্রম ও সুবিধার বিস্তারিত — যা প্রথম দিন থেকেই পাচ্ছেন আপনার প্রতিষ্ঠান।",
    deepResultTitle: "পরীক্ষা ও ফলাফল ইঞ্জিন",
    deepResultDesc:
      "নম্বর এন্ট্রি থেকে QR-যাচাইকৃত, প্রিন্ট-রেডি নম্বরপত্র — সব স্তরের শিক্ষার্থীর জন্য পূর্ণাঙ্গ পরীক্ষা ওয়ার্কফ্লো।",
    deepResultStat: "৩",
    deepResultStatLabel: "ফাইনাল রেজাল্ট সেট",
    deepResultBullets: [
      "একক · সাময়িক · সমন্বিত ফলাফল",
      "ওজনসহ বিষয় নম্বর ও স্বয়ংক্রিয় গ্রেডিং",
      "প্রতি শ্রেণিতে মেধা তালিকা",
      "লেটার গ্রেড, জিপিএ ও ট্যাবুলেশন শীট",
      "QR-যাচাইকৃত নম্বরপত্র ও ডকুমেন্ট",
      "ইংরেজি বা বাংলায় A4 প্রিন্ট",
    ],
    deepAttendanceTitle: "স্মার্ট উপস্থিতি",
    deepAttendanceDesc:
      "ছবিসহ রোস্টার, বায়োমেট্রিক ডিভাইস সিঙ্ক ও লাইভ ট্রেন্ড ড্যাশবোর্ড — প্রতিটি শ্রেণির উপস্থিতির পূর্ণাঙ্গ নজরদারি।",
    deepAttendanceStat: "৩",
    deepAttendanceStatLabel: "ভিউ — দৈনিক, সাপ্তাহিক, মাসিক",
    deepAttendanceBullets: [
      "প্রতি শ্রেণি ও শাখার ছবিসহ রোস্টার",
      "দৈনিক, সাপ্তাহিক ও মাসিক সারসংক্ষেপ",
      "শিক্ষক ও কর্মচারীদের উপস্থিতি",
      "ZK বায়োমেট্রিক ডিভাইস অটো-সিঙ্ক",
      "অ্যাডমিনের জন্য লাইভ ট্রেন্ড ড্যাশবোর্ড",
      "সাথে সাথে অনুপস্থিত ও উপস্থিতি রিপোর্ট",
    ],
    deepFeesTitle: "ফি ও পেমেন্ট",
    deepFeesDesc:
      "ফি হেড থেকে আদায় বিশ্লেষণ — প্রতিটি লেনদেন ট্র্যাক, ইনভয়েস ও রিপোর্টসহ।",
    deepFeesStat: "৪",
    deepFeesStatLabel: "পেমেন্ট চ্যানেল",
    deepFeesBullets: [
      "ফি হেড ও শ্রেণিভিত্তিক বণ্টন",
      "বাকি ট্র্যাকিং ও বকেয়া রিপোর্ট",
      "আদায় ড্যাশবোর্ড ও পরিসংখ্যান",
      "বিকাশ · নগদ · রকেট · কার্ড",
      "প্রতিটি লেনদেনের ইনভয়েস",
      "কর্মচারী পেরোল ও খরচের হিসাব",
    ],
    deepAdmissionTitle: "ভর্তি ও শিক্ষার্থী রেকর্ড",
    deepAdmissionDesc:
      "প্রথম অনুসন্ধান থেকে ভর্তি পর্যন্ত — একটি মসৃণ, সম্পূর্ণ ডিজিটাল ভর্তি প্রক্রিয়া।",
    deepAdmissionStat: "১-ক্লিক",
    deepAdmissionStatLabel: "অনুমোদন → ভর্তি",
    deepAdmissionBullets: [
      "ভর্তি ফর্ম ও অনুসন্ধান ফলো-আপ",
      "অনুমোদন দিলেই শিক্ষার্থী ভর্তি",
      "ছবিসহ প্রোফাইল, রোল ও অভিভাবক",
      "শ্রেণি · শাখা · শিফট বিন্যাস",
      "প্রমোশন ও তাৎক্ষণিক শিক্ষার্থী খোঁজ",
      "প্রিন্টযোগ্য প্রোফাইল ও আইডি কার্ড",
    ],
    deepCommunicationTitle: "যোগাযোগ ও কমিউনিটি",
    deepCommunicationDesc:
      "অভিভাবক ও কর্মীদের সবসময় জানান ও যুক্ত রাখুন — প্রতিটি চ্যানেলে দ্বিমুখী যোগাযোগের মাধ্যমে।",
    deepCommunicationStat: "৩",
    deepCommunicationStatLabel: "সম্প্রচার চ্যানেল",
    deepCommunicationBullets: [
      "নোটিশ বোর্ড ও ইভেন্ট ক্যালেন্ডার",
      "এসএমএস · ইমেইল · হোয়াটসঅ্যাপ সম্প্রচার",
      "অভিভাবকের সাথে দ্বিমুখী কথোপকথন",
      "সমাধান ট্র্যাকিংসহ অভিযোগ বক্স",
      "সাপোর্ট টিকেট ও ঘোষণা",
      "সদস্য ভূমিকাসহ কমিটি",
    ],
    deepCampusTitle: "ক্যাম্পাস কার্যক্রম",
    deepCampusDesc:
      "লাইব্রেরি, ট্রান্সপোর্ট, হোস্টেল, ইনভেন্টরি ও এইচআর — ক্যাম্পাস কার্যক্রমের প্রতিটি অংশ এক পোর্টালে।",
    deepCampusStat: "৫+",
    deepCampusStatLabel: "কার্যক্রমের মডিউল",
    deepCampusBullets: [
      "লাইব্রেরি ইস্যু, ফেরত ও সদস্য",
      "ট্রান্সপোর্ট রুট ও সদস্যপদ",
      "হোস্টেল রুম ও সিট ব্যবস্থাপনা",
      "QR-যাচাইকৃত রিপোর্টসহ ইনভেন্টরি",
      "এইচআর, বিভাগ ও পেরোল",
      "সার্টিফিকেট ও প্রতিযোগিতা",
    ],

    /* ---- শেষ কল-টু-অ্যাকশন ---- */
    ctaTitle: "আপনার প্রতিষ্ঠান IncrelogEMS-এ চালাতে প্রস্তুত?",
    ctaSubtitle:
      "কয়েক মিনিটেই নিবন্ধন — প্যাকেজ বেছে নিন, ক্যাম্পাস যোগ করুন এবং একই দিনে চালু হয়ে যান। প্রথম ডেটা মাইগ্রেশন আমরা ফ্রি করে দিই।",

    /* ---- প্রাইসিং কার্ড সুবিধা ---- */
    plansTagline: "যে প্যাকেজই বেছে নিন — সব ফিচারই আনলক, সাথে থাকছে নিয়মিত আপডেট।",
    planPerk: "সব ফিচার আনলক · নিয়মিত আপডেট",

    /* ---- ডেমো অনুরোধ সেকশন ---- */
    demoBadge: "ডেমো রিকোয়েস্ট",
    demoTitle: "IncrelogEMS-এর লাইভ ডেমো নিন — সম্পূর্ণ বিনামূল্যে",
    demoTypeKgPrimary: "কিন্ডারগার্টেন/প্রাইমারি স্কুল",
    demoTypeHighSchool: "হাই স্কুল",
    demoTypePrimaryHigh: "প্রাইমারি ও হাই স্কুল",
    demoTypeCollegeUni: "কলেজ ও বিশ্ববিদ্যালয়",
    demoTypeCoaching: "কোচিং",
    demoTypeMadrasha: "মাদ্রাসা",
    demoSubtitle:
      "আপনার প্রতিষ্ঠানের চাহিদা অনুযায়ী পরিচালিত একটি গাইডেড ডেমো। ক্যাম্পাস সম্পর্কে কিছু তথ্য জানান — বাকি সবকিছু আয়োজন করবে আমরা।",
    demoPoint1: "অভিজ্ঞ প্রোডাক্ট বিশেষজ্ঞের পরিচালনায় ৩০ মিনিটের লাইভ ওয়াকথ্রু",
    demoPoint2: "প্রতিষ্ঠানের ধরন, আকার ও কার্যপ্রবাহ অনুযায়ী কাস্টমাইজড ডেমো",
    demoPoint3: "কোনো বাধ্যবাধকতা নেই — লাইভ দেখার পরই সিদ্ধান্ত নিন",
    demoName: "আপনার নাম",
    demoEmail: "কাজের ইমেইল",
    demoPhone: "ফোন (ঐচ্ছিক)",
    demoInstitution: "প্রতিষ্ঠানের নাম",
    demoType: "প্রতিষ্ঠানের ধরন",
    demoMessage: "কী দেখতে চান? (ঐচ্ছিক)",
    demoSubmit: "ফ্রি ডেমোর অনুরোধ করুন",
    demoSuccess: "আপনার অনুরোধ গৃহীত হয়েছে। আমাদের প্রতিনিধি ২৪ ঘণ্টার মধ্যে যোগাযোগ করবে।",
    demoError: "দুঃখিত! অনুরোধ পাঠানো যায়নি — অনুগ্রহ করে আবার চেষ্টা করুন।",
  },

  auth: {
    loginTitle: "স্বাগতম",
    loginBrandTitle: "আপনার পুরো প্রতিষ্ঠান চালান একটি সুন্দর প্ল্যাটফর্ম থেকেই।",
    loginBrandLine: "ভর্তি থেকে ফলাফল, ফি থেকে অভিভাবক — ক্যাম্পাসের সবকিছু, ইংরেজি ও বাংলায়।",
    loginBrandPoint1: "২০+ সংযুক্ত মডিউল — একটিই লগইন",
    loginBrandPoint2: "QR-যাচাইকৃত ডকুমেন্ট, A4 প্রিন্ট-রেডি",
    loginBrandPoint3: "ইংরেজি ও বাংলা — যখন ইচ্ছা বদলান",
    loginBrandFoot: "স্কুল, কলেজ, কোচিং ও মাদ্রাসার আস্থা",
    loginSubtitle: "আপনার ইনক্রিলগইএমএস অ্যাকাউন্টে লগইন করুন",
    registerTitle: "আপনার প্রতিষ্ঠান নিবন্ধন করুন",
    registerSubtitle:
      "একটি প্রতিষ্ঠান অ্যাকাউন্ট তৈরি করুন। কেন্দ্রীয় নিয়ন্ত্রক শীঘ্রই অনুমোদন করবেন।",
    institutionName: "প্রতিষ্ঠানের নাম",
    adminName: "প্রশাসকের নাম",
    adminEmail: "প্রশাসকের ইমেইল",
    confirmPassword: "পাসওয়ার্ড নিশ্চিত করুন",
    passwordMismatch: "পাসওয়ার্ড দুটি মিলছে না",
    emailExists: "এই ইমেইল দিয়ে ইতোমধ্যে একটি অ্যাকাউন্ট আছে",
    referralCode: "রেফারেল কোড",
    referralInvalid: "এই রেফারেল কোড পাওয়া যায়নি — মিলিয়ে নিন অথবা ঘরটি খালি রাখুন",
    loginFailed: "ভুল ইমেইল বা পাসওয়ার্ড",
    registerSuccess: "নিবন্ধন সফল! অনুগ্রহ করে লগইন করুন।",
    createAccount: "অ্যাকাউন্ট তৈরি করুন",
    haveAccount: "ইতোমধ্যে অ্যাকাউন্ট আছে?",
    noAccount: "অ্যাকাউন্ট নেই?",
    registerNow: "এখনই নিবন্ধন করুন",
    loginNow: "এখনই লগইন করুন",
    demoTitle: "ডেমো লগইন তথ্য",
    demoCentral: "কেন্দ্রীয় নিয়ন্ত্রক (IncrelogEMS)",
    demoInstitution: "প্রতিষ্ঠান (ডেমো হাই স্কুল)",
    demoStudent: "শিক্ষার্থী (ডেমো হাই স্কুল)",
    demoTeacher: "শিক্ষক (ডেমো হাই স্কুল)",
    demoSelect: "— একটি ডেমো অ্যাকাউন্ট নির্বাচন করুন —",
    demoGroupAdmins: "অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট",
    demoGroupMembers: "মেম্বার অ্যাকাউন্ট (প্রতিষ্ঠান কোড · ইউজারনেম)",
    demoPrimary: "প্রাথমিক বিদ্যালয় অ্যাডমিন",
    demoKindergarten: "কিন্ডারগার্টেন অ্যাডমিন",
    demoCollege: "কলেজ অ্যাডমিন",
    demoCampusCollege: "কলেজ অ্যাডমিন — ক্যাম্পাস মডিউল (এইচএসসি · বিবিএ)",
    demoCampusUniversity: "বিশ্ববিদ্যালয় অ্যাডমিন — ক্যাম্পাস মডিউল (সিএসই)",
    demoParent: "অভিভাবক (ডেমো হাই স্কুল)",
    demoStaff: "স্টাফ (ডেমো হাই স্কুল)",
    institutionCode: "প্রতিষ্ঠান কোড",
    institutionCodeHint:
      "শিক্ষার্থী, শিক্ষক, অভিভাবক ও কর্মচারী: প্রতিষ্ঠান কোড দিন এবং ইউজারনেম দিয়ে লগইন করুন।",
    searchInstitution: "প্রতিষ্ঠান খুঁজুন",
    backToAdmin: "অ্যাডমিন লগইনে ফিরে যান",
    searchTitle: "আপনার প্রতিষ্ঠান খুঁজুন",
    searchPlaceholder: "প্রতিষ্ঠানের নাম লিখুন…",
    searchHint: "নাম দিয়ে খুঁজুন, প্রতিষ্ঠান নির্বাচন করে এগিয়ে যান — কোড স্বয়ংক্রিয়ভাবে পূরণ হবে।",
    searchNoResults: "কোনো প্রতিষ্ঠান পাওয়া যায়নি",
    searchMinChars: "কমপক্ষে ২ অক্ষর লিখুন…",
    searchSearching: "খোঁজা হচ্ছে…",
    searchSelect: "নির্বাচন করে এগিয়ে যান",
    username: "ইউজারনেম / আইডি",
    usernameRequired: "প্রতিষ্ঠান কোড দিলে ইউজারনেম দিতে হবে",
    accountDisabled: "এই অ্যাকাউন্টটি প্রতিষ্ঠান কর্তৃক নিষ্ক্রিয় করা হয়েছে। প্রতিষ্ঠানের অ্যাডমিনের সাথে যোগাযোগ করুন।",
    studentInactive: "এই শিক্ষার্থী আর সক্রিয় নন। প্রতিষ্ঠানের অ্যাডমিনের সাথে যোগাযোগ করুন।",
    invalidCode: "এই কোডে কোনো নিবন্ধিত প্রতিষ্ঠান পাওয়া যায়নি",
    institutionInactive: "এই প্রতিষ্ঠান এখনো সক্রিয় নয়",
    demoExpired:
      "আপনার ডেমো অ্যাক্সেসের মেয়াদ শেষ হয়ে গেছে — ডেমোটি সীমিত সময়ের জন্য দেওয়া হয়েছিল। মেয়াদ বাড়ানোর জন্য আমাদের টিমের সাথে যোগাযোগ করুন অথবা প্যাকেজগুলো দেখুন।",
    demoPendingNote:
      "আপনার প্রতিষ্ঠান নিবন্ধিত হয়েছে। কেন্দ্রীয় নিয়ন্ত্রক শীঘ্রই অনুমোদন করবেন।",
    forgotLink: "পাসওয়ার্ড ভুলে গেছেন?",
    forgot: {
      title: "পাসওয়ার্ড রিসেট করুন",
      subtitle1: "রিকভারি শুরু করতে আপনার অ্যাকাউন্ট শনাক্ত করুন।",
      subtitle2: "কোডটি কোথায় পাঠানো হবে তা বেছে নিন।",
      subtitle3: "আপনার অ্যাকাউন্টের জন্য নতুন পাসওয়ার্ড দিন।",
      subtitle4: "সব হয়ে গেছে।",
      step1: "অ্যাকাউন্ট",
      step2: "যাচাই",
      step3: "নতুন পাসওয়ার্ড",
      findAccount: "অ্যাকাউন্ট খুঁজুন",
      accountFound: "অ্যাকাউন্ট পাওয়া গেছে — ডেলিভারি চ্যানেল বেছে নিন",
      chooseChannel: "কোডটি কীভাবে পাঠাব?",
      viaEmail: "ইমেইল",
      viaSms: "এসএমএস",
      sendCode: "কোড পাঠান",
      codeSentEmail: "৬ সংখ্যার কোড পাঠানো হয়েছে —",
      codeSentSms: "৬ সংখ্যার কোড পাঠানো হয়েছে —",
      expiresIn: "কোডটি মেয়াদ শেষ হবে {time} এ",
      codeExpired: "এই কোডের মেয়াদ শেষ — আবার পাঠান",
      verify: "কোড যাচাই করুন",
      resend: "আবার কোড পাঠান",
      resendIn: "{sec} সেকেন্ড পর আবার পাঠানো যাবে",
      resent: "একটি নতুন কোড পাঠানো হয়েছে।",
      useDifferentAccount: "অন্য অ্যাকাউন্ট ব্যবহার করুন",
      newPassword: "নতুন পাসওয়ার্ড",
      confirmPassword: "নতুন পাসওয়ার্ড নিশ্চিত করুন",
      passwordHint: "কমপক্ষে ৬ অক্ষর।",
      resetButton: "পাসওয়ার্ড রিসেট করুন",
      successTitle: "পাসওয়ার্ড পরিবর্তন হয়েছে!",
      successNote: "আপনার পাসওয়ার্ড পরিবর্তন করা হয়েছে। এখন নতুন পাসওয়ার্ড দিয়ে লগইন করতে পারবেন।",
      backToLogin: "লগইনে ফিরে যান",
      devCode: "ডেভেলপমেন্ট মোড — আপনার কোড",
      errIdentify: "এই তথ্যের সাথে কোনো সক্রিয় অ্যাকাউন্ট মেলেনি। প্রতিষ্ঠান কোড / ইউজারনেম / ইমেইল যাচাই করুন।",
      errExpired: "এই রিকভারি সেশনের মেয়াদ শেষ। আবার শুরু করুন।",
      errChannel: "আপনার অ্যাকাউন্টে এই চ্যানেলটি উপলব্ধ নয়।",
      errNotConfigured: "OTP পাঠানোর ব্যবস্থা এখনো কনফিগার করা হয়নি। অনুগ্রহ করে অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।",
      errCooldown: "নতুন কোড চাইতে কিছুক্ষণ অপেক্ষা করুন।",
      errTooMany: "অনেকবার কোড চাওয়া হয়েছে। এক ঘণ্টা পর চেষ্টা করুন।",
      errOtpExpired: "সেই কোডের মেয়াদ শেষ হয়ে গেছে। নতুন কোড চান।",
      errInvalidCode: "ভুল কোড। আবার চেষ্টা করুন।",
      errAttempts: "অনেকবার ভুল হয়েছে। নতুন কোড চান।",
      errShortPassword: "পাসওয়ার্ড কমপক্ষে ৬ অক্ষরের হতে হবে।",
      errMismatch: "পাসওয়ার্ড দুটি মিলছে না।",
      errSend: "কোডটি পাঠানো যায়নি। আবার চেষ্টা করুন বা অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।",
      errTarget: "আগে একটি টেস্ট প্রাপক লিখুন।",
      errNoChannels: "এই অ্যাকাউন্টে কোনো ইমেইল বা ফোন নম্বর নেই। অনুগ্রহ করে অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।",
    },
  },

  notify: {
    title: "ইমেইল / এসএমএস (OTP) ডেলিভারি",
    subtitle: "আপনার ব্যবহারকারীদের কাছে পাসওয়ার্ড-রিসেট কোড পাঠাতে ব্যবহৃত ক্রেডেনশিয়াল",
    centralTitle: "কেন্দ্রীয় ইমেইল / এসএমএস (OTP) ডেলিভারি",
    centralSubtitle:
      "প্ল্যাটফর্ম ক্রেডেনশিয়াল — কেন্দ্রীয় অ্যাকাউন্টের জন্য এবং নিজস্ব ব্যবস্থা নেই এমন প্রতিষ্ঠানের ফলব্যাক হিসেবে ব্যবহৃত",
    mailTitle: "ইমেইল (SMTP)",
    mailNotSet: "কনফিগার করা হয়নি",
    smtpHost: "SMTP হোস্ট",
    smtpPort: "পোর্ট",
    smtpUser: "ইউজারনেম",
    smtpPass: "পাসওয়ার্ড",
    fromEmail: "প্রেরকের ইমেইল",
    fromName: "প্রেরকের নাম",
    smsTitle: "এসএমএস গেটওয়ে",
    smsNotSet: "কনফিগার করা হয়নি",
    smsApiUrl: "API URL",
    smsMethod: "মেথড",
    smsSender: "সেন্ডার আইডি",
    smsAuthUser: "API ইউজারনেম",
    smsAuthPass: "API পাসওয়ার্ড / কী",
    smsBody: "POST বডি টেমপ্লেট",
    smsHeaders: "কাস্টম হেডার",
    smsPlaceholderHint:
      "প্রতিবার পাঠানোর সময় {phone} {message} {sender} প্লেসহোল্ডারগুলো প্রতিস্থাপিত হয়; বডি খালি রাখলে ডিফল্ট phone={phone}&message={message} ব্যবহৃত হবে।",
    activeLabel: "সক্রিয়",
    usingOwn: "প্রতিষ্ঠানের সেটিংস ব্যবহৃত হচ্ছে",
    usingCentral: "কেন্দ্রীয় প্ল্যাটফর্ম সেটিংস ব্যবহৃত হচ্ছে",
    notConfigured: "কনফিগার করা হয়নি",
    fallbackHint:
      "এই প্রতিষ্ঠানের কোনো সক্রিয় ক্রেডেনশিয়াল না থাকলে কেন্দ্রীয় প্ল্যাটফর্ম সেটিংস দিয়ে পাসওয়ার্ড-রিসেট কোড পাঠানো হয়।",
    testSend: "টেস্ট",
    testToEmail: "test@example.com",
    testToPhone: "+8801XXXXXXXXX",
    testSent: "টেস্ট বার্তা পাঠানো হয়েছে — ইনবক্স/ফোন দেখুন।",
    mailSaved: "ইমেইল সেটিংস সংরক্ষিত হয়েছে।",
    smsSaved: "এসএমএস সেটিংস সংরক্ষিত হয়েছে।",
    errRequired: "প্রয়োজনীয় ঘরগুলো পূরণ করুন (হোস্ট, প্রেরকের ইমেইল, পাসওয়ার্ড / API URL)।",
    errNotConfigured: "টেস্ট করার মতো কিছু সক্রিয় নেই — আগে সেটিংস সংরক্ষণ ও সক্রিয় করুন।",
    errSend: "টেস্ট ব্যর্থ — ক্রেডেনশিয়াল যাচাই করে আবার চেষ্টা করুন।",
    errTarget: "আগে একটি টেস্ট প্রাপক লিখুন।",
    verificationTitle: "নথি যাচাইকরণ (QR)",
    verificationDefault: "ডিফল্ট হিসেবে সব নথি সক্রিয়",
    verificationCentralHint: "নিজস্ব সেটিংস নেই এমন প্রতিষ্ঠানের জন্য প্ল্যাটফর্ম ফলব্যাক",
    verificationStats: "{codes}টি কোড · {scans}বার স্ক্যান",
    verificationIssueHint:
      "কোনো নথি বন্ধ করলে সেটির জন্য নতুন যাচাইকরণ কোড/QR ইস্যু বন্ধ হবে; আগে ছাপা কোডগুলো প্রকাশ্যে যাচাই হতেই থাকবে।",
    verificationSaved: "যাচাইকরণ সেটিংস সংরক্ষিত হয়েছে।",
    verifyResult: "পরীক্ষার ফলাফল / মার্কশিট",
    verifySchedule: "পরীক্ষার রুটিন রিপোর্ট",
    verifyInventory: "ইনভেন্টরি রিপোর্ট",
    whatsappTitle: "হোয়াটসঅ্যাপ ইন্টিগ্রেশন",
    whatsappNotSet: "কনফিগার করা হয়নি",
    waApiUrl: "API URL",
    waMethod: "মেথড",
    waSender: "সেন্ডার / ফোন নাম্বার আইডি",
    waToken: "অথ টোকেন / API কী",
    waBody: "POST বডি টেমপ্লেট",
    waHeaders: "কাস্টম হেডার",
    waPlaceholderHint:
      "প্রতিবার পাঠানোর সময় {phone} {message} {sender} প্লেসহোল্ডারগুলো প্রতিস্থাপিত হয়; বডি খালি রাখলে ডিফল্ট phone={phone}&message={message} ব্যবহৃত হবে। Meta Cloud API, Twilio বা যেকোনো BSP-র সাথে চলে — প্রোভাইডার অনুযায়ী JSON বডি ও Content-Type হেডার দিন।",
    waSaved: "হোয়াটসঅ্যাপ সেটিংস সংরক্ষিত হয়েছে।",
    templatesTitle: "প্রিমিয়াম ইমেইল টেমপ্লেট",
    templatesSubtitle: "এই প্ল্যাটফর্ম থেকে প্রেরিত ব্র্যান্ডেড ইমেইলগুলো — চালুর আগে প্রিভিউ দেখে নিন",
    tplDemoName: "ডেমো অ্যাক্সেস",
    tplDemoDesc: "ডেমো অনুরোধের উত্তরে লগইন তথ্যসহ ইমেইল",
    tplPaymentName: "পেমেন্ট গ্রহণ",
    tplPaymentDesc: "পেমেন্ট গ্রহণের ধন্যবাদ রিসিট",
    tplCredentialName: "লগইন ক্রেডেনশিয়াল",
    tplCredentialDesc: "প্রতিষ্ঠান অ্যাডমিন অ্যাকাউন্ট / পাসওয়ার্ড রিসেট",
    tplWelcomeName: "নিবন্ধন স্বাগতম",
    tplWelcomeDesc: "নতুন নিবন্ধিত প্রতিষ্ঠানের জন্য ধন্যবাদ ইমেইল",
    tplPreview: "প্রিভিউ",
  },

  analytics: {
    title: "গুগল অ্যানালিটিক্স",
    subtitle: "আপনার GA4 প্রপার্টি সংযোগ করুন — ভিজিটর ট্র্যাক করুন এবং লাইভ রিপোর্ট এখানেই দেখুন",
    measurementId: "মেজারমেন্ট আইডি (G-XXXXXXXXXX)",
    measurementHint: "সাইটজুড়ে gtag.js চালু হবে এবং গুগল অ্যানালিটিক্স ভিজিট সংগ্রহ শুরু করবে",
    propertyId: "GA4 প্রপার্টি আইডি",
    propertyHint: "শুধু সংখ্যা — GA Admin → Property Settings থেকে",
    clientEmail: "সার্ভিস অ্যাকাউন্ট ইমেইল",
    clientHint: "GA Admin → Property Access Management-এ এই ইমেইলটি Viewer হিসেবে যোগ করুন",
    privateKey: "সার্ভিস অ্যাকাউন্ট প্রাইভেট কী",
    keyPlaceholder: "•••••••• — আগের কী রাখতে খালি রাখুন",
    activeLabel: "সক্রিয়",
    saved: "গুগল অ্যানালিটিক্স সেটিংস সংরক্ষিত হয়েছে",
    loadStats: "পরিসংখ্যান লোড করুন",
    statsTitle: "শেষ ২৮ দিন",
    activeUsers: "সক্রিয় ব্যবহারকারী",
    sessions: "সেশন",
    pageViews: "পেজ ভিউ",
    bounceRate: "বাউন্স রেট",
    avgDuration: "গড় সেশন",
    topPages: "শীর্ষ পেজ",
    topCountries: "শীর্ষ দেশ",
    views: "বার দেখা",
    users: "জন",
    notConfigured: "পরিসংখ্যান লোড করতে প্রপার্টি আইডি ও সার্ভিস অ্যাকাউন্ট তথ্য সংরক্ষণ করুন",
    statsFailed: "পরিসংখ্যান লোড করা যায়নি — ক্রেডেনশিয়াল ও প্রপার্টি আইডি যাচাই করুন",
    noData: "এখনো কোনো তথ্য নেই — ট্র্যাকিং সক্রিয় হলে ভিজিট এখানে দেখা যাবে",
    setupGuide: "সেটআপ: Google Cloud-এ সার্ভিস অ্যাকাউন্ট তৈরি করুন, Analytics Data API চালু করুন, সেই ইমেইল GA4 প্রপার্টিতে Viewer হিসেবে যোগ করুন, তারপর তথ্যগুলো এখানে দিন।",
  },

  flowchartPage: {
    navLabel: "প্ল্যাটফর্ম ফ্লোচার্ট",
    title: "ইনক্রিলগইএমএস প্ল্যাটফর্ম ফ্লোচার্ট",
    subtitle: "একটি প্ল্যাটফর্ম কীভাবে শিক্ষার প্রতিটি স্তর পরিচালনা করে — কেন্দ্রীয় কর্তৃপক্ষ থেকে শুরু করে প্রতিটি স্টেকহোল্ডার পর্যন্ত",
    tier1Title: "কেন্দ্রীয় কর্তৃপক্ষ",
    tier1Desc: "প্রতিষ্ঠান অনুমোদন · প্যাকেজ · নেটওয়ার্ক পর্যবেক্ষণ",
    link1: "অনুমোদন ও তদারকি করে",
    tier2Title: "প্রতিষ্ঠান নেটওয়ার্ক",
    instPrimary: "প্রাথমিক বিদ্যালয়",
    instHigh: "মাধ্যমিক বিদ্যালয়",
    instCollege: "কলেজ",
    instUniversity: "বিশ্ববিদ্যালয়",
    branchChip: "মূল ক্যাম্পাস ও শাখা",
    link2: "একটি প্ল্যাটফর্ম · প্রতিটি স্তর",
    tier3Title: "একাডেমিক কোর ইঞ্জিন",
    step1: "ভর্তি",
    step2: "শিক্ষার্থী",
    step3: "একাডেমিক সেটআপ",
    step4: "পরীক্ষার সময়সূচি",
    step5: "নম্বর এন্ট্রি",
    step6: "স্বয়ংক্রিয় গ্রেডিং",
    step7: "ফলাফল ও ট্রান্সক্রিপ্ট",
    link3: "দৈনন্দিন কার্যক্রম চালায়",
    tier4Title: "অপারেশন ও অর্থ",
    opTransport: "পরিবহন",
    opTransportDesc: "রুট · ভাড়া · TrxID ডিজিটাল পেমেন্ট",
    opLibrary: "লাইব্রেরি",
    opLibraryDesc: "বই · ইস্যু ও ফেরত · সহজলভ্যতা",
    opHostel: "হোস্টেল",
    opHostelDesc: "কক্ষ · আবাসিক শিক্ষার্থী · উপস্থিতি",
    opAccounts: "হিসাব",
    opAccountsDesc: "আয়-ব্যয় · প্রিমিয়াম চার্ট",
    opInventory: "ইনভেন্টরি",
    opInventoryDesc: "সামগ্রী · রিপোর্ট · QR যাচাই",
    opNotices: "নোটিশ",
    opNoticesDesc: "ঘোষণা · ইভেন্ট · যোগাযোগ",
    link4: "সব স্টেকহোল্ডারকে সেবা দেয়",
    tier5Title: "স্টেকহোল্ডার",
    shAdmins: "প্রতিষ্ঠান প্রশাসক",
    shTeachers: "শিক্ষক",
    shStudents: "শিক্ষার্থী ও অভিভাবক",
    shMembers: "সেবা সদস্য",
    bandTitle: "প্রতিটি স্তরে বিল্ট-ইন",
    bandSecurity: "রোল-ভিত্তিক নিরাপত্তা",
    bandBilingual: "দ্বিভাষিক EN / বাংলা",
    bandMobile: "মোবাইল-ফার্স্ট UI",
    bandReports: "প্রিন্ট-রেডি রিপোর্ট",
    edgeTitle: "ইনক্রিলগইএমএস কেন শীর্ষে",
    edgeSubtitle: "যে মূল সুবিধাগুলো একে অন্য সব শিক্ষা ব্যবস্থাপনা সেবার চেয়ে এগিয়ে রাখে",
    f1Title: "সব স্তর, একটি প্ল্যাটফর্ম",
    f1Desc: "প্রাথমিক থেকে বিশ্ববিদ্যালয় — বেশিরভাগ সেবা একটি স্তরেই সীমাবদ্ধ; ইনক্রিলগইএমএস শাখাসহ সবকিছু এক সিস্টেমে চালায়।",
    f2Title: "বাংলাদেশী গ্রেডিং ব্যবস্থা",
    f2Desc: "স্কুল ও এইচএসসির জন্য বোর্ড GPA-5 স্কেল, কলেজ-বিশ্ববিদ্যালয়ের জন্য UGC GPA-4 সিজিপিএ — রিটেক, ড্রপড ও ইনকমপ্লিট হ্যান্ডলিংসহ।",
    f3Title: "ক্ল্যাশ-মুক্ত সময়সূচি",
    f3Desc: "পরীক্ষার কক্ষ, কোর্স রুটিন, শিক্ষক ও সময়ের দ্বন্দ্ব স্বয়ংক্রিয়ভাবে ধরা পড়ে — শিক্ষার্থীদের কাছে পৌঁছানোর আগেই।",
    f4Title: "অনুসরণযোগ্য ডিজিটাল পেমেন্ট",
    f4Desc: "bKash, Nagad, Rocket, কার্ড ও ব্যাংকে ভাড়া আদায় — প্রতিটি ডিজিটাল পেমেন্টে বাধ্যতামূলক ট্রানজেকশন আইডি।",
    f5Title: "ক্রস-টার্ম সিজিপিএ ও ট্রান্সক্রিপ্ট",
    f5Desc: "সেমিস্টারের ফলাফল সরাসরি লাইভ সিজিপিএতে যুক্ত হয়, আর বোর্ড-স্টাইল ট্রান্সক্রিপ্ট প্রতিষ্ঠানের ব্র্যান্ডিংসহ প্রিন্ট হয়।",
    f6Title: "সত্যিকারের দ্বিভাষিক সিস্টেম",
    f6Desc: "প্রতিটি স্ক্রিন, রিপোর্ট ও মার্কশিটে ইংরেজি ও বাংলা — শুধু মেনু নয়।",
    f7Title: "কেন্দ্র থেকে শাখা পর্যন্ত শাসন",
    f7Desc: "মূল প্রতিষ্ঠান শাখাগুলোকে পরীক্ষা অর্পণ করে এবং সময়সূচি ও ফলাফল প্রকাশের নিয়ন্ত্রণ নিজের হাতে রাখে।",
    f8Title: "প্রিমিয়াম অ্যানালিটিক্স ও রিপোর্ট",
    f8Desc: "লাখ-কোটি ফরম্যাটে চার্ট, ব্র্যান্ডেড প্রিন্টযোগ্য রিপোর্ট এবং বাস্তব শিক্ষা প্রতিষ্ঠানের অফিসের জন্য তৈরি মোবাইল-ফার্স্ট শিট।",
  },

  verifyPage: {
    title: "নথি যাচাই করুন",
    subtitle: "মার্কশিট, পরীক্ষার রুটিন বা ইনভেন্টরি রিপোর্টের সত্যতা যাচাই করুন",
    tabEnter: "কোড লিখুন",
    tabScan: "QR স্ক্যান",
    placeholder: "EMS-XXXX-XXXX",
    hint: "নথির QR-এর নিচে ছাপা কোডটি লিখুন — ড্যাশ ঐচ্ছিক।",
    verifyButton: "যাচাই",
    startCamera: "ক্যামেরা চালু করুন",
    stopCamera: "ক্যামেরা বন্ধ করুন",
    cameraError: "ক্যামেরা অনুপলব্ধ বা অনুমতি দেওয়া হয়নি।",
    retryCamera: "আবার চেষ্টা করুন",
    typeInstead: "বরং কোড লিখুন →",
    errBoundary: "যাচাইকরণে অপ্রত্যাশিত ত্রুটি হয়েছে। আবার চেষ্টা করুন — বা বরং কোড লিখে যাচাই করুন।",
    validTitle: "যাচাই সফল — নথিটি প্রকৃত",
    invalidTitle: "যাচাই ব্যর্থ",
    invalidNote: "এই কোডটি কোনো জারিকৃত নথির সাথে মেলেনি। লেখাটি যাচাই করুন বা প্রতিষ্ঠানের সাথে যোগাযোগ করুন।",
    kindResult: "পরীক্ষার ফলাফল / মার্কশিট",
    kindSchedule: "পরীক্ষার রুটিন",
    kindInventory: "ইনভেন্টরি রিপোর্ট",
    kindAdmitCard: "পরীক্ষার প্রবেশপত্র",
    examDates: "পরীক্ষার তারিখ",
    institution: "প্রতিষ্ঠান",
    exam: "পরীক্ষা",
    issuedOn: "ইস্যুর তারিখ",
    student: "শিক্ষার্থী",
    roll: "রোল",
    classLabel: "শ্রেণি",
    guardian: "অভিভাবক",
    guardianPhone: "অভিভাবকের ফোন",
    marks: "প্রাপ্ত নম্বর",
    grade: "গ্রেড",
    subjects: "বিষয় সংখ্যা",
    window: "পরীক্ষার সময়কাল",
    haveCodeLink: "ছাপা কোড আছে (EMS-XXXX-XXXX)? এখানে যাচাই করুন →",
    navLabel: "যাচাই করুন",
  },

  guide: {
    title: "ব্যবহার নির্দেশিকা",
    subtitle: "শুরু থেকে শেষ পর্যন্ত প্রতিটি মডিউল — কোথায় শুরু করবেন, কীভাবে চলে, কারা ব্যবহার করতে পারবেন",
    navLabel: "ব্যবহার নির্দেশিকা",
    accessibilityTitle: "ব্যবহারকারীর প্রবেশাধিকার",
    accessibilityHint: "নিচের প্রতিটি মডিউলে যারা প্রবেশ করতে পারেন তাদের ভূমিকা দেখানো হয়েছে — পাবলিক পেজে লগইন লাগে না।",
    startLabel: "শুরু",
    doneLabel: "সম্পন্ন",
  },

  connection: {
    offlineTitle: "আপনি অফলাইনে আছেন",
    offlineBody:
      "মনে হচ্ছে আপনার ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়েছে। আপনার দেওয়া তথ্য নিরাপদ আছে — স্বয়ংক্রিয়ভাবে পুনরায় সংযোগ পরীক্ষা করা হচ্ছে।",
    reconnecting: "পুনরায় সংযোগ হচ্ছে…",
    backOnline: "ইন্টারনেট ফিরে এসেছে",
  },

  trackPage: {
    title: "আবেদন ট্র্যাক করুন",
    subtitle: "রেফারেন্স নম্বর দিয়ে যাচাই করে ভর্তি আবেদনের অবস্থা, অপেক্ষমান অবস্থান ও ফি দেখুন",
    reference: "আবেদনের রেফারেন্স নং",
    contactLabel: "আবেদনে ব্যবহৃত ইমেইল / ফোন",
    contactPlaceholder: "আবেদন করার সময় ব্যবহৃত ইমেইল বা ফোন নম্বর",
    passwordLabel: "ট্র্যাকিং অ্যাকাউন্টের পাসওয়ার্ড (ঐচ্ছিক)",
    verifyHint:
      "আবেদনে ব্যবহৃত ইমেইল বা ফোন দিয়ে যাচাই করুন — অথবা আবেদনের সময় তৈরি করা ট্র্যাকিং অ্যাকাউন্টের পাসওয়ার্ড দিন।",
    lookupButton: "আবেদন খুঁজুন",
    errDisabled: "এই প্রতিষ্ঠান আবেদন ট্র্যাকিং চালু করেনি।",
    errInstitution: "এই কোডের কোনো সক্রিয় প্রতিষ্ঠান পাওয়া যায়নি।",
    errNotFound: "এই রেফারেন্স নম্বরে কোনো আবেদন পাওয়া যায়নি।",
    errVerify: "যাচাই ব্যর্থ — ইমেইল/ফোন বা পাসওয়ার্ড এই আবেদনের সাথে মেলেনি।",
    refLabel: "রেফারেন্স",
    positionLabel: "অপেক্ষমান তালিকায় অবস্থান",
    positionOf: "মোট {n} টি অপেক্ষমানের মধ্যে",
    feeVerifiedNote: "প্রতিষ্ঠান কর্তৃক পরিশোধ যাচাইকৃত",
    feeWhereHint: "নিচের যেকোনো অ্যাকাউন্টে ফি পরিশোধ করে লেনদেন আইডি জমা দিন — প্রতিষ্ঠান এটি যাচাই করবে।",
    gatewayLabel: "পেমেন্ট গেটওয়ে / মাধ্যম",
    submitPayment: "পেমেন্ট তথ্য জমা দিন",
    paymentSubmitted: "আপনার পেমেন্ট তথ্য জমা হয়েছে — প্রতিষ্ঠান এটি যাচাই করবে।",
    errNotDue: "এই আবেদনের ফি পরিশোধের অপেক্ষায় নেই।",
    trackAnother: "আরেকটি আবেদন খুঁজুন",
    notAppliedYet: "এখনো আবেদন করেননি?",
    trackCta: "আবেদন ট্র্যাক করুন →",
  },

  applyPage: {
    title: "ভর্তির আবেদন",
    subtitle: "আপনার পছন্দের প্রতিষ্ঠানে অনলাইনে আবেদন করুন — কোনো অ্যাকাউন্ট লাগবে না",
    navLabel: "ভর্তির আবেদন",
    stepInstitution: "প্রতিষ্ঠান",
    stepStudent: "শিক্ষার্থী",
    stepGuardian: "অভিভাবক ও যোগাযোগ",
    stepAddress: "ঠিকানা ও মন্তব্য",
    stepReview: "পর্যালোচনা",
    continueButton: "পরবর্তী",
    backButton: "পূর্ববর্তী",
    stepOf: "ধাপ {n}/{m}",
    stepInvalid: "চালিয়ে যেতে প্রয়োজনীয় ঘরগুলো পূরণ করুন।",
    reviewTitle: "পর্যালোচনা ও জমা",
    reviewHint: "জমা দেওয়ার আগে সবকিছু যাচাই করুন — কিছু পরিবর্তন করতে আগের ধাপে ফিরে যান।",
    step1Title: "আপনার প্রতিষ্ঠান খুঁজুন",
    step1Hint: "প্রতিষ্ঠানের কোড লিখুন, অথবা নাম দিয়ে খুঁজুন।",
    findButton: "প্রতিষ্ঠান খুঁজুন",
    orLabel: "অথবা",
    searchLabel: "নাম দিয়ে খুঁজুন",
    searchPlaceholder: "প্রতিষ্ঠানের নামের অন্তত ২ অক্ষর লিখুন…",
    searchEmpty: "কোনো মিলে যাওয়া প্রতিষ্ঠান পাওয়া যায়নি। প্রতিষ্ঠানের কোড দিয়ে চেষ্টা করুন।",
    notFound: "এই কোডের কোনো সক্রিয় প্রতিষ্ঠান পাওয়া যায়নি।",
    codeHint: "প্রতিষ্ঠানের কোড আইডি কার্ড ও ফি রসিদে ছাপা থাকে — অথবা প্রতিষ্ঠানকে জিজ্ঞাসা করুন।",
    chosenLabel: "যেখানে আবেদন করছেন",
    changeInstitution: "প্রতিষ্ঠান পরিবর্তন",
    submitButton: "আবেদন জমা দিন",
    successTitle: "আবেদন জমা হয়েছে!",
    successBody: "আপনার আবেদন {name} পেয়েছে। প্রতিষ্ঠান আপনার দেওয়া ফোন নম্বরে যোগাযোগ করবে।",
    referenceLabel: "রেফারেন্স নং",
    applyAnother: "অন্য প্রতিষ্ঠানে আবেদন",
    rateLimited: "এই ডিভাইস থেকে অনেক বেশি আবেদন জমা হয়েছে। কিছুক্ষণ পর আবার চেষ্টা করুন।",
    feeNoticeTitle: "আবেদন ফি",
    feeNoticeBody:
      "এই আবেদনের জন্য {amount} পরিমাণ এককালীন ফি নির্ধারিত। নিচের যেকোনো অ্যাকাউন্টে পরিশোধ করুন এবং লেনদেন আইডি (TrxID) সংরক্ষণ করুন — অনুমোদনের সময় প্রতিষ্ঠান এটি যাচাই করবে।",
    feeWhereTitle: "কোথায় পরিশোধ করবেন",
    feeSuccessDue:
      "অনুগ্রহ করে নিচের যেকোনো অ্যাকাউন্টে {amount} আবেদন ফি পরিশোধ করুন এবং লেনদেন আইডি সংরক্ষণ করুন — প্রতিষ্ঠান এটি যাচাই করবে।",
    emailSentNote: "রেফারেন্স নম্বর আপনার ইমেইলে পাঠানো হয়েছে",
    accountTitle: "একটি ট্র্যাকিং অ্যাকাউন্ট তৈরি করুন",
    accountHint:
      "এই আবেদনের ইমেইল ও এই পাসওয়ার্ড দিয়ে ট্র্যাক পেজে আবেদনের অবস্থা দেখতে পারবেন।",
  },

  central: {
    supportPage: {
      title: "সাপোর্ট প্যানেল",
      subtitle: "নিবন্ধিত প্রতিষ্ঠানের টিকেট ট্র্যাক করুন ও সমাধান করুন",
      totalTickets: "মোট টিকেট",
      allStatuses: "সব অবস্থা",
      institution: "প্রতিষ্ঠান",
      subjectLabel: "বিষয়",
      replies: "উত্তর",
      attachmentsLabel: "সংযুক্তি",
      lastUpdate: "সর্বশেষ আপডেট",
      conversation: "কথোপকথন",
      reportedOn: "জমার তারিখ",
      startProgress: "কাজ শুরু",
      resolve: "সমাধান",
      closeTicket: "বন্ধ",
      reopen: "পুনরায় খুলুন",
      updateLabel: "আপডেট পোস্ট করুন",
      postUpdate: "আপডেট পাঠান",
      markSolution: "সমাধান হিসেবে চিহ্নিত করুন (টিকেট সমাধান হয়)",
      updatePosted: "আপডেট পাঠানো হয়েছে",
      solutionSent: "সমাধান পাঠানো হয়েছে — টিকেট সমাধান হয়েছে",
      statusChanged: "টিকেটের অবস্থা আপডেট হয়েছে",
      noTickets: "কোনো সাপোর্ট টিকেট নেই",
      solution: "সমাধান",
      supportTeam: "সাপোর্ট টিম",
    },
    dashboard: {
      title: "কেন্দ্রীয় ড্যাশবোর্ড",
      welcome: "স্বাগতম",
      totalInstitutions: "মোট প্রতিষ্ঠান",
      pendingInstitutions: "অনুমোদনের অপেক্ষায়",
      activeSubscriptions: "চলমান সাবস্ক্রিপশন",
      pendingRequests: "অপেক্ষমাণ অনুরোধ",
      totalCollected: "মোট আদায়",
      totalDue: "মোট বাকি",
      recentPayments: "সাম্প্রতিক পেমেন্ট",
      revenueTrend: "আয়ের চিত্র (শেষ ৬ মাস)",
      academicItems: "একাডেমিক আইটেম",
      packagePlans: "প্যাকেজ প্ল্যান",
      quickActions: "দ্রুত কার্যক্রম",
      noPayments: "এখনো কোনো পেমেন্ট আদায় হয়নি",
    },
    packages: {
      title: "প্যাকেজ প্ল্যান",
      subtitle: "প্রতিটি প্রতিষ্ঠার ধরনের জন্য প্যাকেজ তৈরি ও ব্যবস্থাপনা করুন",
      newPackage: "নতুন প্যাকেজ",
      editPackage: "প্যাকেজ সম্পাদনা",
      /* referral program */
      referralTitle: "রেফারেল ছাড়",
      referralHint:
        "প্রতিটি সাবস্ক্রাইবার অন্য প্রতিষ্ঠান সম্পর্কে প্রচারের জন্য নিজের একটি রেফারেল কোড পায় — এই কোড দিয়ে নিবন্ধিত প্রতিষ্ঠান প্রথম প্যাকেজ ক্রয়ে এই শতাংশ ছাড় পাবে (০ দিলে সুবিধা বন্ধ)।",
      referralSaved: "রেফারেল ছাড় {pct}% নির্ধারিত হয়েছে",
      referralInvalid: "০ থেকে ৯০ এর মধ্যে ছাড়ের হার দিন",
      packageName: "প্যাকেজের নাম (ইংরেজি)",
      packageNameBn: "প্যাকেজের নাম (বাংলা)",
      priceBDT: "মূল্য (টাকা)",
      durationMonths: "মেয়াদ (মাস)",
      maxStudentsLabel: "সর্বোচ্চ শিক্ষার্থী",
      featuresLabel: "ফিচার — প্রতি লাইনে একটি (ইংরেজি)",
      featuresBnLabel: "ফিচার — প্রতি লাইনে একটি (বাংলা)",
      deactivate: "নিষ্ক্রিয় করুন",
      activate: "সক্রিয় করুন",
      cannotDelete: "এই প্যাকেজের অনুরোধ বা সাবস্ক্রিপশন আছে। এটি নিষ্ক্রিয় করুন।",
      planCreated: "প্যাকেজ সফলভাবে তৈরি হয়েছে",
      planUpdated: "প্যাকেজ সফলভাবে আপডেট হয়েছে",
      filterByType: "ধরন অনুযায়ী ফিল্টার",
      /* education-pattern pricing */
      heroBadge: "শিক্ষা প্যাটার্ন ভিত্তিক মূল্য",
      heroTitle: "একটি প্ল্যান, মূল্য আপনার শিক্ষা পদ্ধতি অনুযায়ী",
      heroText: "প্রতিটি প্যাটার্ন বহন করে সক্রিয় শিক্ষার্থী প্রতি — অন্য কিছু নয়। সরকারি প্রতিষ্ঠান পায় মাত্র ৳৩ হার; বেসরকারি স্কুল, কোচিং ও মাদ্রাসা বছরে পরিশোধে ১০% সাশ্রয় করে।",
      setupFeeNote: "এককালীন সেটআপ ফি",
      setupFeeValue: "৳৫,০০০ — শুধু প্রথম সাবস্ক্রিপশনের সাথে",
      monthlyToggle: "মাসিক",
      yearlyToggle: "বার্ষিক",
      saveBadge: "{pct}% ছাড়",
      studentsLabel: "শিক্ষার্থী",
      calculatorHint: "যেকোনো প্যাটার্ন হিসাব করুন — নিচের টোটাল সাথে সাথে আপডেট হবে",
      perStudentMonth: "/ শিক্ষার্থী / মাস",
      perStudentYear: "/ শিক্ষার্থী / বছর",
      yearlyOption: "বার্ষিক পরিশোধ",
      yearlyNowithDiscount: "১০% ছাড়সহ",
      monthlyTotal: "মাসিক",
      yearlyTotal: "বার্ষিক",
      groupGovernment: "সরকারি প্রতিষ্ঠান",
      groupSchools: "বেসরকারি স্কুল",
      groupHigher: "উচ্চ শিক্ষা",
      groupSpecial: "কোচিং ও মাদ্রাসা",
      govtBadge: "সরকারি হার",
      unlimitedStudents: "অসীম শিক্ষার্থী",
      subscribers: "সাবস্ক্রাইবার",
      legacyNote: "পুরনো প্ল্যান — প্রতিষ্ঠানগুলোকে দেখানো হয় না",
      estimateFor: "হিসাব",
      studentsWord: "শিক্ষার্থী",
      billingBasis: "বিলিং ভিত্তি",
      perStudentMonthBasis: "প্রতি শিক্ষার্থী / মাস",
      perStudentYearBasis: "প্রতি শিক্ষার্থী / বছর",
      ratePerStudent: "প্রতি শিক্ষার্থী হার (৳)",
      yearlyDiscount: "বার্ষিক ছাড় (%)",
      patternLabel: "শিক্ষা প্যাটার্ন",
      cycleLabel: "বিলিং সাইকেল",
      monthsShort: "মাস",
    },
    institutionsPage: {
      title: "প্রতিষ্ঠানসমূহ",
      subtitle: "নিবন্ধিত প্রতিষ্ঠান অনুমোদন, পর্যবেক্ষণ ও ব্যবস্থাপনা করুন",
      approve: "অনুমোদন করুন",
      suspend: "স্থগিত করুন",
      reactivate: "পুনরায় সক্রিয় করুন",
      approveConfirm: "এই প্রতিষ্ঠান অনুমোদন করবেন? এটি প্যাকেজের অনুরোধ পাঠাতে পারবে।",
      suspendConfirm: "এই প্রতিষ্ঠান স্থগিত করবেন? এর প্রশাসকরা নতুন অনুরোধ পাঠাতে পারবে না।",
      statusUpdated: "প্রতিষ্ঠানের অবস্থা আপডেট হয়েছে",
      governmentLabel: "সরকারি প্রতিষ্ঠান",
      governmentHint: "সরকারি প্রতিষ্ঠান বিশেষ ৳৩/শিক্ষার্থী হারের প্ল্যান পায়",
      addBranch: "ব্রাঞ্চ যোগ করুন",
      branchCreated: "ব্রাঞ্চ ও তার অ্যাডমিন লগইন তৈরি হয়েছে",
      branchOf: "ব্রাঞ্চ —",
      parentInstitution: "মূল প্রতিষ্ঠান (ব্র্যান্ড)",
      branchHint: "ব্রাঞ্চ মূল প্রতিষ্ঠানের ধরন ও ঠিকানা পায়। অ্যাডমিন উপরের ইমেইল ও পাসওয়ার্ড দিয়ে লগইন করবেন।",      manageClasses: "ক্লাসসমূহ",
      classesUpdated: "সংযুক্ত ক্লাস আপডেট হয়েছে",
      manageInfo: "প্রতিষ্ঠানের তথ্য",
      infoUpdated: "প্রতিষ্ঠানের তথ্য আপডেট হয়েছে",
      linkHelp: "যেসব ক্যাটালগ আইটেম এই প্রতিষ্ঠানের (বা ব্রাঞ্চের) সেগুলো টিক দিন। সংযুক্ত আইটেম শুধু এই প্রতিষ্ঠানের পোর্টালে দেখা যাবে — ব্রাঞ্চগুলো মূল প্রতিষ্ঠানের আইটেমও দেখবে।",
      linkedTo: "সংযুক্ত আছে",
      admin: "প্রশাসক",
      subscriptions: "সাবস্ক্রিপশন",
      registeredOn: "নিবন্ধনের তারিখ",
      noInstitutions: "এখনো কোনো প্রতিষ্ঠান নিবন্ধিত হয়নি",
      copyCode: "প্রতিষ্ঠান কোড কপি করতে ক্লিক করুন",
      /* referral code management (central credential) */
      referralCode: "রেফারেল কোড",
      referralManage: "রেফারেল",
      referralCurrent: "বর্তমান কোড",
      referralCustomLabel: "কাস্টম কোড (৪–২০ অক্ষর, সংখ্যা বা ড্যাশ)",
      referralGenerate: "নতুন কোড তৈরি করুন",
      referralUpdated: "রেফারেল কোড হালনাগাদ হয়েছে",
      referralTaken: "এই রেফারেল কোডটি অন্য একটি প্রতিষ্ঠান ব্যবহার করছে",
      referralFormat: "৪–২০ অক্ষর, সংখ্যা বা ড্যাশ ব্যবহার করুন — শুরুতে অক্ষর বা সংখ্যা থাকতে হবে",
      referralHint:
        "এই প্রতিষ্ঠানটি তার কোড শেয়ার করে যাতে অন্য প্রতিষ্ঠান এটি দিয়ে নিবন্ধন করতে পারে — নিবন্ধনকারীরা প্রথম প্যাকেজ ক্রয়ে প্ল্যাটফর্মের রেফারেল ছাড় (ল্যান্ডিং প্রাইসিং-এ নির্ধারিত) পায়।",
      sameAsParent: "মূল প্রতিষ্ঠানের মতো",
    },
    monitoringPage: {
      title: "প্রতিষ্ঠান মনিটরিং",
      subtitle: "জেলা ও উপজেলাভিত্তিক পরীক্ষা, ফি আদায়, উপস্থিতি, নোটিশ, ইভেন্ট ও অভিযোগ পর্যবেক্ষণ",
      filters: "ফিল্টার",
      period: "সময়কাল",
      scopeSummary: "পরিসর",
      districtsCovered: "জেলা",
      subDistrictsCovered: "উপজেলা",
      noInstitutionsInScope: "এই এলাকায় এখনো কোনো প্রতিষ্ঠান নেই",
      drillTitle: "এলাকাভিত্তিক সারসংক্ষেপ",
      drillHintDistrict: "উপজেলা দেখতে জেলার উপর ক্লিক করুন",
      drillHintSubDistrict: "প্রতিষ্ঠান দেখতে উপজেলার উপর ক্লিক করুন",
      drillHintInstitution: "নির্বাচিত এলাকার প্রতিষ্ঠানসমূহ",
      allDistricts: "সব জেলা",
      allSubDistricts: "সব উপজেলা",
      backToAllDistricts: "← সব জেলা",
      backToDistrict: "← সব উপজেলা",
      tabOverview: "সারসংক্ষেপ",
      tabExams: "পরীক্ষা ও ফলাফল",
      tabFees: "ফি আদায়",
      tabAttendance: "উপস্থিতি",
      tabCommunication: "নোটিশ, ইভেন্ট ও অভিযোগ",
      openComplaints: "অমীমাংসিত অভিযোগ",
      examStatusSummary: "পরীক্ষার অবস্থা",
      publishedSchedules: "রুটিন প্রকাশিত",
      resultsPublished: "ফলাফল প্রকাশিত",
      recentExams: "পরীক্ষাসমূহ",
      noExams: "এই পরিসরে কোনো পরীক্ষা তৈরি হয়নি",
      examResultsStats: "ফলাফলের পরিসংখ্যান",
      resultsHint: "প্রতিটি পরীক্ষার গড়, সর্বোচ্চ ও সর্বনিম্ন প্রাপ্ত নম্বরের শতকরা (প্রদত্ত নম্বর থেকে)",
      marksEntered: "নম্বর প্রদত্ত",
      noResults: "এই পরিসরে কোনো পরীক্ষার নম্বর দেওয়া হয়নি",
      schedulePublished: "রুটিন প্রকাশিত",
      feeStatsTitle: "ফি আদায়ের পরিসংখ্যান",
      collectedInPeriod: "সময়কালে আদায়",
      collectionsInPeriod: "আদায়ের সংখ্যা",
      byMethod: "মাধ্যম অনুযায়ী",
      monthlyTrend: "আদায় (শেষ ৬ মাস)",
      topInstitutions: "শীর্ষ প্রতিষ্ঠান",
      noFees: "এই পরিসরে কোনো ফি আদায় হয়নি",
      transactions: "লেনদেন",
      studentAttendance: "শিক্ষার্থীর উপস্থিতি",
      teacherAttendance: "শিক্ষকের উপস্থিতি",
      attendanceTrend: "উপস্থিতির প্রবণতা",
      attendanceByInstitution: "প্রতিষ্ঠান অনুযায়ী",
      noAttendance: "এই সময়কালে কোনো উপস্থিতি রেকর্ড নেই",
      studentsMarked: "রেকর্ড",
      activeNotices: "সক্রিয় নোটিশ",
      upcomingEvents: "আসন্ন ইভেন্ট",
      complaintStatusSummary: "অবস্থা অনুযায়ী অভিযোগ",
      recentNotices: "সাম্প্রতিক নোটিশ",
      noNotices: "কোনো নোটিশ প্রকাশিত হয়নি",
      noEvents: "কোনো আসন্ন ইভেন্ট নেই",
      noComplaints: "কোনো অভিযোগ জমা দেওয়া হয়নি",
      venue: "স্থান",
      pinned: "পিন করা",
    },
    accountsPage: {
      title: "অ্যাকাউন্ট",
      subtitle: "প্রতিটি প্রতিষ্ঠানের লগইন তথ্য এক জায়গায় — যেকোনো অ্যাকাউন্টের পাসওয়ার্ড রিসেট করুন",
      loginEmail: "লগইন অ্যাকাউন্ট",
      role: "ভূমিকা",
      centralController: "IncrelogEMS কেন্দ্রীয়",
      noAccounts: "কোনো অ্যাকাউন্ট পাওয়া যায়নি",
      resetPassword: "পাসওয়ার্ড রিসেট করুন",
      newPassword: "নতুন পাসওয়ার্ড",
      resetHint: "পাসওয়ার্ড এনক্রিপ্টেড থাকে — দেখা যায় না, শুধু পরিবর্তন করা যায়। নতুন পাসওয়ার্ড প্রতিষ্ঠানের সাথে নিরাপদে শেয়ার করুন।",
      resetConfirm: "এই পাসওয়ার্ড রিসেট করবেন? পুরোনোটি সাথে সাথে বাতিল হয়ে যাবে।",
      passwordReset: "পাসওয়ার্ড সফলভাবে রিসেট হয়েছে",
    },
    requestsPage: {
      title: "প্যাকেজ অনুরোধসমূহ",
      subtitle: "অনুরোধ অনুমোদন করলে প্রতিষ্ঠানের জন্য সাবস্ক্রিপশন তৈরি হবে",
      requestedBy: "অনুরোধকারী",
      requestedPackage: "অনুরোধকৃত প্যাকেজ",
      approve: "অনুমোদন করুন",
      reject: "প্রত্যাখ্যান করুন",
      approveConfirm: "এই অনুরোধ অনুমোদন করবেন? সাবস্ক্রিপশন তৈরি হবে এবং পেমেন্ট বাকি থাকবে।",
      rejectConfirm: "এই অনুরোধ প্রত্যাখ্যান করবেন? প্রতিষ্ঠানকে আবার অনুরোধ করতে হবে।",
      approved: "অনুরোধ অনুমোদিত — সাবস্ক্রিপশন তৈরি হয়েছে",
      referralApplied: "রেফারেল ছাড় {pct}% প্রয়োগ হয়েছে ({amt} ছাড়)",
      rejected: "অনুরোধ প্রত্যাখ্যাত হয়েছে",
      noRequests: "এখনো কোনো প্যাকেজ অনুরোধ নেই",
      decidedOn: "সিদ্ধান্তের তারিখ",
    },
    profilePage: {
      title: "কেন্দ্রীয় ক্রেডেনশিয়াল প্রোফাইল",
      subtitle: "কেন্দ্রীয় অ্যাডমিনের নিজের লগইন ক্রেডেনশিয়াল দেখুন ও হালনাগাদ করুন",
      infoTitle: "ক্রেডেনশিয়াল তথ্য",
      role: "ভূমিকা",
      lastLogin: "সর্বশেষ লগইন",
      createdAt: "তৈরির তারিখ",
      never: "কখনো নয়",
      updateTitle: "প্রোফাইল হালনাগাদ",
      updateHint: "ইমেইল পরিবর্তন করলে কেন্দ্রীয় প্যানেলে লগইনের ক্রেডেনশিয়ালও পরিবর্তিত হবে।",
      changeTitle: "পাসওয়ার্ড পরিবর্তন",
      currentPassword: "বর্তমান পাসওয়ার্ড",
      newPassword: "নতুন পাসওয়ার্ড",
      confirmNewPassword: "নতুন পাসওয়ার্ড নিশ্চিত করুন",
      passwordHint: "কমপক্ষে ৬ অক্ষর।",
      updated: "প্রোফাইল হালনাগাদ হয়েছে।",
      passwordUpdated: "পাসওয়ার্ড পরিবর্তন হয়েছে।",
      wrongPassword: "বর্তমান পাসওয়ার্ড সঠিক নয়।",
      updateBtn: "প্রোফাইল হালনাগাদ করুন",
      changeBtn: "পাসওয়ার্ড পরিবর্তন করুন",
    },
    uploadPolicyPage: {
      title: "আপলোড পলিসি",
      subtitle: "প্রতিষ্ঠানের সব আপলোডের জন্য ছবি ও ডকুমেন্টের সীমা নির্ধারণ করুন",
      imageSizeLabel: "ছবির সর্বোচ্চ আকার (KB)",
      imageSizeHint: "এর চেয়ে বড় প্রোফাইল ছবি বা স্ক্যান গ্রহণ করা হবে না",
      imageDimLabel: "ছবির সর্বোচ্চ মাত্রা (px)",
      imageDimHint: "বড় ছবি আপলোডের সময় এই মাত্রায় স্বয়ংক্রিয়ভাবে ছোট করা হয়",
      docSizeLabel: "পিডিএফ / ডকুমেন্ট সর্বোচ্চ আকার (KB)",
      docSizeHint: "এর চেয়ে বড় সাপোর্ট অ্যাটাচমেন্ট গ্রহণ করা হবে না",
      cardTitle: "প্রতিষ্ঠান আপলোড সীমা",
      cardNote: "প্ল্যাটফর্মের সব প্রতিষ্ঠানের ক্ষেত্রে প্রযোজ্য",
      appliesTitle: "এই পলিসি যেসব ক্ষেত্রে প্রযোজ্য",
      appliesStudents: "শিক্ষার্থীর প্রোফাইল ছবি",
      appliesIdentity: "শিক্ষার্থী / অভিভাবকের ডকুমেন্ট স্ক্যান",
      appliesLogo: "প্রতিষ্ঠানের প্রোফাইল লোগো",
      appliesSupport: "সাপোর্ট টিকেট অ্যাটাচমেন্ট (পিডিএফ ও অন্য ডকুমেন্ট)",
      appliesMembers: "সদস্যদের প্রোফাইল ছবি (শিক্ষার্থী, শিক্ষক, অভিভাবক, কর্মচারী)",
      saved: "আপলোড পলিসি সংরক্ষিত হয়েছে",
      invalid: "তিনটি সীমাতেই সঠিক ধনাত্মক মান দিন",
    },
    demoRequestsPage: {
      title: "ডেমো অনুরোধসমূহ",
      subtitle: "ল্যান্ডিং পেজ থেকে জমা দেওয়া ডেমো অনুরোধগুলো ফলো-আপ করুন",
      requester: "অনুরোধকারী",
      institutionLabel: "প্রতিষ্ঠান",
      messageLabel: "বার্তা",
      requestedOn: "অনুরোধের তারিখ",
      contacted: "যোগাযোগ সম্পন্ন",
      convert: "ক্লায়েন্ট হিসেবে চিহ্নিত",
      convertConfirm: "এই ডেমো অনুরোধকে ক্লায়েন্ট হিসেবে চিহ্নিত করবেন? ভিজিটর প্রতিষ্ঠান হিসেবে নিবন্ধন করলে এটি ব্যবহার করুন।",
      reject: "প্রত্যাখ্যান",
      rejectConfirm: "এই ডেমো অনুরোধ প্রত্যাখ্যান করবেন?",
      contactedMsg: "যোগাযোগ সম্পন্ন হিসেবে চিহ্নিত করা হয়েছে",
      convertedMsg: "ক্লায়েন্ট হিসেবে চিহ্নিত — স্বাগতম",
      rejectedMsg: "ডেমো অনুরোধ প্রত্যাখ্যাত",
      deletedMsg: "ডেমো অনুরোধ মুছে ফেলা হয়েছে",
      deleteConfirm: "এই ডেমো অনুরোধ স্থায়ীভাবে মুছে ফেলবেন?",
      noRequests: "এখনো কোনো ডেমো অনুরোধ নেই",
      decidedOn: "বন্ধ",
      filterAll: "সকল",
      viewMessage: "বার্তা দেখুন",
      sendDemo: "ডেমো অ্যাক্সেস পাঠান",
      sendDemoConfirm:
        "ডেমো অ্যাক্সেস প্রদান করবেন? এই অনুরোধকারীর জন্য একটি পূর্ণাঙ্গ ডেমো পরিবেশ তৈরি হবে এবং লগইন তথ্য ইমেইলে পাঠানো হবে।",
      demoSentMsg: "ডেমো লগইন তথ্য ইমেইল করা হয়েছে — অনুরোধকারী এখনই সাইন ইন করতে পারবেন",
      demoResentMsg: "নতুন পাসওয়ার্ডসহ ডেমো তথ্য পুনরায় পাঠানো হয়েছে",
      demoSentManual:
        "ডেমো পরিবেশ তৈরি হয়েছে, তবে ইমেইল পাঠানো যায়নি। এই পাসওয়ার্ডটি ম্যানুয়ালি শেয়ার করুন:",
      demoEmailTaken:
        "এই অনুরোধকারীর ইমেইল অন্য একটি অ্যাকাউন্টে ব্যবহৃত — ডেমো পরিবেশ তৈরি করা সম্ভব হয়নি",
      demoBadge: "ডেমো পাঠানো হয়েছে",
      validityLabel: "ডেমো মেয়াদ (দিন)",
      validityHint:
        "অনুমোদিত ডেমো কত দিন ব্যবহারযোগ্য থাকবে — এই সময়সীমার মধ্যেই ব্যবহারকারী ডেমো পরিবেশটি পরিচালনা করতে পারবেন",
      validitySaved: "ডেমো মেয়াদ সংরক্ষিত — নতুন গ্রান্ট ডিফল্ট {days} দিন হবে",
      validityInvalid: "১ থেকে ৩৬৫ দিনের মধ্যে মেয়াদ লিখুন",
      validityUpdatedMsg: "এই অনুরোধকারীর ডেমো মেয়াদ হালনাগাদ হয়েছে",
      daysColumn: "দিন",
      expiresLabel: "বৈধতা শেষ",
      daysLeft: "{n} দিন বাকি",
      expiredBadge: "মেয়াদ শেষ",
      sendDemoDaysNote: "ডেমোটি এখন থেকে {n} দিন ব্যবহারযোগ্য থাকবে।",
    },
    pricingPage: {
      title: "ল্যান্ডিং প্রাইসিং",
      subtitle: "ল্যান্ডিং পেজের প্রাইসিং কার্ডে শিক্ষার্থী-সংখ্যা ভিত্তিক রেঞ্জ — যেকোনো সময় যোগ বা পরিবর্তন করুন",
      category: "ক্যাটাগরি",
      range: "শিক্ষার্থী রেঞ্জ",
      minStudents: "সর্বনিম্ন শিক্ষার্থী",
      maxStudents: "সর্বোচ্চ শিক্ষার্থী",
      maxUnlimited: "খালি রাখলে সীমাহীন (যেমন ৩০১+)",
      monthlyPrice: "মাসিক মূল্য (৳)",
      yearlyDiscount: "বার্ষিক ছাড় (%)",
      yearlyHint: "বছরে পরিশোধ করলে মাসিক মূল্যের এই শতাংশ ছাড় প্রযোজ্য হবে",
      addTier: "রেঞ্জ যোগ করুন",
      editTier: "রেঞ্জ সম্পাদনা",
      noTiers: "এখনো কোনো রেঞ্জ নেই — রেঞ্জ যোগ করলেই কার্ডটি ল্যান্ডিং পেজে দেখা যাবে",
      tierSaved: "প্রাইসিং রেঞ্জ সংরক্ষিত হয়েছে",
      tierDeleted: "প্রাইসিং রেঞ্জ মুছে ফেলা হয়েছে",
      deleteConfirm: "এই প্রাইসিং রেঞ্জটি মুছে ফেলবেন?",
      invalidRange: "সর্বোচ্চ শিক্ষার্থী সংখ্যা সর্বনিম্নের চেয়ে বেশি হতে হবে",
      invalidPrice: "সঠিক মাসিক মূল্য লিখুন",
      invalidDiscount: "বার্ষিক ছাড় ০ থেকে ৯০ এর মধ্যে হতে হবে",
      previewHint: "ল্যান্ডিং পেজ সাথে সাথেই আপডেট হয় — আলাদা করে কিছু করতে হয় না।",
    },
    paymentsPage: {
      title: "পেমেন্ট সংগ্রহ",
      subtitle: "অনুমোদিত সাবস্ক্রিপশনের পেমেন্ট আদায় করুন এবং ইনভয়েস দেখুন",
      dueSubscriptions: "বাকি সাবস্ক্রিপশন",
      collectPayment: "পেমেন্ট আদায় করুন",
      invoiceNo: "ইনভয়েস নম্বর",
      transactionRef: "লেনদেন রেফারেন্স / ট্রান্সআইডি",
      collectedBy: "আদায়কারী",
      paymentHistory: "পেমেন্ট ইতিহাস",
      paymentRecorded: "পেমেন্ট সফলভাবে রেকর্ড হয়েছে",
      remainingDue: "অবশিষ্ট বাকি",
      fullyPaid: "সম্পূর্ণ পরিশোধিত",
      paidAmount: "পরিশোধিত",
      dueAmount: "বাকি",
      subscriber: "প্রতিষ্ঠান",
      planName: "প্যাকেজ",
      collect: "আদায় করুন",
      noDue: "কোনো বাকি সাবস্ক্রিপশন নেই — সব পরিশোধিত 🎉",
      confirmPayment: "এই পেমেন্ট রেকর্ড করবেন?",
      invalidAmount: "পরিমাণ শূন্যের বেশি হতে হবে",
      amountExceeds: "পরিমাণ অবশিষ্ট বাকির চেয়ে বেশি",
    },
    academicPage: {
      title: "একাডেমিক তথ্য নিবন্ধন",
      subtitle: "একাডেমিক আইটেমের কেন্দ্রীয় তালিকা — প্রতিষ্ঠান প্রয়োজন অনুযায়ী নির্বাচন করে",
      itemName: "নাম (ইংরেজি)",
      itemNameBn: "নাম (বাংলা)",
      addItem: "আইটেম যোগ করুন",
      editItem: "আইটেম সম্পাদনা",
      itemExists: "এই নামে একটি আইটেম ইতোমধ্যে এই ক্যাটাগরিতে আছে",
      linkedInstitution: "সংযুক্ত প্রতিষ্ঠান",
      globalItem: "গ্লোবাল (সব প্রতিষ্ঠান)",
      linkHint: "সংযুক্ত আইটেম শুধু ওই প্রতিষ্ঠান (ও তার ব্রাঞ্চ) দেখবে।",
      itemCreated: "আইটেম সফলভাবে যোগ হয়েছে",
      syncTemplates: "স্ট্যান্ডার্ড টেমপ্লেট সিঙ্ক",
      syncDone: "কেন্দ্রীয় ক্যাটালগ আপডেট হয়েছে — {c}টি শ্রেণি ও {s}টি বিষয় যোগ হয়েছে (মাদ্রাসা / কলেজ / বিশ্ববিদ্যালয় তালিকাসহ)",
      itemUpdated: "আইটেম সফলভাবে আপডেট হয়েছে",
      selectedBy: "নির্বাচন করেছে",
      institutionCount: "প্রতিষ্ঠান",
      newItem: "নতুন আইটেম",
    },
  },

  portal: {
    dashboard: {
      title: "প্রতিষ্ঠান ড্যাশবোর্ড",
      welcome: "স্বাগতম",
      myInstitution: "আমার প্রতিষ্ঠান",
      statusPendingNote:
        "আপনার প্রতিষ্ঠান কেন্দ্রীয় নিয়ন্ত্রকের অনুমোদনের অপেক্ষায়। এ সময়ে প্যাকেজ দেখে নিতে পারেন।",
      statusSuspendedNote:
        "আপনার প্রতিষ্ঠান স্থগিত করা হয়েছে। অনুগ্রহ করে কেন্দ্রীয় নিয়ন্ত্রকের সাথে যোগাযোগ করুন।",
      currentPackage: "বর্তমান প্যাকেজ",
      noPackage: "কোনো সক্রিয় প্যাকেজ নেই",
      noPackageNote: "উপলব্ধ প্যাকেজ দেখুন এবং ক্রয়ের অনুরোধ পাঠান।",
      expiresOn: "মেয়াদ শেষ হবে",
      paymentSummary: "পেমেন্ট সারসংক্ষেপ",
      totalPaid: "মোট পরিশোধিত",
      outstandingDue: "বকেয়া বাকি",
      academicSetup: "একাডেমিক সেটআপ",
      selectedItems: "নির্বাচিত আইটেম",
      quickActions: "দ্রুত কার্যক্রম",
      browsePackages: "প্যাকেজ দেখুন",
      manageAcademic: "একাডেমিক তথ্য ব্যবস্থাপনা",
      viewInvoices: "ইনভয়েস দেখুন",
      activeLabel: "সাবস্ক্রিপশন চলমান",
      memberSince: "সদস্যপদ শুরু",
      demoBannerTitle: "ডেমো অ্যাক্সেস",
      demoBannerBody:
        "এই ডেমো পরিবেশটি {n} দিনের জন্য দেওয়া হয়েছে এবং {date} পর্যন্ত ব্যবহারযোগ্য — {left}। এরপর অ্যাক্সেস স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।",
      demoBannerLastDay: "আজই শেষ দিন",
      totalStudents: "মোট শিক্ষার্থী",
      staffMembers: "কর্মচারী সংখ্যা",
      pendingAdmissions: "অপেক্ষমাণ ভর্তি আবেদন",
      feesCollected: "আদায়কৃত ফি",
      thisMonth: "এ মাসে",
      latestNotices: "সাম্প্রতিক নোটিশ",
      upcomingEvents: "আসন্ন ইভেন্ট",
      recentCollections: "সাম্প্রতিক ফি আদায়",
      daysRemaining: "দিন বাকি",
      planDuration: "প্যাকেজের মেয়াদ",
      months: "মাস",
      invoiceNo: "ইনভয়েস নং",
      noNotices: "এখনো কোনো নোটিশ প্রকাশিত হয়নি",
      noEvents: "কোনো আসন্ন ইভেন্ট নেই",
      supportStatus: "সাপোর্ট স্ট্যাটাস ও মনিটরিং",
      noCollections: "এখনো কোনো ফি আদায় হয়নি",
      manageStudents: "শিক্ষার্থী ব্যবস্থাপনা",
      viewAdmissions: "ভর্তি আবেদন দেখুন",
      todayAttendance: "আজকের উপস্থিতি",
      studentsLabel: "শিক্ষার্থী",
      staffLabel: "কর্মচারী",
      teachersLabel: "শিক্ষক",
      last7Days: "শেষ ৭ দিন — শিক্ষার্থী উপস্থিতি",
      todayLabel: "আজ",
      attTarget: "লক্ষ্য {pct}%",
      present: "উপস্থিত",
      absent: "অনুপস্থিত",
      onLeave: "ছুটিতে",
      unmarked: "চিহ্নিত হয়নি",
      classWise: "শ্রেণিভিত্তিক উপস্থিতি",
      sectionWise: "শাখাভিত্তিক উপস্থিতি",
      shiftWise: "শিফটভিত্তিক উপস্থিতি",
      subjectWise: "বিষয়ভিত্তিক উপস্থিতি",
      records: "রেকর্ড",
      todaysActivities: "আজকের কার্যক্রম",
      rate: "হার",
      absentStudents: "অনুপস্থিত শিক্ষার্থী",
      onLeaveStudents: "ছুটিতে শিক্ষার্থী",
      absentStaff: "অনুপস্থিত কর্মচারী",
      onLeaveStaff: "ছুটিতে কর্মচারী",
      listEmpty: "কেউ নেই",
      noStudentAttendanceToday: "আজ এখনো কোনো শিক্ষার্থীর উপস্থিতি রেকর্ড হয়নি",
      recordAttendance: "উপস্থিতি রেকর্ড করুন",
    },
    packagesPage: {
      title: "উপলব্ধ প্যাকেজ",
      subtitle: "আপনার প্রতিষ্ঠানের ধরনের জন্য তৈরি প্যাকেজ",
      requestPackage: "প্যাকেজের অনুরোধ করুন",
      requested: "অনুরোধকৃত",
      pendingReview: "পর্যালোচনাধীন",
      requestNoteLabel: "বার্তা (ঐচ্ছিক)",
      requestNotePlaceholder: "কেন্দ্রীয় নিয়ন্ত্রকের জন্য কোনো নোট…",
      requestSent: "অনুরোধ পাঠানো হয়েছে! কেন্দ্রীয় নিয়ন্ত্রক শীঘ্রই পর্যালোচনা করবেন।",
      alreadyRequested: "এই প্যাকেজের জন্য আপনার একটি অপেক্ষমাণ অনুরোধ আছে",
      loginRequired: "প্যাকেজের অনুরোধ করতে লগইন করুন",
      notActiveNote:
        "আপনার প্রতিষ্ঠান কেন্দ্রীয় নিয়ন্ত্রকের অনুমোদন পেলে প্যাকেজের অনুরোধ পাঠাতে পারবেন।",
      myRequests: "আমার অনুরোধসমূহ",
      requestedOn: "অনুরোধের তারিখ",
      /* referral program */
      referralCardTitle: "রেফারেল প্রোগ্রাম",
      referralCopyLink: "ইনভাইট লিংক কপি করুন",
      referralLinkCopied: "ইনভাইট লিংক কপি হয়েছে!",
      referralShareHint:
        "আপনার কোড বা ইনভাইট লিংক শেয়ার করুন — এই কোড দিয়ে নিবন্ধিত প্রতিষ্ঠান প্রথম প্যাকেজ ক্রয়ে {pct}% ছাড় পাবে।",
      referralCount: "আপনার কোডে {n}টি প্রতিষ্ঠান যুক্ত হয়েছে",
      referralPendingNote:
        "রেফারেল সুবিধা: প্রথম প্যাকেজ ক্রয়ে {pct}% ছাড় প্রয়োগ হবে।",
      referralEarnTitle: "রেফারেল আয়",
      referralEarnHint: "রেফার করা প্রতিষ্ঠান বার্ষিক প্ল্যান নিলে আপনি তাদের মোট বার্ষিক টাকার {pct}% পাবেন — Increlog টিম পরিশোধ করবে।",
      referralEarnTotal: "এ পর্যন্ত আয়",
      referralEarnEmpty: "এখনো কোনো বার্ষিক রেফারেল নেই — আয় এখানে স্বয়ংক্রিয়ভাবে দেখাবে।",
      referralEarnPayoutNote: "পরিশোধ Increlog টিম সাজায়।",
      selectRange: "শিক্ষার্থী রেঞ্জ নির্বাচন করুন",
      rangeTooSmall: "আপনার বর্তমান শিক্ষার্থী সংখ্যা এই রেঞ্জের বেশি — বড় রেঞ্জ বেছে নিন",
      activeRangeLabel: "সাবস্ক্রিপশন রেঞ্জ: {range} শিক্ষার্থী",
      validUntil: "মেয়াদ শেষ: {date}",
      /* education-pattern pricing */
      yourStudents: "আপনার সক্রিয় শিক্ষার্থী",
      yourStudentsNote: "নিচের হিসাব সক্রিয় শিক্ষার্থী প্রতি হিসেব করা",
      perStudentMonth: "/ শিক্ষার্থী / মাস",
      perStudentYear: "/ শিক্ষার্থী / বছর",
      monthlyOption: "মাসিক পরিশোধ",
      yearlyOption: "বার্ষিক পরিশোধ",
      save10: "{pct}% সাশ্রয়",
      setupFeeLine: "এককালীন সেটআপ ফি",
      totalLabel: "মোট পরিশোধযোগ্য",
      cycleLabel: "বিলিং সাইকেল বেছে নিন",
      breakdownStudents: "শিক্ষার্থী",
      breakdownRate: "হার",
      breakdownMonths: "মাস",
      breakdownSubtotal: "উপমোট",
      breakdownDiscount: "বার্ষিক ছাড়",
      breakdownSetup: "সেটআপ ফি (এককালীন)",
      yearlyOnly: "শুধু বার্ষিক বিলিং",
      estimateNote: "চূড়ান্ত পরিমাণ অনুমোদনের সময় কেন্দ্রীয় নিয়ন্ত্রক নিশ্চিত করবেন।",
    },
    billingPage: {
      title: "সাবস্ক্রিপশন ও পেমেন্ট",
      subtitle: "আপনার সাবস্ক্রিপশনের বিবরণ ও পেমেন্টের ইতিহাস",
      subscriptionDetails: "সাবস্ক্রিপশনের বিবরণ",
      paymentHistory: "পেমেন্টের ইতিহাস",
      noSubscription: "এখনো কোনো সাবস্ক্রিপশন নেই",
      noSubscriptionNote:
        "প্রথমে একটি প্যাকেজের অনুরোধ পাঠান — অনুমোদিত হলে সাবস্ক্রিপশন এখানে দেখা যাবে।",
      totalAmount: "প্যাকেজের মূল্য",
      startEnd: "মেয়াদকাল",
      invoiceTitle: "ইনভয়েস",
      paidOn: "পরিশোধের তারিখ",
      noPayments: "এখনো কোনো পেমেন্ট রেকর্ড হয়নি",
      progress: "পেমেন্টের অগ্রগতি",
    },
    academicPage: {
      title: "একাডেমিক তথ্য সেটআপ",
      subtitle:
        "কেন্দ্রীয় তালিকা থেকে নির্বাচন করুন বা নিজের প্রতিষ্ঠানের আইটেম তৈরি করুন — সাথে সাথে সংরক্ষিত হয়",
      selected: "নির্বাচিত",
      available: "উপলব্ধ",
      selectedCount: "নির্বাচিত",
      emptyCategory: "এই ক্যাটাগরিতে এখনো কোনো আইটেম নেই",
      autoSaveNote: "নির্বাচন স্বয়ংক্রিয়ভাবে সংরক্ষিত হয়",
      inactiveNote:
        "কেন্দ্রীয় আইটেম নিয়ন্ত্রক পরিচালনা করেন। নিজে তৈরি করা আইটেম আপনার প্রতিষ্ঠানের নিজস্ব।",
      addItem: "নিজের আইটেম যোগ করুন",
      requestNote: "একাডেমিক ক্যাটালগ কেন্দ্রীয় নিয়ন্ত্রক পরিচালনা করেন — তালিকায় নেই এমন কিছু দরকার?",
      requestCta: "সাপোর্টের মাধ্যমে অনুরোধ পাঠান",
      filterAll: "সব",
      filterCentral: "কেন্দ্রীয় ক্যাটালগ",
      filterOwn: "আপনার আইটেম",
      noOwnItems: "আপনার প্রতিষ্ঠানের আগে তৈরি করা কোনো আইটেম নেই",
      editItem: "আইটেম সম্পাদনা",
      itemName: "নাম (ইংরেজি)",
      itemNameBn: "নাম (বাংলা)",
      ownBadge: "নিজস্ব",
      centralBadge: "কেন্দ্রীয়",
      renameItem: "নাম পরিবর্তন",
      renamedBadge: "নাম পরিবর্তিত",
      resetName: "আসল নামে ফিরুন",
      renamedSaved: "প্রদর্শনের নাম হালনাগাদ হয়েছে",
      nameReset: "প্রদর্শনের নাম আসল মানে ফিরিয়ে আনা হয়েছে",
      searchItems: "আইটেম খুঁজুন…",
      sortDefault: "ডিফল্ট",
      sortAZ: "নাম ক→ট",
      sortZA: "নাম ট→ক",
      subjectCode: "বিষয় কোড",
      optionalLabel: "ঐচ্ছিক বিষয়",
      optionalBadge: "ঐচ্ছিক",
      nameExists: "এই নামে একটি আইটেম ইতোমধ্যে এই ক্যাটাগরিতে আছে",
      itemCreated: "আইটেম তৈরি হয়েছে",
      itemUpdated: "আইটেম আপডেট হয়েছে",
      itemDeleted: "আইটেম মুছে ফেলা হয়েছে",
      itemInUse:
        "এই আইটেম শিক্ষার্থী, ভর্তি বা ফি-তে ব্যবহৃত হচ্ছে, মুছে ফেলা যাবে না",
      deleteOwnConfirm: "আইটেমটি মুছবেন? এটি ব্যবহারকারী নির্বাচন মুছে যাবে।",
    },

    profile: {
      title: "প্রতিষ্ঠান প্রোফাইল",
      subtitle: "আপনার প্রতিষ্ঠানের নিজস্ব তথ্য প্রোফাইল হিসেবে পরিচালনা করুন",
      logo: "প্রতিষ্ঠানের লোগো",
      uploadLogo: "লোগো আপলোড করুন",
      changeLogo: "লোগো পরিবর্তন করুন",
      removeLogo: "মুছে ফেলুন",
      logoHint: "PNG / JPG — সর্বোচ্চ ~১ এমবি",
      logoTooLarge: "লোগোটি খুব বড় (সর্বোচ্চ ~১ এমবি)",
      website: "ওয়েবসাইট",
      description: "বিবরণ",
      contactInfo: "যোগাযোগের তথ্য",
      sectionEduInfo: "বাংলাদেশ শিক্ষা তথ্য",
      eduInfoHint:
        "সরকারি রেজিস্ট্রি শনাক্তকারী — EIIN (স্কুল/কলেজ), EIN (প্রাথমিক), বোর্ড/কলেজ কোড, এমপিও কোড, শিক্ষা বোর্ড, প্রতিষ্ঠার সাল ও পোস্ট কোড।",
      profileUpdated: "প্রোফাইল সফলভাবে আপডেট হয়েছে",
      memberSince: "নিবন্ধনের তারিখ",
      changePassword: "পাসওয়ার্ড পরিবর্তন করুন",
      currentPassword: "বর্তমান পাসওয়ার্ড",
      newPassword: "নতুন পাসওয়ার্ড",
      confirmNewPassword: "নতুন পাসওয়ার্ড নিশ্চিত করুন",
      passwordChanged: "পাসওয়ার্ড সফলভাবে পরিবর্তন হয়েছে",
      wrongPassword: "বর্তমান পাসওয়ার্ডটি সঠিক নয়",
    },

    myProfilePage: {
      title: "আমার প্রোফাইল",
      subtitle: "আপনার ছবি, ব্যক্তিগত তথ্য ও ঐচ্ছিক বিষয়",
      notLinked: "এই অ্যাকাউন্টের সাথে এখনো কোনো শিক্ষার্থী প্রোফাইল যুক্ত নেই",
      photoLabel: "প্রোফাইলের ছবি",
      personalInfo: "ব্যক্তিগত তথ্য",
      optionalSubjects: "ঐচ্ছিক বিষয়সমূহ",
      optionalSubjectsHint: "আপনার অ্যাডমিন শ্রেণিটির জন্য চালু করা ঐচ্ছিক বিষয় থেকে বেছে নিন",
      save: "পরিবর্তন সংরক্ষণ",
      saved: "প্রোফাইল সফলভাবে আপডেট হয়েছে",
      guardianName: "অভিভাবকের নাম",
      guardianPhone: "অভিভাবকের ফোন",
      motherName: "মাতার নাম",
      addressLabel: "ঠিকানা",
      nameBnLabel: "নাম (বাংলা)",
      dob: "জন্ম তারিখ",
      gender: "লিঙ্গ",
      roll: "রোল",
      classLabel: "শ্রেণি",
    },

    competitionsPage: {
      title: "কম্পিটিশন ম্যানেজার",
      subtitle: "ক্লাব, প্রতিযোগিতা, সময়সূচি, পয়েন্ট, ফলাফল ও ইতিহাস",
      tabClubs: "ক্লাবসমূহ",
      tabCompetitions: "প্রতিযোগিতা",
      tabStandings: "স্ট্যান্ডিং",
      tabHistory: "ইতিহাস",
      newClub: "নতুন ক্লাব",
      clubName: "ক্লাবের নাম",
      clubNameBn: "ক্লাবের নাম (বাংলা)",
      clubDescription: "বিবরণ",
      clubExists: "এই নামে একটি ক্লাব আগেই আছে",
      clubCreated: "ক্লাব তৈরি হয়েছে",
      clubDeleted: "ক্লাব মুছে ফেলা হয়েছে",
      competitionsCount: "প্রতিযোগিতা",
      newCompetition: "নতুন প্রতিযোগিতা",
      competitionName: "প্রতিযোগিতার নাম",
      venue: "স্থান",
      scheduleAt: "সময়সূচি",
      selectClub: "ক্লাব (ঐচ্ছিক)",
      standalone: "স্বতন্ত্র",
      competitionCreated: "প্রতিযোগিতা নির্ধারিত হয়েছে",
      statusUpdated: "অবস্থা আপডেট হয়েছে",
      rescheduled: "প্রতিযোগিতার সময় পরিবর্তন হয়েছে",
      deleted: "মুছে ফেলা হয়েছে",
      statusUpcoming: "আসন্ন",
      statusRunning: "চলমান",
      statusCompleted: "সমাপ্ত",
      statusCancelled: "বাতিল",
      start: "শুরু",
      complete: "সমাপ্ত করুন",
      cancel: "বাতিল",
      reopen: "পুনরায় খুলুন",
      manageResults: "পয়েন্ট",
      resultsTitle: "পয়েন্ট ব্যবস্থাপনা",
      addParticipant: "অংশগ্রহণকারী যোগ",
      rank: "স্থান",
      points: "পয়েন্ট",
      remarks: "মন্তব্য",
      saveResults: "পয়েন্ট সংরক্ষণ",
      resultsSaved: "পয়েন্ট সংরক্ষিত হয়েছে",
      publish: "ফলাফল প্রকাশ",
      unpublish: "প্রকাশ বাতিল",
      published: "ফলাফল প্রকাশিত হয়েছে",
      unpublished: "ফলাফল প্রকাশ বাতিল হয়েছে",
      notPublished: "প্রকাশিত হয়নি",
      standingsTitle: "সম্মিলিত স্ট্যান্ডিং",
      standingsHint: "শুধু প্রকাশিত ফলাফল থেকে তৈরি",
      totalPoints: "পয়েন্ট",
      wins: "জয়",
      played: "ইভেন্ট",
      allClubs: "সব ক্লাব",
      historyTitle: "প্রতিযোগিতার ইতিহাস",
      winner: "বিজয়ী",
      noEntries: "এখনো কোনো এন্ট্রি নেই",
      upcomingEmpty: "কিছু নির্ধারিত নেই — প্রথম প্রতিযোগিতা তৈরি করুন",
    },
    controlPanelPage: {
      title: "কন্ট্রোল প্যানেল",
      subtitle: "মডিউল বেছে নিন, একাডেমিক শব্দ পরিবর্তন করুন এবং স্ট্যান্ডার্ড শ্রেণি সেট করুন",
      modulesTitle: "পোর্টাল মডিউল",
      modulesSubtitle: "আপনার প্রতিষ্ঠান যেসব মডিউল চালায় সেগুলো চালু/বন্ধ করুন — মূল আইটেম সবসময় থাকে",
      modulesSaved: "মডিউল নির্বাচন সংরক্ষিত হয়েছে",
      modulesAllOn: "সব মডিউল চালু",
      coreNote: "ড্যাশবোর্ড, ভর্তি, শিক্ষার্থী, একাডেমিক, পরীক্ষা ও ফলাফল সবসময় উন্মুক্ত",
      optTitle: "ঐচ্ছিক বিষয় ব্যবস্থাপনা",
      optSubtitle: "ধাপ ১ — যেসব শ্রেণি ঐচ্ছিক বিষয় পরিচালনা করবে তা বেছে নিন · ধাপ ২ — সম্ভাব্য বিষয়গুলো চিহ্নিত করুন",
      optStep1: "শ্রেণিসমূহ",
      optStep2: "সম্ভাব্য ঐচ্ছিক বিষয়",
      optStep2Hint: "নির্ধারিত শ্রেণির শিক্ষার্থীরা (বা শিক্ষক) প্রোফাইল সম্পাদনায় এগুলো থেকে বেছে নেয়। কোনোটি না চিহ্নিত করে সংরক্ষণ করলে শ্রেণিটি ঐচ্ছিক ব্যবস্থাপনা থেকে বাদ যাবে।",
      optManaged: "পরিচালিত",
      optPickClass: "প্রথমে একটি শ্রেণি বেছে নিন",
      renameTitle: "একাডেমিক শব্দের পরিবর্তন",
      renameSubtitle: "নিজের শব্দ ব্যবহার করুন — যেমন শ্রেণি → কোর্স, শাখা → ব্যাচ, শিক্ষাবর্ষ → সেমিস্টার",
      renamePlaceholder: "যেমন",
      renameSaved: "একাডেমিক শব্দ সংরক্ষিত হয়েছে",
      classesTitle: "স্ট্যান্ডার্ড শ্রেণিসমূহ",
      classesSubtitle: "আপনার প্রতিষ্ঠানের ধরন অনুযায়ী স্ট্যান্ডার্ড শ্রেণি তালিকা প্রয়োগ করুন",
      classesApply: "স্ট্যান্ডার্ড শ্রেণি প্রয়োগ",
      classesApplied: "স্ট্যান্ডার্ড শ্রেণি প্রয়োগ হয়েছে",
      classesHint: "বর্ষ-ভিত্তিক শ্রেণি বর্তমান সেশনসহ তৈরি হয়; মাদ্রাসা / কলেজ / বিশ্ববিদ্যালয় ধরনে বাংলাদেশের প্রমিত বিষয় তালিকাও নির্বাচিত হয় (কুরআন-হাদীস-ফিকহ, এইচএসসি গ্রুপ বিষয়, বিশ্ববিদ্যালয় কোর্স)",
      subjectFeeTitle: "বিষয়-ভিত্তিক মাসিক ফি",
      subjectFeeSubtitle: "প্রতিটি শিক্ষার্থীকে ধার্যকৃত বিষয় অনুযায়ী ফি আদায় করুন",
      subjectFeeToggle: "বিষয় ভিত্তিক ফি আদায়",
      subjectFeeHint:
        "সক্রিয় থাকলে ফি → বিষয়ভিত্তিক ফি ট্যাবে প্রত্যেক শিক্ষার্থীর বিষয় ও মাসিক টাকা নির্ধারণ করে মাসিক ফি শিডিউল তৈরি করা যাবে। বন্ধ করলে ট্যাবটি লুকিয়ে যাবে; আগে তৈরি শিডিউল থেকেই থাকবে।",
      subjectFeeOn: "বিষয় ভিত্তিক ফি আদায় চালু — ফি-এর অধীনে বিষয়ভিত্তিক ফি ট্যাব এখন পাওয়া যাচ্ছে।",
      subjectFeeOff: "বিষয় ভিত্তিক ফি আদায় বন্ধ করা হয়েছে।",
      caTitle: "পেমেন্ট আদায়ের অ্যাকাউন্ট",
      caSubtitle: "শিক্ষার্থীরা যেখানে পরিশোধ করবে — মোবাইল ব্যাংকিং, ব্যাংক অ্যাকাউন্ট ও অন্যান্য তথ্য মেম্বার ফি পেজে দেখানো হয়",
      caAdd: "অ্যাকাউন্ট যোগ করুন",
      caEdit: "অ্যাকাউন্ট সম্পাদনা",
      caMobile: "মোবাইল ব্যাংকিং",
      caBank: "ব্যাংক অ্যাকাউন্ট",
      caOther: "অন্যান্য",
      caProvider: "প্রোভাইডার",
      caAccountType: "অ্যাকাউন্টের ধরন",
      caPersonal: "পার্সোনাল",
      caMerchant: "মার্চেন্ট",
      caBankName: "ব্যাংকের নাম",
      caWalletNo: "ওয়ালেট নম্বর",
      caAccountNo: "অ্যাকাউন্ট নম্বর",
      caAccountName: "অ্যাকাউন্টের নাম",
      caHolder: "হোল্ডারের নাম",
      caBranch: "শাখা",
      caRouting: "রাউটিং নং",
      caNoteHint: "যেমন: সেন্ড মানি করে TrxID সংরক্ষণ করুন",
      caLabel: "প্রদর্শনী লেবেল",
      caLabelCol: "প্রোভাইডার / ব্যাংক",
      caNumberCol: "নম্বর",
      caNameCol: "নাম / শাখা",
      caEmpty: "এখনো কোনো আদায়ের অ্যাকাউন্ট নেই",
      caEmptyHint: "শিক্ষার্থীরা যে bKash/Nagad/Rocket ওয়ালেট বা ব্যাংক অ্যাকাউন্টে পরিশোধ করবে সেটি যোগ করুন",
      caMemberHint: "সক্রিয় অ্যাকাউন্টগুলো শিক্ষার্থী ও অভিভাবকের ফি পেজে কপি বাটনসহ দেখা যাবে।",
      caCreated: "আদায়ের অ্যাকাউন্ট যোগ হয়েছে।",
      caUpdated: "আদায়ের অ্যাকাউন্ট হালনাগাদ হয়েছে।",
      afTitle: "ভর্তি আবেদন ফি",
      afSubtitle: "নতুন ভর্তি আবেদনে ফি থাকবে কি না ঠিক করুন — অনলাইন (/apply) ও ডেস্ক আবেদন উভয়ের জন্যই",
      afToggle: "আবেদন ফি",
      afAmountLabel: "ফির পরিমাণ (টাকা)",
      afHint:
        "সক্রিয় থাকলে প্রতিটি নতুন আবেদনে এই পরিমাণ বাকি ফি হিসেবে যুক্ত হয়; আবেদনকারীরা নিচের আপনার পেমেন্ট কালেকশন অ্যাকাউন্ট থেকে কোথায় পরিশোধ করবেন তা দেখেন। ভর্তি ফরমের ওয়ালেট বাটন থেকে পরিশোধ রেকর্ড বা মকুব করুন।",
      afSaved: "ভর্তি ফির সেটিং সংরক্ষিত হয়েছে",
      afAmountInvalid: "ফি সক্রিয় করতে ০-এর বড় একটি পরিমাণ লিখুন",
      tkTitle: "আবেদন ট্র্যাকিং পেজ",
      tkSubtitle: "আবেদনকারীরা রেফারেন্স নম্বর দিয়ে ভর্তি আবেদনের অবস্থা প্রকাশ্যে দেখতে পারবে",
      tkToggle: "পাবলিক ট্র্যাকিং পেজ",
      tkHint:
        "সক্রিয় থাকলে আবেদনকারীরা /track পেজে আবেদনের ফোন/ইমেইল বা ট্র্যাকিং পাসওয়ার্ড দিয়ে যাচাই করে অবস্থা ও অবস্থান দেখতে এবং ফি-এর লেনদেন আইডি জমা দিতে পারবে।",
      tkOn: "আবেদন ট্র্যাকিং চালু — আপনার প্রতিষ্ঠানের জন্য /track পেজ এখন উন্মুক্ত।",
      tkOff: "আবেদন ট্র্যাকিং বন্ধ করা হয়েছে।",
      gsTitle: "গ্রুপ / ডিপার্টমেন্ট অনুযায়ী বিষয়",
      gsSubtitle: "প্রতি গ্রুপ (স্কুল ও কলেজ) বা প্রতি ডিপার্টমেন্ট (বিশ্ববিদ্যালয়) বিষয় সেট নির্ধারণ করুন — শিক্ষার্থী তার গ্রুপ/ডিপার্টমেন্ট দিয়ে চিহ্নিত ও বিষয় ধার্যকৃত হয়",
      gsGroupBasis: "গ্রুপ (স্কুল/কলেজ)",
      gsDeptBasis: "ডিপার্টমেন্ট (বিশ্ববিদ্যালয়)",
      gsGroupHint: "যেমন: বিজ্ঞান → উচ্চতর গণিত, জীববিজ্ঞান, রসায়ন, পদার্থবিজ্ঞান",
      gsDeptHint: "যেমন: সিএসই ডিপার্টমেন্ট → তার কোর্স/বিষয় তালিকা",
      gsPickGroup: "একটি গ্রুপ নির্বাচন করুন",
      gsPickDept: "একটি ডিপার্টমেন্ট নির্বাচন করুন",
      gsSubjects: "বিষয়সমূহ",
      gsNoItems: "এখনো কোনো গ্রুপ/ডিপার্টমেন্ট নেই — আগে একাডেমিক তথ্যে যোগ করুন।",
      gsEmpty: "এখনো কোনো বিষয় সেট নেই",
      gsEmptyHint: "উপরে একটি গ্রুপ বা ডিপার্টমেন্ট বেছে নিয়ে বিষয়গুলো টিক দিন",
      gsSaved: "বিষয় সেট সংরক্ষিত হয়েছে।",
      gsUsageHint: "শিক্ষার্থীর গ্রুপ/ডিপার্টমেন্ট অনুযায়ী ফি → বিষয়ভিত্তিক ফি ধার্যকরণে বিষয়গুলো আগেই নির্বাচিত থাকে এবং একাডেমিক পরিচয় স্পষ্ট হয়।",
      gsGroupLevel: "স্কুল/কলেজ",
      gsDeptLevel: "বিশ্ববিদ্যালয়",
      amTitle: "উপস্থিতি মেশিন",
      amSubtitle: "ZKTeco ও ইউনিভার্সাল ডিভাইস — পাঞ্চ স্বয়ংক্রিয়ভাবে উপস্থিতিতে যোগ হয়",
      amAdd: "মেশিন যোগ করুন",
      amEdit: "মেশিন সম্পাদনা",
      amBrand: "ব্র্যান্ড",
      amGenericHttp: "জেনেরিক (HTTP পুশ)",
      amCsvOnly: "শুধু CSV",
      amMode: "সংযোগ",
      amModePoll: "ZK ডাইরেক্ট পোল",
      amModePush: "HTTP পুশ",
      amModeCsv: "CSV ইমপোর্ট",
      amCapabilities: "সাপোর্ট",
      amFinger: "ফিঙ্গার",
      amFace: "ফেস",
      amIp: "ডিভাইস IP",
      amPort: "পোর্ট",
      amPollMinutes: "অটো-পোল প্রতি (মিনিট)",
      amLocation: "অবস্থান",
      amSerial: "সিরিয়াল নং",
      amToday: "আজ",
      amLastSeen: "শেষ দেখা",
      amTest: "টেস্ট",
      amSync: "সিঙ্ক করুন",
      amTestOk: "ডিভাইস সংযুক্ত",
      amUsers: "জন ব্যবহারকারী",
      amSynced: "সিঙ্ক সম্পন্ন",
      amMatched: "মিলেছে",
      amUnmatched: "মেলেনি",
      amUnreachable: "ডিভাইস পাওয়া যাচ্ছে না — IP/পোর্ট ও মেশিন চালু কিনা যাচাই করুন।",
      amIpRequired: "আগে ডিভাইসের IP দিন।",
      amCreated: "মেশিন যোগ হয়েছে।",
      amUpdated: "মেশিন হালনাগাদ হয়েছে।",
      amFeed: "পাঞ্চ ফিড",
      amRecent: "সাম্প্রতিক",
      amUnmatchedShort: "মেলেনি",
      amPunchTime: "সময়",
      amIdentifier: "কার্ড নং",
      amPerson: "ব্যক্তি",
      amMap: "ম্যাপ করুন",
      amMapHint: "এই কার্ড নম্বরটি যার — নির্বাচন করুন; ভবিষ্যতের পাঞ্চের জন্য ম্যাপিং মনে রাখা হবে।",
      amMapped: "{n}টি পাঞ্চ উপস্থিতিতে প্রয়োগ হয়েছে।",
      amMapNow: "এখনই ম্যাপ করুন",
      amUnmatchedHint: "{n}টি পাঞ্চের এখনো কোনো শিক্ষার্থী/স্টাফ মেলেনি।",
      amImportCsv: "CSV ইমপোর্ট",
      amCsvHint: "মেশিনের সফটওয়্যার থেকে এক্সপোর্ট করা উপস্থিতি লগ আপলোড করুন (যেকোনো ব্র্যান্ড)",
      amChooseFile: "ফাইল নির্বাচন",
      amRowsFound: "{n}টি সারি পাওয়া গেছে",
      amAutoMapped: "কলাম স্বয়ংক্রিয়ভাবে শনাক্ত",
      amMapColumns: "নিচের কলামগুলো ম্যাপ করুন",
      amColId: "আইডি / কার্ড কলাম",
      amColDate: "তারিখ কলাম",
      amColTime: "সময় কলাম",
      amNoMachine: "কোনো মেশিন নেই (শুধু ইমপোর্ট)",
      amImport: "ইমপোর্ট",
      amImported: "{created}টি পাঞ্চ ইমপোর্ট হয়েছে — {matched} মিলেছে, {unmatched} মেলেনি, {duplicates} ডুপ্লিকেট বাদ।",
      amNoRows: "কোনো সঠিক সারি পাওয়া যায়নি — কলাম ম্যাপিং যাচাই করুন।",
      amRegistry: "কার্ড রেজিস্ট্রি (আরএফআইডি)",
      amRegistryHint: "প্রতিটি শিক্ষার্থী / স্টাফের আরএফআইডি কার্ড নম্বর আগেই নিবন্ধন করুন — তাদের পাঞ্চ সরাসরি মিলে যাবে, আনম্যাচড লাইনে আর জমা হবে না। ব্যাজ বা ডিভাইস ইউজার আইডিও চলবে।",
      amRegistryEmpty: "এখনো কোনো আরএফআইডি কার্ড নিবন্ধিত নেই",
      amRegistryEmptyHint: "শিক্ষার্থী ও স্টাফ মেশিনে যে কার্ড ব্যবহার করে তার নম্বরগুলো যোগ করুন",
      amAddCard: "কার্ড নং যোগ করুন",
      amEditCard: "কার্ড নং সম্পাদনা",
      amCardNo: "আরএফআইডি কার্ড নম্বর",
      amCardNoHint: "মেশিন ব্যক্তির আরএফআইডি কার্ড থেকে যে নম্বর পড়ে (ব্যাজ বা ডিভাইস ইউজার আইডিও চলবে)।",
      amMachineUserId: "ডিভাইস ইউজার আইডি",
      amSaveToStudent: "এই কার্ড নম্বরটি শিক্ষার্থীর প্রোফাইলেও (কার্ড নং — আরএফআইডি) সংরক্ষণ করুন",
      amCardSaved: "কার্ড নিবন্ধিত হয়েছে।",
      amCardUpdated: "কার্ড আপডেট হয়েছে।",
      amAppliedPunches: "{n}টি আগের আনম্যাচড পাঞ্চ উপস্থিতিতে যোগ হয়েছে।",
      amIdentifierTaken: "এই কার্ড নম্বর ইতিমধ্যে অন্য একজনের নামে নিবন্ধিত।",
      amSourceAuto: "স্বয়ংক্রিয়ভাবে শেখা",
      amSourceManual: "নিবন্ধিত",
      amEmpty: "এখনো কোনো উপস্থিতি মেশিন নেই",
      amEmptyHint: "আপনার ZKTeco (বা যেকোনো) ডিভাইস যোগ করুন, বা শুধু তার CSV এক্সপোর্ট ইমপোর্ট করুন",
      amApiKeyHint: "HTTP পুশের জন্য: ডিভাইস/গেটওয়েকে POST /api/device/punch-এ x-api-key হেডারসহ এই কী দিয়ে পাঠান।",
      classesManage: "সম্পূর্ণ একাডেমিক তথ্য ব্যবস্থাপনা (মাল্টি-সিলেক্ট)",
      classStyleLabel: "শ্রেণির নামের ধরন",
      classStyleWord: "শব্দ — প্রথম, দ্বিতীয়, তৃতীয়",
      classStyleDigit: "সংখ্যা — শ্রেণি ১, শ্রেণি ২",
    },
    inquiriesPage: {
      title: "ভর্তি অনুসন্ধান",
      subtitle: "অভিভাবকদের ভর্তি-পূর্ব অনুসন্ধান নথিভুক্ত করুন এবং ফলো-আপ করুন",
      newInquiry: "নতুন অনুসন্ধান",
      studentName: "শিক্ষার্থীর নাম",
      guardianName: "অভিভাবকের নাম",
      phone: "ফোন",
      classInterested: "পছন্দের শ্রেণি",
      note: "নোট",
      statusLabel: "অবস্থা",
      inquiryCreated: "অনুসন্ধান নথিভুক্ত হয়েছে",
      statusUpdated: "অনুসন্ধানের অবস্থা আপডেট হয়েছে",
      statusNew: "নতুন",
      statusContacted: "যোগাযোগ করা হয়েছে",
      statusAdmitted: "ভর্তি হয়েছে",
      statusClosed: "বন্ধ",
      markContacted: "যোগাযোগ হয়েছে",
      markAdmitted: "ভর্তি হয়েছে",
      closeInquiry: "বন্ধ করুন",
      noInquiries: "এখনো কোনো অনুসন্ধান নেই — প্রথমটি নথিভুক্ত করুন",
    },

    admissionsPage: {
      title: "ভর্তি ফরম",
      subtitle: "ভর্তি আবেদন নিবন্ধন করুন — অনুমোদনে শিক্ষার্থী স্বয়ংক্রিয়ভাবে নথিভুক্ত হবে",
      newApplication: "নতুন আবেদন",
      studentName: "শিক্ষার্থীর নাম",
      studentNameBn: "শিক্ষার্থীর নাম (বাংলা)",
      gender: "লিঙ্গ",
      male: "পুরুষ",
      female: "মহিলা",
      other: "অন্যান্য",
      dob: "জন্ম তারিখ",
      guardianName: "অভিভাবকের নাম",
      guardianNameBn: "পিতা / অভিভাবকের নাম (বাংলা)",
      motherName: "মাতার নাম",
      motherNameBn: "মাতার নাম (বাংলা)",
      guardianPhone: "অভিভাবকের ফোন",
      applyClass: "যে শ্রেণিতে ভর্তি চাওয়া হয়েছে",
      note: "নোট / বার্তা",
      notePlaceholder: "প্রতিষ্ঠানের জন্য বার্তা (যোগাযোগ প্যানেলে দেখা যাবে)…",
      applicationCreated: "আবেদন জমা হয়েছে",
      rapidType: "দ্রুত আবেদন",
      detailsType: "বিস্তারিত ভর্তি",
      sectionAdmissionInfo: "ভর্তি তথ্য",
      sectionIdentity: "পরিচয়",
      sectionContact: "যোগাযোগের তথ্য",
      sectionAddress: "ঠিকানা",
      bloodGroup: "রক্তের গ্রুপ",
      religion: "ধর্ম",
      islam: "ইসলাম",
      hinduism: "হিন্দু",
      christianity: "খ্রিস্টান",
      buddhism: "বৌদ্ধ",
      otherReligion: "অন্যান্য",
      studentPhone: "শিক্ষার্থীর ফোন",
      presentAddress: "বর্তমান ঠিকানা",
      permanentAddress: "স্থায়ী ঠিকানা",
      contactPhone: "যোগাযোগের ফোন",
      approved: "আবেদন অনুমোদিত — শিক্ষার্থী নথিভুক্ত। রোল:",
      rejected: "আবেদন প্রত্যাখ্যাত হয়েছে",
      approveConfirm: "এই আবেদন অনুমোদন করবেন? রোল নম্বরসহ শিক্ষার্থীর রেকর্ড তৈরি হবে।",
      rejectConfirm: "এই আবেদন প্রত্যাখ্যান করবেন?",
      approveTitle: "অনুমোদন ও নথিভুক্তি",
      approveBody: "এই আবেদনকারীকে নথিভুক্ত করুন",
      roll: "রোল",
      noApplications: "এখনো কোনো ভর্তি আবেদন নেই",
      searchApplications: "আবেদন খুঁজুন…",
      allStatuses: "সব স্ট্যাটাস",
      allClasses: "সব শ্রেণি",
      allSessions: "সব শিক্ষাবর্ষ",
      appliedOn: "আবেদনের তারিখ",
      deleteConfirm: "এই আবেদনটি স্থায়ীভাবে মুছে ফেলবেন? এর বার্তা থ্রেডও মুছে যাবে।",
      deletedMsg: "আবেদনটি মুছে ফেলা হয়েছে",
      deleteBlocked:
        "অনুমোদিত আবেদন যা ইতিমধ্যে শিক্ষার্থী তৈরি করেছে তা মুছে ফেলা যাবে না — শিক্ষার্থী তালিকা থেকে মুছুন",
      noMatch: "আপনার ফিল্টারের সাথে কোনো আবেদন মেলেনি",
      decidedOn: "সিদ্ধান্তের তারিখ",
      studentCreated: "শিক্ষার্থী নথিভুক্ত হয়েছে",
      bulkUpload: "বাল্ক আপলোড",
      bulkUploadTitle: "বাল্ক ভর্তি আবেদন (CSV)",
      bulkHint: "টেমপ্লেট ডাউনলোড করে প্রতি আবেদনের জন্য একটি করে সারি পূরণ করুন — হেডার সারি ও কলামের ক্রম হুবহু রাখুন। আবশ্যক: studentName, guardianPhone। gender: MALE/FEMALE/OTHER · dob: YYYY-MM-DD। Excel হলে আগে CSV হিসেবে সেভ করুন।",
      bulkChooseFile: "CSV ফাইল নির্বাচন করুন",
      bulkDownloadTemplate: "CSV টেমপ্লেট ডাউনলোড করুন",
      bulkHeaderMismatch: "হেডার মিলছে না — কলাম বিন্যাস টেমপ্লেটের সাথে না মেলায়, তাই এই আপলোড জমা হয়নি। টেমপ্লেট ডাউনলোড করে প্রতিটি কলাম একই ক্রমে রাখুন (অতিরিক্ত, অনুপস্থিত বা নাম বদলানো কলাম চলবে না)।",
      bulkPreview: "পড়া সারি",
      bulkValid: "বৈধ",
      bulkRowInvalid: "অবৈধ",
      bulkCreate: "{n}টি আবেদন তৈরি করুন",
      bulkCreated: "তৈরি হয়েছে",
      bulkFailedRows: "ব্যর্থ",
      bulkRow: "সারি",
      bulkDetail: "বিবরণ",
      bulkAgain: "আরেকটি ফাইল আপলোড করুন",
      bulkTooMany: "অনেক বেশি সারি — একবারে সর্বোচ্চ ৫০০",
      bulkParseError: "ফাইল পড়া যায়নি — CSV হিসেবে সেভ করে আবার চেষ্টা করুন",
      bulkFailed: "বাল্ক আপলোড ব্যর্থ — আবার চেষ্টা করুন",
      bulkErrMISSING_FIELDS: "studentName ও guardianPhone আবশ্যক",
      bulkErrCLASS_NOT_FOUND: "আপনার একাডেমিক নির্বাচনে এই শ্রেণি নেই",
      bulkErrDB_ERROR: "এই সারিটি তৈরি করা যায়নি",
      feeCol: "আবেদন ফি",
      feePaid: "পরিশোধিত",
      feeWaived: "মকুব",
      recordFee: "ফি রেকর্ড করুন",
      feeModalTitle: "আবেদন ফি",
      feeMarkPaid: "পরিশোধিত করুন",
      feeWaive: "মকুব করুন",
      feeWaiveConfirm: "এই আবেদন ফি মকুব করবেন? কোনো পরিশোধ রেকর্ড হবে না।",
      feeReopen: "আবার বাকি করুন",
      feeReopenConfirm: "এই আবেদন ফি আবার বাকি হিসেবে সেট করবেন? রেকর্ড করা পরিশোধের তথ্য মুছে যাবে।",
      feeRecorded: "আবেদন ফি পরিশোধিত হিসেবে রেকর্ড হয়েছে",
      feeWaivedDone: "আবেদন ফি মকুব করা হয়েছে",
      feeReopened: "আবেদন ফি আবার বাকি করা হয়েছে",
      feeDueApproveHint: "আবেদন ফি এখনো বাকি — আপনি এখনই অনুমোদন করতে পারেন এবং পরে পরিশোধ রেকর্ড করতে পারেন।",
      feeWaivedNote: "এই ফি মকুব করা হয়েছে — কোনো পরিশোধের প্রয়োজন নেই।",
    },

    studentsPage: {
      title: "শিক্ষার্থীবৃন্দ",
      subtitle: "শ্রেণি, অভিভাবক ও ফি অবস্থাসহ নথিভুক্ত শিক্ষার্থী",
      profileReport: "শিক্ষার্থী প্রোফাইল রিপোর্ট",
      rollNo: "রোল",
      photoCol: "ছবি",
      classLabel: "শ্রেণি",
      sectionLabel: "শাখা",
      guardian: "অভিভাবক",
      feesDue: "বাকি ফি",
      noStudents: "এখনো কোনো শিক্ষার্থী নথিভুক্ত নেই — প্রথমে একটি ভর্তি আবেদন অনুমোদন করুন",
      feeStatement: "ফি বিবরণী",
      totalAssigned: "মোট ধার্যকৃত",
      admittedOn: "ভর্তির তারিখ",
      viewReport: "রিপোর্ট",
      filterLabel: "শিক্ষার্থী খুঁজুন…",
      /* datagrid update + bulk academic info */
      bulkSelectAll: "এই পৃষ্ঠার সব শিক্ষার্থী নির্বাচন করুন",
      bulkSelected: "{n} জন নির্বাচিত",
      bulkSelectAllFiltered: "সব {n} জন নির্বাচন",
      bulkClear: "সাফ করুন",
      bulkAcademicLabel: "নির্বাচিতদের একাডেমিক তথ্য নির্ধারণ:",
      bulkUnchanged: "অপরিবর্তিত",
      bulkApply: "নির্বাচিতদের উপর প্রয়োগ",
      bulkConfirm:
        "{n} জন নির্বাচিত শিক্ষার্থীর একাডেমিক তথ্য হালনাগাদ করবেন? \"অপরিবর্তিত\" রাখা ফিল্ডগুলো বর্তমান মানেই থাকবে।",
      academicBulkApplied: "{n} জন শিক্ষার্থীর একাডেমিক তথ্য হালনাগাদ হয়েছে",
      bulkNoFields: "প্রয়োগ করার জন্য অন্তত একটি একাডেমিক ফিল্ড বেছে নিন",
      quickUpdate: "তালিকায় একাডেমিক তথ্য হালনাগাদ",
      academicUpdated: "একাডেমিক তথ্য হালনাগাদ হয়েছে",
      /* profile update system */
      editProfile: "প্রোফাইল সম্পাদনা",
      profileUpdated: "প্রোফাইল সফলভাবে আপডেট হয়েছে",
      photoLabel: "প্রোফাইলের ছবি",
      personalInfo: "ব্যক্তিগত তথ্য",
      motherName: "মাতার নাম",
      addressLabel: "ঠিকানা",
      nameBnLabel: "নাম (বাংলা)",
      optionalSubjects: "ঐচ্ছিক বিষয়সমূহ",
      optionalSubjectsHint: "আপনার অ্যাডমিন এই শ্রেণির জন্য নির্ধারিত ঐচ্ছিক তালিকা থেকে নেওয়া",
      optionalPoolEmpty: "এই শ্রেণির জন্য এখনো কোনো ঐচ্ছিক বিষয় উন্মুক্ত নেই",
      optionalPoolTitle: "ঐচ্ছিক বিষয়ের প্রাপ্যতা",
      optionalPoolSubtitle: "প্রতিটি শ্রেণির জন্য কোন বিষয় ঐচ্ছিক হবে তা অ্যাডমিন ঠিক করেন",
      optionalPoolSave: "প্রাপ্যতা সংরক্ষণ",
      optionalPoolSaved: "ঐচ্ছিক বিষয়ের প্রাপ্যতা সংরক্ষিত হয়েছে",
      poolForClass: "শ্রেণি",
      choosePhoto: "ছবি বেছে নিন",
      /* documents & media */
      mediaTitle: "নথিপত্র ও মিডিয়া",
      mediaStudentId: "শিক্ষার্থীর এনআইডি / জন্ম সনদ",
      mediaFatherNid: "পিতার এনআইডি",
      mediaMotherNid: "মাতার এনআইডি",
      sideFront: "সামনের দিক",
      sideBack: "পেছনের দিক",
      mediaUpload: "আপলোড",
      mediaReplace: "পরিবর্তন",
      mediaView: "দেখুন",
      mediaDownload: "ডাউনলোড",
      mediaRemove: "সরান",
      mediaEmpty: "আপলোড হয়নি",
      mediaSaved: "নথি সংরক্ষিত হয়েছে",
      mediaRemoved: "নথি সরানো হয়েছে",
      mediaHint: "JPG / PNG — স্বয়ংক্রিয়ভাবে সংকুচিত। শুধু অনুমোদিত কর্মীরা দেখতে পাবেন।",
      tabStudents: "সব শিক্ষার্থী",
      tabAttendance: "উপস্থিতি",
      tabActivities: "কার্যক্রম",
      filterClass: "শ্রেণি",
      allClasses: "সব শ্রেণি",
      filterSection: "শাখা",
      allSections: "সব শাখা",
      filterShift: "শিফট",
      allShifts: "সব শিফট",
      subjectOptional: "বিষয় (ঐচ্ছিক)",
      subjectHint: "বিষয়ভিত্তিক উপস্থিতি নিতে বিষয় নির্বাচন করুন; সাধারণ দৈনিক রেকর্ডের জন্য খালি রাখুন।",
      newActivity: "নতুন কার্যক্রম",
      activityTitle: "কার্যক্রমের শিরোনাম",
      activityNote: "নোট / বিবরণ",
      activityDate: "তারিখ",
      targetAll: "সব শিক্ষার্থী",
      targetSelected: "নির্বাচিত শিক্ষার্থী",
      pickStudents: "শিক্ষার্থী নির্বাচন করুন",
      audienceAll: "সকল",
      audience: "প্রযোজ্য",
      recipientsLabel: "জন",
      activityCreated: "কার্যক্রম রেকর্ড হয়েছে",
      activityDeleted: "কার্যক্রম মুছে ফেলা হয়েছে",
      noActivities: "এখনো কোনো কার্যক্রম রেকর্ড হয়নি",
      deleteActivityConfirm: "এই কার্যক্রমটি মুছে ফেলবেন?",
      markAttendance: "উপস্থিতি চিহ্নিত করুন",
      attendanceSaved: "উপস্থিতি সফলভাবে সংরক্ষিত হয়েছে",
      attendanceHint: "তারিখ নির্বাচন করে (চাইলে শ্রেণি ফিল্টার) প্রতিজনের অবস্থা দিন ও সংরক্ষণ করুন। ছুটির অবস্থা ড্যাশবোর্ডের আজকের উপস্থিতি অংশে দেখা যাবে।",
      modeIndividual: "একক নির্বাচন",
      modeBulk: "গুচ্ছ নির্বাচন",
      markingMode: "চিহ্নিত করার ধরন",
      bulkHint: "একাধিক শিক্ষার্থীতে টিক দিন, তারপর একসাথে সবার জন্য উপস্থিত / অনুপস্থিত / ছুটি প্রয়োগ করুন।",
      selectedLabel: "নির্বাচিত",
      selectAll: "সব নির্বাচন",
      clearSelection: "বাতিল",
      applyToSelected: "নির্বাচিতদের জন্য প্রয়োগ:",
      bulkApplied: "জন শিক্ষার্থী চিহ্নিত হয়েছে — দেখে নিয়ে সংরক্ষণ করুন",
      unmarked: "চিহ্নিত হয়নি",
      photoTitle: "প্রোফাইল ছবি",
      photoUpload: "ছবি আপলোড করুন",
      photoChange: "ছবি পরিবর্তন করুন",
      photoRemove: "ছবি সরান",
      photoSaved: "প্রোফাইল ছবি আপডেট হয়েছে",
      photoRemoved: "প্রোফাইল ছবি সরানো হয়েছে",
      photoInvalid: "একটি বৈধ ছবি নির্বাচন করুন (JPG/PNG/WebP, ২ MB এর মধ্যে)",
      photoHint: "JPG / PNG / WebP, সর্বোচ্চ ২ MB — স্বয়ংক্রিয়ভাবে ছোট করা হবে।",
    },

    identityPage: {
      title: "শিক্ষার্থী পরিচয়",
      subtitle: "শিক্ষার্থীর রোল, রেজিস্ট্রেশন ও আইডি-কার্ড তথ্য রক্ষণাবেক্ষণ",
      // maintainer assignment (admin)
      maintainersTitle: "রক্ষণাবেক্ষণকারী",
      maintainersHint: "কে রোল, রেজিস্ট্রেশন ও কার্ড তথ্য রক্ষণাবেক্ষণ করতে পারবে তা ঠিক করুন — অ্যাডমিন সবসময় পারবেন। একজন কর্মীকে নির্বাচন করুন, চাইলে নির্দিষ্ট শ্রেণির মধ্যে সীমাবদ্ধ করুন। তার স্টাফ লগইন শুধু এই পৃষ্ঠায় প্রবেশাধিকার পাবে।",
      selectStaff: "কর্মী",
      scopeLabel: "শ্রেণি পরিসর",
      allClassesScope: "সব শ্রেণি",
      assign: "নির্ধারণ করুন",
      removeConfirm: "শিক্ষার্থী পরিচয় রক্ষণাবেক্ষণের প্রবেশাধিকার সরাতে চান —",
      assigned: "রক্ষণাবেক্ষণকারী নির্ধারিত হয়েছে",
      removed: "রক্ষণাবেক্ষণকারী সরানো হয়েছে",
      // students table
      studentsTitle: "শিক্ষার্থী",
      studentsHint: "প্রতিটি শিক্ষার্থীর রোল, বোর্ড রেজিস্ট্রেশন নম্বর ও আইডি-কার্ড তথ্য সেট করুন। আইডি নম্বর, রক্তের গ্রুপ ও মেয়াদ সার্টিফিকেটের আইডি কার্ডে ছাপা হয়; কার্ড নং (আরএফআইডি) উপস্থিতি মেশিন পড়ে থাকে।",
      studentsHintManager: "আপনার নির্ধারিত পরিসরের শিক্ষার্থীদের রোল, রেজিস্ট্রেশন ও কার্ড তথ্য আপনি রক্ষণাবেক্ষণ করতে পারবেন।",
      searchPlaceholder: "রোল, নাম, রেজিস্ট্রেশন খুঁজুন…",
      roll: "রোল",
      registrationNo: "রেজিস্ট্রেশন নং",
      cardNo: "আইডি নং",
      rfidCardNo: "কার্ড নং (আরএফআইডি)",
      bloodGroup: "রক্তের গ্রুপ",
      cardIssuedAt: "কার্ড ইস্যুর তারিখ",
      cardValidTill: "মেয়াদ",
      editTitle: "পরিচয় সম্পাদনা",
      updated: "শিক্ষার্থীর পরিচয় তথ্য হালনাগাদ হয়েছে",
      rollRequired: "রোল আবশ্যক",
      rollExists: "এই রোল ইতোমধ্যে অন্য একজন শিক্ষার্থী ব্যবহার করছে",
      registrationExists: "এই রেজিস্ট্রেশন নম্বর ইতোমধ্যে অন্য একজন শিক্ষার্থী ব্যবহার করছে",
      rollAutoHint: "স্বয়ংক্রিয় পরবর্তী রোল নম্বর পেতে খালি রাখুন",
      noStudents: "কোনো শিক্ষার্থী পাওয়া যায়নি",
      noAccess: "প্রবেশাধিকার নেই",
      noAccessHint: "আপনার প্রতিষ্ঠানের অ্যাডমিন আপনাকে শিক্ষার্থী পরিচয় তথ্য রক্ষণাবেক্ষণের দায়িত্ব দেননি।",
    },

    feesPage: {
      title: "ফি ব্যবস্থাপনা",
      subtitle: "ফি খাত, ধার্যকরণ, আদায়, বাকি প্রতিবেদন ও ড্যাশবোর্ড",
      tabOverview: "সারসংক্ষেপ ও বাকি",
      tabHeads: "ফি খাতসমূহ",
      tabAssign: "ফি ধার্য করুন",
      tabCollections: "আদায়",
      tabSubjectFees: "বিষয়ভিত্তিক ফি",
      sfMonth: "মাস",
      sfGenerate: "শিডিউল তৈরি করুন",
      sfGenerateHint: "নির্বাচিত মাসের জন্য প্রতি শিক্ষার্থী × বিষয় একটি করে ফি শিডিউল তৈরি হবে (আগে তৈরি হলে বাদ) — স্বাভাবিক আদায় প্রক্রিয়া থেকেই আদায় করুন।",
      sfSubjects: "বিষয়",
      sfMonthly: "মাসিক মোট",
      sfAssign: "বিষয় নির্ধারণ",
      sfAssignHint: "এই শিক্ষার্থীর নেওয়া বিষয়গুলো টিক দিন এবং প্রতিটির মাসিক ফি লিখুন।",
      sfNoSubjects: "কোনো বিষয় পাওয়া যায়নি — আগে একাডেমিক তথ্যে বিষয় যোগ করুন।",
      sfSaved: "বিষয়ভিত্তিক ফি সংরক্ষিত হয়েছে।",
      sfGenerated: "{created}টি ফি শিডিউল তৈরি হয়েছে ({skipped}টি আগেই ছিল)।",
      sfMonthRequired: "আগে একটি মাস নির্বাচন করুন।",
      sfRatesTitle: "বিষয়ভিত্তিক ফি হার",
      sfRatesSubtitle: "প্রতি বিষয়ের ডিফল্ট মাসিক ফি — শিক্ষার্থী ধার্য করার সময় স্বয়ংক্রিয়ভাবে পূরণ হয়",
      sfRatesSet: "টি হার নির্ধারিত",
      sfRatesHint: "প্রতিটি বিষয়ের প্রচলিত মাসিক ফি নির্ধারণ করুন (যেমন গণিত ১০০০, বাংলা ৮০০); ০ দিলে হার মুছে যাবে। ধার্যকরণে এই টাকা স্বয়ংক্রিয়ভাবে আসবে এবং প্রয়োজনে শিক্ষার্থীভেদে পরিবর্তনযোগ্য।",
      sfRatesSaved: "বিষয়ভিত্তিক ফি হার সংরক্ষিত হয়েছে।",
      cfDetailsTitle: "লেনদেনের তথ্য",
      cfTxnId: "লেনদেন আইডি (TrxID)",
      cfAccount: "প্রেরকের অ্যাকাউন্ট / ওয়ালেট নম্বর",
      cfBank: "ব্যাংকের নাম",
      cfBranch: "শাখা",
      cfRef: "চেক / ট্রান্সফার রেফারেন্স নং",
      cfAcNo: "অ্যাকাউন্ট নম্বর",
      cfCardType: "কার্ডের ধরন",
      cfCredit: "ক্রেডিট",
      cfDebit: "ডেবিট",
      cfPrepaid: "প্রিপেইড",
      cfLast4: "কার্ডের শেষ ৪ ডিজিট",
      cfApproval: "অ্যাপ্রুভাল / রেফারেন্স নং",
      cfCashHint: "নগদ (ক্যাশ) আদায় — অতিরিক্ত লেনদেনের তথ্যের প্রয়োজন নেই।",
      cfDetailsRequired: "এই পেমেন্ট মেথডের প্রয়োজনীয় লেনদেনের তথ্যগুলো পূরণ করুন।",
      sfGroupPre: "এই শিক্ষার্থীর গ্রুপের বিষয়গুলো কন্ট্রোল প্যানেলের সেট থেকে আগেই নির্বাচিত — ফি ঠিক করে সংরক্ষণ করুন।",
      sfDeptPre: "এই শিক্ষার্থীর ডিপার্টমেন্টের বিষয়গুলো কন্ট্রোল প্যানেলের সেট থেকে আগেই নির্বাচিত — ফি ঠিক করে সংরক্ষণ করুন।",
      newHead: "নতুন ফি খাত",
      headName: "নাম",
      headNameBn: "নাম (বাংলা)",
      headType: "ধরন",
      defaultAmount: "ডিফল্ট পরিমাণ",
      schedulesCount: "ধার্যকরণ",
      assignFee: "ফি ধার্য করুন",
      assignTo: "যাদের জন্য",
      entireClass: "সম্পূর্ণ শ্রেণি",
      individualStudent: "একক শিক্ষার্থী",
      feeTitle: "শিরোনাম",
      feeTitlePlaceholder: "যেমন: আগস্ট বেতন / ভর্তি ২০২৬",
      dueDate: "শেষ তারিখ",
      month: "মাস (ঐচ্ছিক)",
      amountLabel: "পরিমাণ (টাকা)",
      assign: "ধার্য করুন",
      scheduleCreated: "১টি ফি ধার্যকরণ তৈরি হয়েছে",
      schedulesCreated: "ফি ধার্যকরণ তৈরি হয়েছে",
      classStudentsNone: "এই শ্রেণিতে কোনো সক্রিয় শিক্ষার্থী পাওয়া যায়নি",
      targetRequired: "একজন শিক্ষার্থী বা একটি শ্রেণি নির্বাচন করুন",
      collectFee: "ফি আদায় করুন",
      recordCollection: "ফি আদায় রেকর্ড করুন",
      studentLabel: "শিক্ষার্থী",
      scheduleLabel: "ফি (ঐচ্ছিক)",
      unspecific: "সাধারণ পেমেন্ট (কোনো ফির সাথে সম্পর্কিত নয়)",
      collectionRecorded: "আদায় রেকর্ড হয়েছে:",
      collectedTotal: "আদায়কৃত",
      dueTotal: "মোট বাকি",
      assignedTotal: "মোট ধার্যকৃত",
      assignments: "ধার্যকরণ",
      activeStudents: "সক্রিয় শিক্ষার্থী",
      byHead: "ফি খাত অনুযায়ী",
      dueReport: "বাকি প্রতিবেদন",
      dueSearchPlaceholder: "শিক্ষার্থী, রোল বা ফি খুঁজুন…",
      dueHeadAll: "সব খাত",
      dueOverdue: "মেয়াদোত্তীর্ণ",
      dueUpcoming: "আসন্ন",
      noDueFees: "কোনো বাকি ফি নেই — সব পরিশোধিত 🎉",
      monthlyCollections: "আদায় (শেষ ৬ মাস)",
      historyTitle: "সাম্প্রতিক আদায়",
      claimsTitle: "অনলাইন পেমেন্ট ক্লেইম",
      claimRefCol: "রেফারেন্স",
      claimGeneralItem: "সাধারণ ফি পরিশোধ",
      claimPending: "অপেক্ষমাণ",
      claimApproved: "অনুমোদিত",
      claimRejected: "প্রত্যাখ্যাত",
      claimAll: "সব",
      claimApproveConfirm: "এই পেমেন্ট ক্লেইম অনুমোদন করবেন? এর জন্য একটি ফি কালেকশন (ইনভয়েস) রেকর্ড হবে।",
      claimRejectConfirm: "এই পেমেন্ট ক্লেইম প্রত্যাখ্যান করবেন? শিক্ষার্থী এটি প্রত্যাখ্যাত হিসেবে দেখবে।",
      claimApprovedMsg: "পেমেন্ট ক্লেইম অনুমোদিত — ইনভয়েস রেকর্ড হয়েছে",
      claimRejectedMsg: "পেমেন্ট ক্লেইম প্রত্যাখ্যাত হয়েছে",
      claimStale: "এই ক্লেইম আর অনুমোদন করা যাবে না — ফি আইটেমটি ইতিমধ্যে সম্পূর্ণ পরিশোধ হয়ে গেছে",
      claimsHint: "শিক্ষার্থী/অভিভাবক তাদের পোর্টাল থেকে ট্রানজেকশন রেফারেন্স জমা দেয়; অনুমোদন করলে ফি আইটেমে ইনভয়েস বসে।",
      headInUse: "এই ফি খাতের ধার্যকরণ আছে, মুছে ফেলা যাবে না",
      headCreated: "ফি খাত তৈরি হয়েছে",
      headUpdated: "ফি খাত আপডেট হয়েছে",
    },

    accountsPage: {
      title: "হিসাব",
      subtitle: "আয়-ব্যয়ের ভাউচার ও আর্থিক রিপোর্ট",
      tabOverview: "সারসংক্ষেপ",
      tabHeads: "খাতসমূহ",
      tabVouchers: "ভাউচার",
      tabReport: "রিপোর্ট",
      totalIncome: "মোট আয়",
      totalExpense: "মোট ব্যয়",
      balance: "ব্যালেন্স (উদ্বৃত্ত / ঘাটতি)",
      voucherCount: "ভাউচার",
      incomeVsExpense: "আয় বনাম ব্যয় (শেষ ১২ মাস)",
      income: "আয়",
      expense: "ব্যয়",
      recentEntries: "সাম্প্রতিক ভাউচার",
      head: "খাত",
      newHead: "নতুন খাত",
      editHead: "খাত সম্পাদনা",
      headName: "খাতের নাম (ইংরেজি)",
      headNameBn: "খাতের নাম (বাংলা)",
      headExists: "এই নামে একটি খাত ইতোমধ্যে আছে",
      headInUse: "এই খাতে ভাউচার আছে — মুছে ফেলা যাবে না",
      noHeads: "এখনো কোনো খাত নেই — ভাউচার লিখতে প্রথমে একটি খাত তৈরি করুন",
      entriesCount: "টি ভাউচার",
      voucherNo: "ভাউচার নং",
      party: "পক্ষ (প্রাপ্ত / পরিশোধ)",
      createdBy: "গ্রহণকারী",
      newVoucher: "নতুন ভাউচার",
      selectHead: "খাত নির্বাচন করুন",
      voucherCreated: "ভাউচার রেকর্ড হয়েছে",
      voucherDeleted: "ভাউচার মুছে ফেলা হয়েছে",
      deleteVoucherConfirm: "এই ভাউচারটি মুছে ফেলবেন? পরে ফেরানো যাবে না।",
      noVouchers: "নির্বাচিত ফিল্টারে কোনো ভাউচার পাওয়া যায়নি",
      allHeads: "সব খাত",
      fromDate: "শুরুর তারিখ",
      toDate: "শেষ তারিখ",
      apply: "প্রয়োগ",
      reset: "রিসেট",
      reportTitle: "আয়-ব্যয় বিবরণী",
      reportPeriod: "সময়কাল",
      incomeDistribution: "আয়ের বিভাজন",
      expenseDistribution: "ব্যয়ের বিভাজন",
      incomeStatement: "আয়ের বিবরণী",
      expenseStatement: "ব্যয়ের বিবরণী",
      surplus: "উদ্বৃত্ত / (ঘাটতি)",
      monthlyBreakdown: "মাসভিত্তিক বিবরণ",
      print: "প্রিন্ট",
      exportCsv: "CSV ডাউনলোড",
      exportVouchers: "ভাউচার ডাউনলোড",
      grandTotal: "সর্বমোট",
      noReportData: "এই সময়ে কোনো ভাউচার নেই",
      generatedOn: "তৈরির তারিখ",
      statementOf: "আয়-ব্যয় বিবরণী",
    },

    resultsPage: {
      title: "পরীক্ষার ফলাফল",
      subtitle: "প্রতিষ্ঠানের ধরন অনুযায়ী ফলাফল ব্যবস্থা — প্রাথমিক শিক্ষা গ্রেডিং এখন চালু",
      systemFor: "ফলাফল ব্যবস্থা",
      operational: "চালু",
      operationalFor: "আপনার প্রতিষ্ঠানের ধরনের জন্য চালু আছে",
      setupOnly: "শুধু সেটআপ",
      setupOnlyNote:
        "এই প্রতিষ্ঠানগুলোর ফলাফল ব্যবস্থা ভবিষ্যৎ সংস্করণের জন্য সংরক্ষিত। বর্তমানে শুধু প্রাথমিক শিক্ষার ফলাফল সম্পূর্ণ চালু।",
      currentType: "আপনার প্রতিষ্ঠানের ধরন",
      selectExam: "ফলাফল শীট দেখতে একটি পরীক্ষা নির্বাচন করুন",
      resultSheet: "ফলাফল শীট",
      gradeScale: "গ্রেডিং স্কেল (প্রাথমিক)",
      fullMarks: "পূর্ণ",
      obtained: "প্রাপ্ত",
      grade: "গ্রেড",
      total: "মোট",
      percent: "%",
      position: "স্থান",
      result: "ফলাফল",
      passed: "উত্তীর্ণ",
      failed: "অকৃতকার্য",
      failedSubjects: "অকৃতকার্য বিষয়সমূহ",
      incomplete: "অসম্পূর্ণ",
      publish: "ফলাফল প্রকাশ করুন",
      unpublish: "ফলাফল প্রকাশ বাতিল",
      publishConfirm: "ফলাফল প্রকাশ করবেন? প্রকাশিত থাকা অবস্থায় নম্বর এন্ট্রি লক থাকবে।",
      unpublishConfirm: "ফলাফল প্রকাশ বাতিল করবেন? নম্বর এন্ট্রি আবার খুলে যাবে।",
      published: "ফলাফল প্রকাশিত — নম্বর এন্ট্রি লক",
      unpublished: "ফলাফল প্রকাশ বাতিল — নম্বর এন্ট্রি আনলক",
      noExams: "কোনো পরীক্ষা নেই — প্রথমে পরীক্ষা মডিউল থেকে পরীক্ষা তৈরি করুন",
      marksEntered: "নম্বর দেওয়া হয়েছে",
      subjectsCount: "বিষয়",
      print: "প্রিন্ট",
      missing: "নম্বর দেওয়া হয়নি",
      studentsCount: "জন শিক্ষার্থী",
      formatLabel: "ফলাফলের ধরন",
      formats: { SINGLE: "সিঙ্গেল ফরম্যাট", PERIODICAL: "পিরিয়ডিক্যাল ফরম্যাট", FINAL: "সমন্বিত (সব পরীক্ষা)", COMBINED: "চূড়ান্ত ফলাফল (৩ সেট)", HIGHSCHOOL: "উচ্চ বিদ্যালয় ফলাফল" },
      hsTypeLabel: "শীটের ধরন",
      hsWithOptional: "ঐচ্ছিক বিষয়সহ",
      hsCombineLabel: "বিষয় একত্র করুন (একটি গ্রেড পয়েন্ট / অক্ষর গ্রেড)",
      hsCombineHint: "দুটি বা বেশি বিষয় বেছে নিন একটি গ্রেড সেলে একত্র করতে — ১ম/২য় পত্র স্বয়ংক্রিয়ভাবে জোড়া হয়।",
      hsWithoutOptional: "ঐচ্ছিক বিষয় ছাড়া",
      gradePointCol: "গ্রেড পয়েন্ট",
      letterGradeCol: "অক্ষর গ্রেড",
      optionalGroupLabel: "ঐচ্ছিক বিষয়",
      optNote: "জিপিএ নিয়ম: ঐচ্ছিক বিষয়ের ২.০০ এর উপরের পয়েন্টই গণনায় আসে — {subject}: {gp} − ২.০০ = {excess} জিপিএ-তে যোগ হয়",
      optNoteExcluded: "{subject} শুধু তথ্যের জন্য দেখানো হয়েছে — এই শীটে এর (জিপি − ২) বোনাস প্রয়োগ হয় না",
      gpaLabel: "জিপিএ",
      formatHint: {
        SINGLE: "একটি নির্বাচিত পরীক্ষার ফলাফল — মেধা তালিকাসহ সারসংক্ষেপ",
        PERIODICAL: "শ্রেণির পিরিয়ডিক্যাল পরীক্ষাগুলোর গড় — মেধা তালিকাসহ সারসংক্ষেপ",
        FINAL: "শ্রেণির সকল পরীক্ষার সম্মিলিত ফলাফল — মেধা তালিকাসহ সারসংক্ষেপ",
        COMBINED: "তিনটি পরীক্ষা সেট (প্রতিটিতে টিউটোরিয়াল + সেমিস্টার) থেকে আপনার নির্ধারিত নম্বরের অনুপাত ও পাসের অনুপাতে ওয়েটেড চূড়ান্ত ফলাফল",
        HIGHSCHOOL: "উচ্চ বিদ্যালয় মার্কশীট — CQ / MCQ / অ্যাপ্লাইড ভাগ, জোড়া পেপার গ্রেড ও জিপিএ",
      },
      formulaBadge: "ফলাফলের সূত্র",
      formulaTitle: "এই ফলাফল যেভাবে হিসাব হয়",
      formulaSingle: [
        "বিষয়ের নম্বর = তার পেপারগুলোর যোগফল (CQ + MCQ + অ্যাপ্লাইড); বিষয়ের পূর্ণমান = পেপারগুলোর পূর্ণমানের যোগফল।",
        "বিষয়ে পাস: প্রাপ্ত নম্বর ≥ বিষয়ের পূর্ণমানের ৩৩%।",
        "শতকরার ভিত্তিতে জাতীয় ৭-স্তর স্কেল অনুযায়ী লেটার গ্রেড ও গ্রেড পয়েন্ট (A+ ≥ ৮০% … F < ৩৩%)।",
        "মোট = বিষয়ভিত্তিক নম্বরের যোগফল; সার্বিক গ্রেড মোট শতকরা অনুসারে নির্ধারিত।",
        "ফলাফল: কোনো বিষয়ে ফেল হলে FAILED, নম্বর অনুপস্থিত থাকলে INCOMPLETE — অন্যথায় PASSED।",
        "মেধাস্থান: পূর্ণ নম্বরসহ শিক্ষার্থীদের মোট নম্বর অনুসারে (উচ্চ থেকে নিম্ন) ১, ২, ৩… ক্রমে স্থান; Highest কলামে বিষয়ভিত্তিক শ্রেণির সর্বোচ্চ নম্বর।",
      ],
      formulaPeriodical: [
        "শ্রেণির সব পিরিয়ডিক্যাল পরীক্ষা পাশাপাশি দেখানো হয়; বিষয়ের সম্মিলিত নম্বর = পরীক্ষার কলামগুলোর যোগফল।",
        "বিষয়ের পূর্ণমান = ওই পরীক্ষাগুলোর সব পেপারের পূর্ণমানের যোগফল; পাস ≥ ৩৩%।",
        "গ্রেড, সার্বিক ফলাফল ও মেধা ক্রম সিঙ্গেল ফরম্যাটের নিয়ম অনুসরণ করে।",
      ],
      formulaFinal: [
        "আপনার নির্বাচিত পরীক্ষাগুলো পাশাপাশি দেখানো হয়; বিষয়ের সম্মিলিত নম্বর = নির্বাচিত কলামগুলোর যোগফল।",
        "পাসে ≥ বিষয়ের সম্মিলিত পূর্ণমানের ৩৩% প্রয়োজন; গ্রেড ৭-স্তর স্কেল অনুযায়ী।",
        "মেধাস্থান সিঙ্গেল ফরম্যাটের মতোই সম্মিলিত মোট অনুসারে পূর্ণ শিক্ষার্থীদের ক্রম দেয়।",
      ],
      formulaCombined: [
        "প্রতিটি সেটের নম্বর = সেই সেটের টিউটোরিয়াল + সেমিস্টার পেপারের নম্বর।",
        "ওয়েটেড বিষয়-মোট = Σ (সেটের নম্বর × সেটের ওজন ÷ ১০০); ওয়েটেড পূর্ণমান = Σ (পেপারের পূর্ণমান × ওজন ÷ ১০০)।",
        "বিষয়ের ওয়েটেড মোট ≥ পাসের অনুপাত × ওয়েটেড পূর্ণমান হলে পাস (ওজন ও পাসের অনুপাত উপরের ফর্মে নির্ধারিত)।",
        "সর্বমোট = ওয়েটেড বিষয়-মোটের যোগফল; কোনো বিষয়ে ফেল হলে FAILED, সব বিষয়ে নম্বর না আসা পর্যন্ত INCOMPLETE।",
        "মেধাস্থান: পূর্ণ শিক্ষার্থীদের ওয়েটেড সর্বমোট অনুসারে ক্রম।",
      ],
      formulaHighSchool: [
        "পেপারগুলো ইউনিটে একত্রিত হয় — বিষয়ের ১ম ও ২য় পেপারের জোড় স্বয়ংক্রিয়ভাবে একটি ইউনিট।",
        "জোড়া পেপারে পাস (বাংলাদেশ নিয়ম, ডিফল্ট): দুই পেপারের সম্মিলিত নম্বরে পাস নির্ধারিত — যোগফল ≥ সম্মিলিত পূর্ণমানের ৩৩% (যেমন ইংরেজি ১ম পেপারে ৩০ + ২য় পেপারে ৩৬ = ২০০-এর মধ্যে ৬৬ → পাস)। 'প্রতিটি পেপার আলাদাভাবে' অপশনে বদলে প্রতিটি পেপারে আলাদা ৩৩% নির্ধারণ করা যায়।",
        "প্রতিটি ইউনিট শতকরা অনুযায়ী ৭-স্তর স্কেলের গ্রেড পয়েন্ট পায়।",
        "জিপিএ = আবশ্যিক ইউনিটগুলোর পয়েন্টের গড়; ঐচ্ছিক বিষয় কেবল ২.০০-এর অতিরিক্ত পয়েন্ট যোগ করে (জিপিএ সর্বোচ্চ ৫.০০)।",
        "একটি ইউনিটে ফেল হলেই ফুটার গ্রেড F; অন্যথায় লেটার গ্রেড আসে (জিপিএ ÷ ৫) × ১০০ অনুসারে।",
        "মেধাস্থান: সব বিষয়ে পাস করা শিক্ষার্থীরা আগে — সর্বোচ্চ মোট নম্বর, এরপর সর্বোচ্চ জিপিএ, এরপর সর্বোচ্চ উপস্থিতি অনুসারে; ফেল যারা করেছে তারা পরে — প্রথমে ন্যূনতম ফেল করা বিষয়, এরপর একই নম্বর → জিপিএ → উপস্থিতি ক্রম।",
      ],
      hsPassCombined: "সম্মিলিত নম্বরে পাস",
      hsPassEach: "প্রতিটি পেপার আলাদা",
      hsPassCombinedHint: "বাংলাদেশ নিয়ম — ১ম+২য় পেপারের জোড় সম্মিলিত নম্বরে পাস: যোগফল ≥ সম্মিলিত পূর্ণমানের ৩৩% (যেমন ৬৬/২০০)",
      hsPassEachHint: "প্রতিটি পেপারকে নিজের পূর্ণমানের ৩৩% আলাদাভাবে অর্জন করতে হবে",
      showParts: "CQ / MCQ / Applied দেখান",
      partsOff: "শুধু মোট নম্বর",
      cq: "সিকিউ",
      mcq: "এমসিকিউ",
      applied: "অ্যাপ্লায়েড",
      selectClass: "শ্রেণি নির্বাচন করুন",
      aggregatedFrom: "সম্মিলিত হয়েছে",
      examsWord: "টি পরীক্ষা থেকে",
      noPeriodicalForClass: "এই শ্রেণির কোনো পিরিয়ডিক্যাল পরীক্ষা নেই",
      noExamsForClass: "এই শ্রেণির কোনো পরীক্ষা নেই",
      meritList: "মেধা তালিকা",
      meritPos: "মেধা",
      pickExams: "পরীক্ষা সমন্বয় করুন",
      pickExamsHint: "ড্রপডাউন থেকে নির্বাচন করুন — খালি রাখলে সব",
      addExam: "+ পরীক্ষা যোগ করুন…",
      clearAll: "সব মুছুন",
      combining: "সমন্বিত হচ্ছে",
      activities: "কার্যক্রম",
      signGuardian: "অভিভাবকের স্বাক্ষর",
      signTeacher: "শিক্ষকের স্বাক্ষর",
      signPrincipal: "প্রধান শিক্ষকের স্বাক্ষর",
      issueDate: "প্রদানের তারিখ",
      examLabel: "পরীক্ষা",
      sheetTitle: "ফলাফল বিবরণী",
      resultSheetTitle: "ফলাফল বিবরণী",
      finalQueryTitle: "চূড়ান্ত ফলাফল অনুসন্ধান",
      finalQueryHint: "তিনটি পরীক্ষা সেট (প্রতিটিতে টিউটোরিয়াল + সেমিস্টার) নির্বাচন করে প্রতিটি সেটের নম্বরের অনুপাত ও পাসের অনুপাত নির্ধারণ করুন — তারপর শিক্ষার্থী তালিকা লোড করুন",
      instituteLabel: "প্রতিষ্ঠান",
      passInPct: "পাসের অনুপাত (%)",
      tutorialLabel: "টিউটোরিয়াল",
      semesterLabel: "সেমিস্টার",
      setLabel1: "১ম পরীক্ষা সেট",
      setLabel2: "২য় পরীক্ষা সেট",
      setLabel3: "বার্ষিক পরীক্ষা সেট",
      setFull1: "প্রথম টার্ম পরীক্ষা",
      setFull2: "দ্বিতীয় টার্ম পরীক্ষা",
      setFull3: "তৃতীয় টার্ম পরীক্ষা",
      setShort1: "১ম",
      setShort2: "২য়",
      setShort3: "বার্ষিক",
      ratioLabel: "অনুপাত (%)",
      studentListBtn: "ফলাফল দেখুন",
      hsIncrelogPattern: "ইনক্রিলগ প্যাটার্ন",
      hsBoardPattern: "বোর্ড প্যাটার্ন",
      hsIncrelogPatternHint: "বর্তমান ইনক্রিলগ মার্কশিট লেআউট",
      hsBoardPatternHint: "বোর্ড স্টাইলের একাডেমিক ট্রান্সক্রিপ্ট — পেয়ার বিষয়গুলো একটি করে দেখানো হয়",
      weightsSumHint: "তিনটি অনুপাত সাধারণত একসাথে ১০০% হয়",
      examNone: "— নেই —",
      finalEmpty: "একটি শ্রেণি ও অন্তত একটি পরীক্ষা নির্বাচন করে ফলাফল দেখুন চাপুন",
      finalBlock: "চূড়ান্ত ফলাফল",
      totalMarksCol: "মোট নম্বর",
      fatherLabel: "পিতা",
      motherLabel: "মাতা",
      sessionLabel: "শিক্ষাবর্ষ",
      periodicalExam: "পিরিয়ডিক্যাল পরীক্ষা",
      marksCol: "নম্বর",
      highestCol: "সর্বোচ্চ",
      statusCol: "অবস্থা",
      academicDay: "শিক্ষা দিবস",
      present: "উপস্থিত",
      absent: "অনুপস্থিত",
      progress: "অগ্রগতি",
      inProcess: "চলমান",
      good: "ভালো",
      better: "উত্তম",
      needImprovement: "উন্নতি প্রয়োজন",
      bad: "খারাপ",
      authorization: "অনুমোদন",
      gradeScaleTitle: "গ্রেডিং স্কেল",
      gradeCol: "গ্রেড",
      gradeMarksCol: "নম্বর (%)",
      scanToVerify: "যাচাই করতে স্ক্যান করুন",
      developedBy: "ইনক্রিলগ ইউনিফাইড সলিউশনস দ্বারা উন্নত",
      verifyTitle: "ফলাফল যাচাই",
      verifySubtitle: "ফলাফল শীটের QR কোড স্ক্যান করেছেন? এটি নিশ্চিতকরণ।",
      verifyValid: "বৈধ ফলাফল কপি",
      verifyInvalid: "অবৈধ কপি",
      verifyInvalidNote: "এই QR কোডটি প্রকৃত নয় — ফলাফল কপি পরিবর্তিত হতে পারে। অনুগ্রহ করে প্রতিষ্ঠানের সাথে যোগাযোগ করুন।",
      verifyInstitution: "প্রতিষ্ঠান",
      verifyDocument: "নথি",
      verifyIssued: "ইস্যুর তারিখ",
      colorsLabel: "রঙের থিম",
      primaryLabel: "প্রাথমিক রঙ",
      accentLabel: "অ্যাকসেন্ট রঙ",
      fieldsLabel: "হেডার / শীটে দেখান",
      fieldNames: {
        photo: "ছবি", father: "পিতা", mother: "মাতা", roll: "রোল",
        className: "শ্রেণি", section: "শাখা", shift: "শিফট", session: "শিক্ষাবর্ষ",
        attendance: "উপস্থিতি", progress: "অগ্রগতি",
      },
    },

    examsPage: {
      title: "পরীক্ষা",
      subtitle: "শ্রেণি ও শিফট অনুযায়ী পরীক্ষা ব্যবস্থাপনা ও পরীক্ষার রুটিন তৈরি করুন",
      tabExams: "পরীক্ষাসমূহ",
      tabSchedule: "রুটিন",
      examName: "পরীক্ষার নাম (ইংরেজি)",
      examNameBn: "পরীক্ষার নাম (বাংলা)",
      classLabel: "শ্রেণি",
      shiftLabel: "শিফট",
      startDate: "শুরুর তারিখ",
      endDate: "শেষ তারিখ",
      papers: "পত্র",
      newExam: "নতুন পরীক্ষা",
      editExam: "পরীক্ষা সম্পাদনা",
      selectExam: "পরীক্ষা নির্বাচন করুন",
      noExams: "এখনো কোনো পরীক্ষা তৈরি হয়নি",
      noPapers: "এই পরীক্ষার জন্য এখনো কোনো পত্র নির্ধারিত হয়নি",
      addPaper: "পত্র যোগ করুন",
      subject: "বিষয়",
      date: "তারিখ",
      startTime: "শুরুর সময়",
      endTime: "শেষের সময়",
      room: "কক্ষ",
      fullMarks: "পূর্ণমান",
      examCreated: "পরীক্ষা তৈরি হয়েছে",
      examUpdated: "পরীক্ষা আপডেট হয়েছে",
      examDeleted: "পরীক্ষা মুছে ফেলা হয়েছে",
      paperAdded: "রুটিনে পত্র যোগ হয়েছে",
      paperDeleted: "পত্র বাদ দেওয়া হয়েছে",
      roomClash: "এই তারিখে ওই সময়ে কক্ষটি ইতোমধ্যে নির্ধারিত",
      subjectExists: "এই পরীক্ষায় এই বিষয়ের পত্র ইতোমধ্যে আছে",
      deleteExamConfirm: "পরীক্ষাটি মুছে ফেলবেন? এর সব নির্ধারিত পত্রও মুছে যাবে।",
      deletePaperConfirm: "রুটিন থেকে এই পত্রটি বাদ দেবেন?",
      endBeforeStart: "শেষের সময় শুরুর পরে হতে হবে",
      filterClass: "শ্রেণি",
      allClasses: "সব শ্রেণি",
      filterShift: "শিফট",
      allShifts: "সব শিফট",
      scheduleOf: "রুটিন —",
      branchLabel: "ব্রাঞ্চ (প্রতিষ্ঠান)",
      mainBranch: "প্রধান",
      sectionLabel: "শাখা",
      groupLabel: "গ্রুপ",
      departmentLabel: "বিভাগ",
      totalMarks: "মোট নম্বর",
      outOfMarks: "আউট অফ মার্কস",
      cqMarks: "সৃজনশীল (CQ) নম্বর",
      outOfCqMarks: "আউট অফ CQ মার্কস",
      mcqMarks: "নৈর্ব্যক্তিক (MCQ) নম্বর",
      outOfMcqMarks: "আউট অফ MCQ মার্কস",
      appliedMarks: "প্রায়োগিক নম্বর",
      outOfAppliedMarks: "আউট অফ প্রায়োগিক মার্কস",
      appliedExamDate: "প্রায়োগিক পরীক্ষার তারিখ",
      appliedShort: "প্রায়োগিক",
      marksColumn: "নম্বর",
      marksSection: "নম্বর বিভাজন",
      marksHint: "\"আউট অফ\" ঘরগুলো ন্যূনতম পাস নম্বর বোঝায়",
      passExceedsMarks: "পাস নম্বর পূর্ণমানের চেয়ে বেশি হতে পারে না",
      publishSchedule: "রুটিন প্রকাশ",
      publishedBadge: "প্রকাশিত",
      allowEdit: "সম্পাদনার অনুমতি",
      publishConfirm: "এই পরীক্ষার রুটিন প্রকাশ করবেন? অ্যাডমিন আবার সম্পাদনার অনুমতি না দেওয়া পর্যন্ত পত্র সম্পাদনা লক থাকবে।",
      allowEditConfirm: "আবার সম্পাদনার অনুমতি দেবেন? রুটিনটি অপ্রকাশিত (ড্রাফট) হয়ে যাবে।",
      schedulePublishedMsg: "পরীক্ষার রুটিন প্রকাশিত হয়েছে",
      allowEditDone: "সম্পাদনার জন্য রুটিন খুলে দেওয়া হয়েছে",
      scheduleLocked: "এই রুটিন প্রকাশিত — প্রথমে অ্যাডমিনকে সম্পাদনার অনুমতি দিতে হবে",
      editPaper: "পত্র সম্পাদনা",
      paperUpdated: "পত্র আপডেট হয়েছে",
      detailsReport: "বিস্তারিত রিপোর্ট",
      summaryReport: "সারসংক্ষেপ রিপোর্ট",
      preparedBy: "প্রস্তুতকারী",
      approvedBy: "অনুমোদনকারী (প্রতিষ্ঠান প্রধান)",
      showQr: "যাচাইকরণ QR",
      showQrHint: "প্রিন্ট করা রিপোর্টে যাচাইকরণ QR কোড দেখান/লুকান",
      reportTitle: "পরীক্ষার রুটিন রিপোর্ট",
      generatedOn: "তৈরির তারিখ",
      fullPass: "পূর্ণমান / পাস",
      totalPapers: "মোট পত্র",
      publishedOn: "প্রকাশের তারিখ",
      marksInput: "নম্বর এন্ট্রি",
      subjectWise: "বিষয়ভিত্তিক",
      studentWise: "শিক্ষার্থীভিত্তিক",
      selectSubject: "বিষয় নির্বাচন করুন",
      selectStudent: "শিক্ষার্থী নির্বাচন করুন",
      studentLabel: "শিক্ষার্থী",
      rollLabel: "রোল",
      saveMarks: "নম্বর সংরক্ষণ",
      marksSaved: "নম্বর সংরক্ষিত হয়েছে",
      marksExceedError: "নম্বর পত্রের পূর্ণমানের বেশি হতে পারে না",
      noStudents: "এই পরীক্ষার জন্য কোনো শিক্ষার্থী মেলেনি (শ্রেণি / শাখা / গ্রুপ)",
      enteredCount: "এন্ট্রি হয়েছে",
      notGradedHint: "খালি = মূল্যায়ন হয়নি",
      resultPublishedBadge: "ফলাফল প্রকাশিত",
      publishResult: "ফলাফল প্রকাশ",
      unpublishResult: "ফলাফল ফেরত",
      resultPublishTitle: "ফলাফল প্রকাশ করবেন?",
      resultPublishText: "ফলাফল প্রকাশের পর ফেরত না নেওয়া পর্যন্ত নম্বর এন্ট্রি বা সম্পাদনা করা যাবে না। এখন প্রকাশ করবেন?",
      resultUnpublishTitle: "ফলাফল ফেরত নেবেন?",
      resultUnpublishText: "নম্বর এন্ট্রি আবার চালু হয়ে যাবে। চালিয়ে যাবেন?",
      resultPublishedMsg: "ফলাফল প্রকাশিত — নম্বর এন্ট্রি লক করা হলো",
      resultUnpublishedMsg: "ফলাফল ফেরত নেওয়া হলো — নম্বর এন্ট্রি চালু",
      marksLockedTitle: "নম্বর এন্ট্রি লক করা আছে",
      marksLockedText: "এই পরীক্ষার ফলাফল প্রকাশিত, তাই নম্বর দেওয়া বা সম্পাদনা করা যাবে না। পরিবর্তন করতে ফলাফল ফেরত নিন।",
    },

    messagesPage: {
      title: "কথোপকথন",
      subtitle: "অভিভাবক ও ভর্তি আবেদনকারীদের সাথে দ্বিমুখী বার্তা আদান-প্রদান",
      threads: "কথোপকথন",
      selectThread: "বার্তা শুরু করতে একটি কথোপকথন নির্বাচন করুন",
      applicant: "আবেদনকারী",
      studentLabel: "শিক্ষার্থী",
      typePlaceholder: "একটি বার্তা লিখুন…",
      send: "পাঠান",
      noThreads: "এখনো কোনো কথোপকথন নেই",
      messageSent: "বার্তা পাঠানো হয়েছে",
      you: "প্রতিষ্ঠান",
      searchPlaceholder: "কথোপকথন খুঁজুন…",
      newChat: "নতুন চ্যাট",
      pickPerson: "যাকে মেসেজ করবেন বেছে নিন",
      peopleEmpty: "সবার সাথেই কথোপকথন আছে",
      today: "আজ",
      yesterday: "গতকাল",
      messagesCount: "টি মেসেজ",
      enterHint: "Enter চাপলে পাঠাবে · Shift+Enter নতুন লাইন",
    },

    omrPage: {
      title: "ওএমআর শীট ব্যবস্থাপনা",
      subtitle: "অ্যানসার কি, স্ক্যান করা রেসপন্স ইমপোর্ট ও স্বয়ংক্রিয় MCQ নম্বর হিসাব, তারপর পরীক্ষার নম্বরে সংরক্ষণ",
      pickExam: "ওএমআর শীট ব্যবস্থাপনার জন্য একটি পরীক্ষা নির্বাচন করুন",
      pickExamHint: "প্রতিটি পেপার ও সেটের জন্য একটি অ্যানসার কি — তারপর স্ক্যান করা রেসপন্স ইমপোর্ট করুন",
      noPapers: "এই পরীক্ষায় এখনো কোনো পেপার শিডিউল করা হয়নি",
      mcqFull: "MCQ পূর্ণমান",
      keyCol: "অ্যানসার কি",
      responsesCol: "রেসপন্স",
      addKey: "কি সেট করুন",
      editKey: "অ্যানসার কি সম্পাদনা",
      setCol: "সেট",
      questionsCol: "প্রশ্নসংখ্যা",
      markEachCol: "প্রতি প্রশ্নে নম্বর",
      negativeCol: "নেগেটিভ নম্বর",
      keyLenHint: "অক্ষর — প্রশ্নসংখ্যার সমান হতে হবে",
      keysTitle: "অ্যানসার কি",
      noKeys: "এই পেপারের জন্য কোনো কি সেট করা হয়নি",
      noKeysHint: "আগে একটি কি যোগ করুন — রেসপন্স এর বিপরীতে হিসাব হয়",
      keySaved: "অ্যানসার কি সংরক্ষিত হয়েছে",
      keyDeleted: "অ্যানসার কি মুছে ফেলা হয়েছে",
      keyDeleteConfirm: "এই কি এবং এর সব ইমপোর্ট করা রেসপন্স মুছে ফেলবেন?",
      errKeyLength: "কি-এর দৈর্ঘ্য প্রশ্নসংখ্যার সমান হতে হবে",
      errInvalidSetup: "কি সেটআপ সঠিক নয় — মানগুলো পরীক্ষা করুন",
      responsesTitle: "স্ক্যান করা রেসপন্স",
      noResponses: "এখনো কোনো রেসপন্স ইমপোর্ট করা হয়নি",
      noResponsesHint: "নিচে স্ক্যানার আউটপুট (রোল, সেট, রেসপন্স) ইমপোর্ট করুন",
      importBtn: "ইমপোর্ট",
      importTitle: "স্ক্যান করা রেসপন্স ইমপোর্ট",
      importHint: "OMR স্ক্যানারের আউটপুট পেস্ট করুন — প্রতি শীটে এক লাইন: রোল, সেট, রেসপন্স (A–D, ফাঁকা হলে -)। একক কির পেপারে সেট বাদ দেওয়া যায়।",
      savedCol: "সংরক্ষিত",
      correctCol: "সঠিক",
      wrongCol: "ভুল",
      blankCol: "ফাঁকা",
      marksCol: "MCQ নম্বর",
      stMatched: "মিলেছে",
      stUnmatched: "অজানা রোল",
      stInvalid: "অবৈধ",
      pushBtn: "নম্বরে সংরক্ষণ",
      pushConfirm: "হিসাব করা MCQ নম্বরগুলো কি এই পেপারের পরীক্ষার নম্বরে লেখা হবে (মিলে যাওয়া শিক্ষার্থীরা)?",
      pushDone: "{n} জন শিক্ষার্থীর MCQ নম্বর পরীক্ষায় সংরক্ষিত হয়েছে",
      errPublished: "এই পরীক্ষার ফলাফল প্রকাশিত — নম্বর লক করা",
      errNothing: "সংরক্ষণ করার মতো কিছু মেলেনি — আগে রেসপন্স ইমপোর্ট করুন",
      errNoRows: "ইমপোর্ট করার কিছু নেই — আগে লাইন পেস্ট করুন",
      manage: "ব্যবস্থাপনা",
      scanBtn: "শীট স্ক্যান",
      scanTitle: "ওএমআর শীট স্ক্যান",
      scanHint: "পূরণ করা ছাপা শীটের ছবি তুলুন (৪টি কোণার চিহ্ন সহ) — QR শিক্ষার্থী ও সেট চিনে নেয়, তারপর বাবল স্বয়ংক্রিয়ভাবে পড়া হয়।",
      scanPick: "ক্যামেরা / ছবি",
      scanSampleBtn: "নমুনা শীট দিয়ে দেখুন",
      scanSample: "নমুনা শীট স্ক্যান হয়েছে",
      scanMatchNote: "পূরণ করা উত্তরের সাথে মিল",
      scanWorking: "শীট পড়া হচ্ছে…",
      scanNoQr: "QR পড়া যায়নি — শীট সমতল রাখুন এবং চার কোণা ছবিতে আনুন",
      scanFailed: "পড়া যায়নি",
      scanQuality: "গুণমান",
      printBtn: "শীট প্রিন্ট",
      printTitle: "ওএমআর শীট প্রিন্ট",
      printRegenerate: "আবার তৈরি",
      printHint: "এই পেপারের শ্রেণির প্রতিটি শিক্ষার্থীর জন্য একটি শীট — QR, কোণার চিহ্ন ও বাবল গ্রিডসহ। প্রথম ছবিটি পূরণ করা নমুনা।",
      stepKey: "অ্যানসার কি সেট করুন (প্রতি সেটে)",
      stepImport: "স্ক্যান করা রেসপন্স ইমপোর্ট করুন",
      stepReview: "হিসাব করা নম্বর পর্যালোচনা করুন",
      stepPush: "পরীক্ষার নম্বরে সংরক্ষণ করুন",
    },

    hrPage: {
      title: "মানবসম্পদ ব্যবস্থাপনা",
      subtitle: "আপনার প্রতিষ্ঠানের কর্মকর্তা-কর্মচারী, হাজিরা, ছুটি ও বেতন",
      tabStaff: "কর্মচারী",
      tabAttendance: "হাজিরা",
      tabLeave: "ছুটি",
      tabSalary: "বেতন",
      totalStaff: "মোট কর্মচারী",
      presentToday: "আজ উপস্থিত",
      onLeaveToday: "আজ ছুটিতে",
      monthlyPayroll: "মাসিক বেতন বিল",
      newStaff: "নতুন কর্মচারী",
      editStaff: "কর্মচারী সম্পাদনা",
      employeeCode: "কর্মচারী কোড",
      joinDate: "যোগদানের তারিখ",
      monthlySalary: "মাসিক বেতন (টাকা)",
      phoneLabel: "ফোন",
      staffCreated: "কর্মচারী যোগ হয়েছে",
      staffUpdated: "কর্মচারী আপডেট হয়েছে",
      codeExists: "এই কোডে ইতোমধ্যে একজন কর্মচারী আছে",
      staffInUse:
        "এই কর্মচারীর হাজিরা, ছুটি বা বেতনের রেকর্ড আছে — অবস্থা নিষ্ক্রিয় করুন",
      noStaff: "এখনো কোনো কর্মচারী যোগ করা হয়নি",
      attendanceFor: "হাজিরা —",
      markAttendance: "হাজিরা সংরক্ষণ",
      attendanceSaved: "হাজিরা সংরক্ষিত হয়েছে",
      noAttendanceYet: "এই তারিখে এখনো হাজিরা নেই",
      newLeave: "ছুটির আবেদন",
      fromDate: "শুরুর তারিখ",
      toDate: "শেষ তারিখ",
      leaveDaysLabel: "দিন",
      leaveRequested: "ছুটির আবেদন জমা হয়েছে",
      leaveDecided: "ছুটির আবেদন আপডেট হয়েছে",
      approveLeaveConfirm: "এই ছুটির আবেদন অনুমোদন করবেন?",
      rejectLeaveConfirm: "এই ছুটির আবেদন প্রত্যাখ্যান করবেন?",
      invalidRange: "শেষ তারিখ শুরুর তারিখের পরে বা একই হতে হবে",
      noLeaves: "কোনো ছুটির আবেদন নেই",
      payrollFor: "বেতন বিল —",
      paySalary: "বেতন পরিশোধ",
      salaryPaid: "বেতন পরিশোধিত হয়েছে",
      alreadyPaid: "এই মাসে পরিশোধিত",
      payConfirm: "এই বেতন পরিশোধ রেকর্ড করবেন?",
      noSalaries: "এই মাসে কোনো বেতন পরিশোধ রেকর্ড হয়নি",
      paidLabel: "পরিশোধিত",
      dueLabel: "বাকি",
      salaryHistory: "সাম্প্রতিক পরিশোধ",
      tabAudit: "লগইন অডিট",
      auditEmpty: "এখনো কোনো লগইন তথ্য নেই",
      auditIdentifier: "লগইন আইডি",
      auditSuccess: "সফল",
      auditFailed: "ব্যর্থ",
      signatureTitle: "স্বাক্ষর",
      signatureEmpty: "কোনো স্বাক্ষর আপলোড করা হয়নি",
      signatureHint: "সাদা ব্যাকগ্রাউন্ডে PNG / JPG ভালো কাজ করে — স্বয়ংক্রিয়ভাবে ছোট করা হবে।",
      signatureSaved: "স্বাক্ষর আপডেট হয়েছে",
      signatureRemoved: "স্বাক্ষর মুছে ফেলা হয়েছে",
    },

    communicationPage: {
      title: "যোগাযোগ প্যানেল",
      subtitle: "অভিভাবক ও কর্মচারীদের কাছে এসএমএস, ইমেইল ও হোয়াটসঅ্যাপ বার্তা পাঠান",
      composeTitle: "বিজ্ঞপ্তি তৈরি করুন",
      channelsLabel: "চ্যানেল",
      audienceLabel: "প্রাপক গোষ্ঠী",
      selectClass: "শ্রেণি নির্বাচন করুন",
      selectStudent: "শিক্ষার্থী নির্বাচন করুন",
      selectStaff: "কর্মচারী নির্বাচন করুন",
      subjectLabel: "বিষয় (ইমেইলের জন্য)",
      messageLabel: "বার্তা",
      messagePlaceholder: "আপনার বিজ্ঞপ্তি লিখুন…",
      templatesLabel: "দ্রুত টেমপ্লেট",
      templateFeeReminder: "ফি রিমাইন্ডার",
      templateFeeReminderBody:
        "মাননীয় অভিভাবক, মাসিক টিউশন ফি প্রতি মাসের ১০ তারিখের মধ্যে পরিশোধ করুন। বিকাশে বা অফিসে পরিশোধ করা যাবে।",
      templateHoliday: "ছুটির নোটিশ",
      templateHolidayBody:
        "মাননীয় অভিভাবক, সরকারি ছুটির কারণে আগামীকাল প্রতিষ্ঠান বন্ধ থাকবে। পরদিন থেকে ক্লাস শুরু হবে।",
      templateExam: "পরীক্ষার নোটিশ",
      templateExamBody:
        "মাননীয় অভিভাবক, অর্ধবার্ষিক পরীক্ষা রবিবার থেকে শুরু হবে। অনুগ্রহ করে প্রস্তুতি নিশ্চিত করুন।",
      templateMeeting: "অভিভাবক সভা",
      templateMeetingBody:
        "মাননীয় অভিভাবক, শুক্রবার সকাল ১০টায় অভিভাবক-শিক্ষক সভা অনুষ্ঠিত হবে। আপনার উপস্থিতি কামনা করা হচ্ছে।",
      recipientsCount: "জন প্রাপক এটি পাবেন",
      sendNotification: "পাঠান",
      sendingLabel: "পাঠানো হচ্ছে…",
      noChannel: "অন্তত একটি চ্যানেল নির্বাচন করুন",
      noRecipients: "এই প্রাপক গোষ্ঠীতে কেউ নেই",
      sentSuccessfully: "বিজ্ঞপ্তি পাঠানো হয়েছে",
      totalSent: "পাঠানো বিজ্ঞপ্তি",
      smsSent: "এসএমএস",
      emailSent: "ইমেইল",
      whatsappSent: "হোয়াটসঅ্যাপ",
      historyTitle: "পাঠানোর ইতিহাস",
      noBroadcasts: "এখনো কোনো বিজ্ঞপ্তি পাঠানো হয়নি",
      recipientsTitle: "প্রাপকবৃন্দ",
      simulatedNote:
        "ডেমো মোড — প্রতিটি বার্তা প্রাপক অনুযায়ী লগ হয়, কোনো বাস্তব গেটওয়ে ব্যবহৃত হয় না",
      tabCompose: "তৈরি ও ইতিহাস",
      tabPurchase: "এসএমএস ক্রয়",
      tabIntegration: "ইন্টিগ্রেশন",
      smsBalance: "এসএমএস ব্যালেন্স",
      balanceNote: "প্রতিজন এসএমএস প্রাপক ব্যালেন্স থেকে ১ কাটে",
      buyNow: "কিনুন",
      purchaseConfirm: "এই এসএমএস প্যাকেজটি ক্রয় করবেন?",
      purchaseSuccess: "এসএমএস প্যাকেজ ক্রয় হয়েছে — ব্যালেন্স আপডেট হয়েছে",
      purchaseHistory: "ক্রয়ের ইতিহাস",
      noPurchases: "এখনো কোনো ক্রয় নেই",
      smsIntegration: "এসএমএস গেটওয়ে ইন্টিগ্রেশন",
      emailIntegration: "ইমেইল (SMTP) ইন্টিগ্রেশন",
      waIntegration: "হোয়াটসঅ্যাপ ইন্টিগ্রেশন",
      apiUrl: "API URL / হোস্ট",
      apiKey: "API কী",
      senderId: "সেন্ডার আইডি",
      smsTypeLabel: "এসএমএসের ধরন",
      masking: "মাস্কিং",
      nonMasking: "নন-মাস্কিং",
      smtpHostLabel: "SMTP হোস্ট",
      smtpPortLabel: "পোর্ট",
      smtpUserLabel: "ইউজারনেম",
      smtpPassLabel: "পাসওয়ার্ড",
      smtpFromNameLabel: "প্রেরকের নাম",
      smtpFromEmailLabel: "প্রেরকের ইমেইল",
      smtpSecureLabel: "TLS / SSL ব্যবহার",
      waPhoneLabel: "ফোন নম্বর আইডি",
      integrationSaved: "ইন্টিগ্রেশন সেটিংস সংরক্ষিত হয়েছে",
      integrationNote:
        "আপনার প্রতিষ্ঠানের জন্য ক্রেডেনশিয়াল সংরক্ষিত হয়। বাস্তব গেটওয়ে যুক্ত না হওয়া পর্যন্ত পাঠানো সিমুলেটেড থাকবে।",
      secretKeepNote: "সংরক্ষিত মান বজায় রাখতে কী/পাসওয়ার্ড অপরিবর্তিত রাখুন",
      smsLowBalance: "পর্যাপ্ত এসএমএস ব্যালেন্স নেই — আগে একটি প্যাকেজ কিনুন",
    },

    libraryPage: {
      title: "লাইব্রেরি",
      subtitle: "বইয়ের তালিকা, ইস্যু-ফেরত ও জরিমানা ব্যবস্থাপনা",
      totalTitles: "বইয়ের শিরোনাম",
      totalCopiesLabel: "মোট কপি",
      availableNow: "এখন উপলব্ধ",
      issuedNow: "বর্তমানে ইস্যুকৃত",
      overdueNow: "মেয়াদোত্তীর্ণ",
      finesCollected: "আদায়কৃত জরিমানা",
      tabBooks: "বইসমূহ",
      tabIssue: "বই ইস্যু",
      tabHistory: "ইস্যুর ইতিহাস",
      newBook: "নতুন বই",
      editBook: "বই সম্পাদনা",
      bookTitle: "শিরোনাম (ইংরেজি)",
      bookTitleBn: "শিরোনাম (বাংলা)",
      author: "লেখক",
      publisher: "প্রকাশক",
      isbn: "আইএসবিএন",
      shelf: "তাক",
      copies: "মোট কপি",
      price: "মূল্য (টাকা)",
      bookCreated: "বই যোগ হয়েছে",
      bookUpdated: "বই আপডেট হয়েছে",
      bookInUse: "এই বইয়ের ইস্যু রেকর্ড আছে, মুছে ফেলা যাবে না",
      availableCount: "উপলব্ধ",
      issueBookTitle: "বই ইস্যু করুন",
      memberType: "সদস্য",
      selectBook: "বই নির্বাচন করুন",
      selectMember: "সদস্য নির্বাচন করুন",
      issueDate: "ইস্যুর তারিখ",
      dueDateLabel: "জমার শেষ তারিখ",
      loanDays: "দিনের ঋণ",
      issueCreated: "বই ইস্যু হয়েছে",
      noCopiesAvailable: "এই বইয়ের কোনো কপি উপলব্ধ নেই",
      returnBook: "ফেরত",
      returnConfirm: "বইটি ফেরত নেবেন? মেয়াদোত্তীর্ণ জরিমানা স্বয়ংক্রিয়ভাবে হিসাব হবে।",
      fineLabel: "জরিমানা",
      activeIssues: "চলমান",
      returnedIssues: "ফেরতকৃত",
      allIssues: "সকল",
      noIssues: "এখনো কোনো ইস্যু রেকর্ড নেই",
      noBooks: "তালিকায় এখনো কোনো বই নেই",
      fineRateNote: "মেয়াদোত্তীর্ণ জরিমানা: প্রতিদিন ৳১০",
      allCategories: "সব বিভাগ",
      allMemberTypes: "সব সদস্য প্রকার",
      availAll: "সব কপি",
      availAvailable: "উপলব্ধ",
      availOut: "স্টক শেষ",
    },

    inventoryPage: {
      title: "ইনভেন্টরি",
      subtitle: "প্রতিষ্ঠানের সম্পদ, স্টক আনাগোনা ও স্বল্প স্টক সতর্কতা",
      totalItems: "ইনভেন্টরি আইটেম",
      stockValue: "স্টকের মূল্য",
      lowStockLabel: "স্বল্প স্টক",
      movementsThisMonth: "আনাগোনা (এই মাসে)",
      printReport: "ইনভেন্টরি রিপোর্ট",
      tabItems: "আইটেম",
      tabStock: "স্টক ইন / আউট",
      tabHistory: "আনাগোনার ইতিহাস",
      newItem: "নতুন আইটেম",
      editItem: "আইটেম সম্পাদনা",
      itemNameLabel: "নাম (ইংরেজি)",
      itemNameBn: "নাম (বাংলা)",
      initialQty: "প্রাথমিক পরিমাণ",
      minQty: "স্বল্প স্টক সীমা",
      locationLabel: "অবস্থান",
      itemCreated: "আইটেম তৈরি হয়েছে",
      itemUpdated: "আইটেম আপডেট হয়েছে",
      itemInUse:
        "এই আইটেমের স্টক আনাগোনা আছে, মুছে ফেলা যাবে না — নিষ্ক্রিয় করুন",
      lowBadge: "স্বল্প",
      noItems: "এখনো কোনো ইনভেন্টরি আইটেম নেই",
      stockIn: "স্টক ইন",
      stockOut: "স্টক আউট",
      movementQty: "পরিমাণ",
      partyLabel: "প্রাপক / উৎস",
      movementRecorded: "স্টক আনাগোনা রেকর্ড হয়েছে",
      insufficientStock: "পর্যাপ্ত স্টক নেই",
      qtyInvalid: "পরিমাণ শূন্যের বেশি হতে হবে",
      noMovements: "এখনো কোনো স্টক আনাগোনা নেই",
      deactivate: "নিষ্ক্রিয় করুন",
      activate: "সক্রিয় করুন",
      onHand: "হাতে আছে",
    },

    transportPage: {
      title: "পরিবহন",
      subtitle: "গাড়ি, স্টপসহ রুট, শিক্ষার্থী সদস্য ও মাসিক ভাড়া",
      tabVehicles: "গাড়িসমূহ",
      tabRoutes: "রুট ও স্টপ",
      tabMembers: "সদস্য",
      tabCollections: "আদায়",
      totalVehicles: "গাড়ি",
      activeRoutes: "সক্রিয় রুট",
      membersLabel: "পরিবহনে শিক্ষার্থী",
      monthlyExpected: "মাসিক প্রত্যাশিত",
      monthCollected: "এই মাসে আদায়",
      monthDueLabel: "এই মাসে বাকি",
      newVehicle: "নতুন গাড়ি",
      editVehicle: "গাড়ি সম্পাদনা",
      vehicleName: "গাড়ির নাম",
      registrationNo: "রেজিস্ট্রেশন নম্বর",
      vehicleType: "ধরন",
      capacity: "আসন সংখ্যা",
      driverName: "চালকের নাম",
      driverPhone: "চালকের ফোন",
      vehicleCreated: "গাড়ি যোগ হয়েছে",
      vehicleUpdated: "গাড়ি আপডেট হয়েছে",
      vehicleInUse: "এই গাড়ি একটি রুটে নির্ধারিত, মুছে ফেলা যাবে না",
      noVehicles: "এখনো কোনো গাড়ি যোগ করা হয়নি",
      routesAssigned: "রুট",
      newRoute: "নতুন রুট",
      editRoute: "রুট সম্পাদনা",
      routeName: "রুটের নাম (ইংরেজি)",
      routeNameBn: "রুটের নাম (বাংলা)",
      assignVehicle: "গাড়ি নির্ধারণ",
      baseFare: "মূল মাসিক ভাড়া (টাকা)",
      stopsLabel: "স্টপ ও অতিরিক্ত ভাড়া",
      addStop: "স্টপ যোগ করুন",
      stopName: "স্টপের নাম",
      extraFare: "অতিরিক্ত ভাড়া",
      routeCreated: "রুট তৈরি হয়েছে",
      routeUpdated: "রুট আপডেট হয়েছে",
      routeInUse: "এই রুটে শিক্ষার্থী নির্ধারিত আছে, মুছে ফেলা যাবে না",
      noRoutes: "এখনো কোনো রুট তৈরি হয়নি",
      noStops: "এই রুটে কোনো স্টপ নেই",
      memberCountLabel: "সদস্য",
      assignMember: "শিক্ষার্থী যোগ করুন",
      selectStudentLabel: "শিক্ষার্থী",
      selectRouteLabel: "রুট",
      selectStop: "স্টপ (ঐচ্ছিক)",
      monthlyFareLabel: "মাসিক ভাড়া (টাকা)",
      memberAssigned: "শিক্ষার্থী পরিবহনে যোগ হয়েছে",
      memberUpdated: "সদস্য আপডেট হয়েছে",
      alreadyMember: "এই শিক্ষার্থী ইতোমধ্যে পরিবহনে যুক্ত আছে",
      noMembers: "এখনো কোনো শিক্ষার্থী যোগ করা হয়নি",
      collectFare: "ভাড়া আদায়",
      fareFor: "ভাড়া —",
      fareCollected: "ভাড়া আদায় হয়েছে",
      alreadyPaidFare: "এই মাসে পরিশোধিত",
      collectConfirm: "এই ভাড়া আদায় রেকর্ড করবেন?",
      noMembersForFare: "কোনো সক্রিয় সদস্য নেই",
      expectedTotal: "প্রত্যাশিত",
      stopFareNote: "সদস্য ভাড়া = রুটের মূল ভাড়া + স্টপের অতিরিক্ত",
      allVehicleTypes: "সব ধরন",
      allStatuses: "সব অবস্থা",
      allRoutes: "সব রুট",
      allPayments: "সব পেমেন্ট",
      trxId: "ট্রানজেকশন / রেফারেন্স আইডি",
      trxHint: "বিকাশ/নগদ/রকেটের TrxID, কার্ড রেফারেন্স বা ব্যাংক স্লিপ নম্বর দিন — ডিজিটাল আদায় এটি দিয়েই ট্র্যাক হয়।",
      trxRequired: "ডিজিটাল পেমেন্টের জন্য ট্রানজেকশন / রেফারেন্স আইডি দিতে হবে",
    },

    hostelPage: {
      title: "হোস্টেল",
      subtitle: "হোস্টেল, কক্ষ, আবাসিক বণ্টন ও দৈনিক হাজিরা",
      tabHostels: "হোস্টেল",
      tabRooms: "কক্ষ",
      tabResidents: "আবাসিক",
      tabAttendance: "হাজিরা",
      totalHostels: "হোস্টেল",
      totalRooms: "কক্ষ",
      capacity: "মোট বেড",
      residents: "আবাসিক শিক্ষার্থী",
      vacantBeds: "খালি বেড",
      monthlyExpected: "মাসিক প্রত্যাশিত",
      feeNote: "বেড ভাড়া = কক্ষ ফি থাকলে সেটি, নইলে হোস্টেল ফি",
      newHostel: "নতুন হোস্টেল",
      editHostel: "হোস্টেল সম্পাদনা",
      hostelName: "হোস্টেলের নাম",
      hostelNameBn: "হোস্টেলের নাম (বাংলা)",
      hostelType: "ধরন",
      warden: "ওয়ার্ডেনের নাম",
      wardenPhone: "ওয়ার্ডেনের ফোন",
      defaultFee: "ডিফল্ট মাসিক ফি (টাকা)",
      hostelCreated: "হোস্টেল যোগ হয়েছে",
      hostelUpdated: "হোস্টেল আপডেট হয়েছে",
      hostelInUse: "এই হোস্টেলে শিক্ষার্থী নির্ধারিত আছে, মুছে ফেলা যাবে না",
      noHostels: "এখনো কোনো হোস্টেল যোগ করা হয়নি",
      roomsColumn: "কক্ষ / আবাসিক",
      residentsShort: "আবাসিক",
      newRoom: "নতুন কক্ষ",
      editRoom: "কক্ষ সম্পাদনা",
      roomNo: "কক্ষ নম্বর",
      floor: "তলা",
      beds: "বেড সংখ্যা",
      roomType: "কক্ষের ধরন",
      roomFee: "কক্ষ ফি / মাস (টাকা)",
      occupancy: "অধিকারণ",
      free: "খালি",
      roomCreated: "কক্ষ যোগ হয়েছে",
      roomUpdated: "কক্ষ আপডেট হয়েছে",
      duplicateRoom: "এই হোস্টেলে একই নম্বরের কক্ষ রয়েছে",
      capacityBelowOccupancy: "বেড সংখ্যা বর্তমান অধিকারণের চেয়ে কম হতে পারে না",
      roomInUse: "এই কক্ষে শিক্ষার্থী নির্ধারিত আছে, মুছে ফেলা যাবে না",
      noRooms: "এখনো কোনো কক্ষ যোগ করা হয়নি",
      allHostels: "সব হোস্টেল",
      createHostelFirst: "কক্ষ যোগ করতে আগে একটি হোস্টেল তৈরি করুন",
      assignTitle: "শিক্ষার্থী বণ্টন",
      selectStudentLabel: "শিক্ষার্থী",
      selectHostelLabel: "হোস্টেল",
      selectRoomLabel: "কক্ষ (ঐচ্ছিক)",
      noRoomPreference: "কক্ষ নির্দিষ্ট নয়",
      bedNoLabel: "বেড নম্বর (ঐচ্ছিক)",
      monthlyFeeLabel: "মাসিক ফি (টাকা)",
      memberAssigned: "শিক্ষার্থী হোস্টেলে বণ্টিত হয়েছে",
      memberUpdated: "আবাসিক তথ্য আপডেট হয়েছে",
      alreadyMember: "এই শিক্ষার্থী ইতোমধ্যে হোস্টেলে আছে",
      roomFull: "এই কক্ষে খালি বেড নেই",
      vacateConfirm: "এই শিক্ষার্থীকে হোস্টেল থেকে অবমুক্ত করবেন?",
      memberRemoved: "শিক্ষার্থী হোস্টেল থেকে অবমুক্ত হয়েছে",
      noMembers: "এখনো কোনো শিক্ষার্থী বণ্টন করা হয়নি",
      changeRoomTitle: "হোস্টেল / কক্ষ পরিবর্তন",
      clearRoomOption: "কক্ষ নেই (পরে নির্ধারিত হবে)",
      attendanceFor: "হাজিরা —",
      saveAttendance: "হাজিরা সংরক্ষণ",
      attendanceSaved: "হাজিরা সংরক্ষিত হয়েছে",
      allTypes: "সব ধরন",
      allRoomTypes: "সব রুমের ধরন",
      allStatuses: "সব অবস্থা",
    },
    promotionsPage: {
      title: "প্রমোশন",
      subtitle: "শ্রেণি, শাখা, শিফট ও গ্রুপে শিক্ষার্থী প্রমোশন — সম্পূর্ণ ইতিহাসসহ",
      tabPromote: "প্রমোশন",
      tabHistory: "ইতিহাস",
      promoteTitle: "শিক্ষার্থী প্রমোশন",
      promoteType: "প্রমোশনের ধরন",
      promoteTo: "যেখানে প্রমোশন",
      selectionNote: "ডান পাশে শিক্ষার্থী নির্বাচন করে প্রমোশন দিন। প্রতিটি শিক্ষার্থীর ইতিহাস সংরক্ষিত থাকে।",
      selectAll: "সব নির্বাচন",
      willPromote: "পরিবর্তন হবে",
      noChange: "পরিবর্তন নেই",
      promotedCount: "শিক্ষার্থী প্রমোট হয়েছে",
      alreadySet: "নির্বাচিত শিক্ষার্থীদের এই মান ইতিমধ্যেই আছে",
      promoteBtn: "প্রমোশন",
      fromTo: "পূর্ববর্তী → নতুন",
      by: "দ্বারা",
      searchHistory: "শিক্ষার্থী / শ্রেণি খুঁজুন…",
      noHistory: "এখনো কোনো প্রমোশন রেকর্ড নেই",
      totalPromotions: "মোট প্রমোশন",
      classPromotions: "শ্রেণি প্রমোশন",
      sectionPromotions: "শাখা প্রমোশন",
      otherPromotions: "শিফট / গ্রুপ",
    },

    lessonPlanPage: {
      title: "লেসন প্ল্যান",
      subtitle: "শিক্ষক, সাপ্তাহিক ভাগ ও পড়ানোর অগ্রগতিসহ অধ্যায় পরিকল্পনা",
      newPlan: "নতুন লেসন প্ল্যান",
      editPlan: "লেসন প্ল্যান সম্পাদনা",
      chapter: "অধ্যায় / ইউনিট",
      chapterPlaceholder: "যেমন: অধ্যায় ৩: সালোকসংশ্লেষণ",
      topics: "বিষয়সমূহ",
      startLabel: "শুরুর তারিখ",
      endLabel: "শেষ তারিখ",
      totalPeriods: "মোট পিরিয়ড",
      completedPeriods: "সম্পন্ন পিরিয়ড",
      periods: "পিরিয়ড",
      periodsTaught: "পড়ানো পিরিয়ড",
      progress: "অগ্রগতি",
      updateProgress: "অগ্রগতি আপডেট",
      progressSaved: "অগ্রগতি আপডেট হয়েছে",
      weeklyBreakdown: "সাপ্তাহিক ভাগ",
      addWeek: "সপ্তাহ যোগ করুন",
      weekTopic: "সপ্তাহের বিষয়",
      homework: "হোমওয়ার্ক",
      weekDone: "সম্পন্ন",
      weeksDone: "সপ্তাহ সম্পন্ন",
      totalPlans: "মোট প্ল্যান",
      noPlans: "এখনো কোনো লেসন প্ল্যান তৈরি হয়নি",
      planCreated: "লেসন প্ল্যান তৈরি হয়েছে",
      planUpdated: "লেসন প্ল্যান আপডেট হয়েছে",
    },

    noticesPage: {
      title: "নোটিশ বোর্ড",
      subtitle: "শিক্ষার্থী ও কর্মচারীদের জন্য পিন ও মেয়াদসহ নোটিশ প্রকাশ",
      newNotice: "নতুন নোটিশ",
      editNotice: "নোটিশ সম্পাদনা",
      noticeTitle: "শিরোনাম (ইংরেজি)",
      noticeTitleBn: "শিরোনাম (বাংলা)",
      noticeBody: "নোটিশের বিষয়বস্তু",
      audienceLabel: "শ্রোতা",
      publishDate: "প্রকাশের তারিখ",
      expiryDate: "মেয়াদ শেষের তারিখ",
      pinNotice: "বোর্ডের শীর্ষে পিন করুন",
      totalNotices: "মোট নোটিশ",
      activeNotices: "সক্রিয়",
      pinnedNotices: "পিনকৃত",
      expiredNotices: "মেয়াদোত্তীর্ণ",
      noNotices: "এখনো কোনো নোটিশ প্রকাশ করা হয়নি",
      noticeCreated: "নোটিশ প্রকাশিত হয়েছে",
      noticeUpdated: "নোটিশ আপডেট হয়েছে",
      published: "প্রকাশ",
      expires: "মেয়াদ",
      expiredBadge: "মেয়াদোত্তীর্ণ",
    },

    complaintsPage: {
      title: "অভিযোগ বক্স",
      subtitle: "শিক্ষার্থী, অভিভাবক ও কর্মচারীদের অভিযোগ গ্রহণ ও নিষ্পত্তি",
      tabList: "অভিযোগসমূহ",
      tabFile: "অভিযোগ দাখিল",
      totalLabel: "মোট অভিযোগ",
      complainant: "অভিযোগকারী",
      subjectLabel: "বিষয়",
      descriptionLabel: "বিবরণ",
      complainantType: "অভিযোগকারীর ধরন",
      complainantName: "অভিযোগকারীর নাম",
      linkedStudent: "শিক্ষার্থী (ঐচ্ছিক)",
      submitComplaint: "অভিযোগ জমা দিন",
      complaintFiled: "অভিযোগ জমা হয়েছে",
      complaintUpdated: "অভিযোগ আপডেট হয়েছে",
      respondTitle: "অভিযোগ পর্যালোচনা",
      responseNote: "জবাব / নিষ্পত্তি নোট",
      noComplaints: "এখনো কোনো অভিযোগ নেই",
    },

    supportPage: {
      title: "সাপোর্ট",
      subtitle: "সমস্যা জানান, ফাইল সংযুক্ত করুন এবং টিকেটের অবস্থা ট্র্যাক করুন",
      newTicket: "নতুন টিকেট",
      subjectLabel: "বিষয়",
      messageLabel: "সমস্যার বিবরণ",
      attachmentsLabel: "সংযুক্তি",
      addFiles: "ফাইল যোগ করুন",
      attachHint: "প্রতিটি ফাইল ২ MB পর্যন্ত (সর্বোচ্চ ৫টি)",
      fileTooLarge: "প্রতিটি ফাইল ২ MB বা ছোট হতে হবে",
      tooManyFiles: "সর্বোচ্চ ৫টি সংযুক্তি অনুমোদিত",
      ticketCreated: "টিকেট সাপোর্ট টিমের কাছে জমা হয়েছে",
      noTickets: "এখনো কোনো সাপোর্ট টিকেট নেই",
      replies: "উত্তর",
      lastUpdate: "সর্বশেষ আপডেট",
      conversation: "কথোপকথন",
      reportedOn: "জমার তারিখ",
      replyLabel: "উত্তর লিখুন",
      sendReply: "উত্তর পাঠান",
      replySent: "উত্তর পাঠানো হয়েছে",
      closeTicket: "টিকেট বন্ধ করুন",
      closeConfirm: "টিকেটটি বন্ধ করবেন? এরপর কথোপকথন শুধু পড়া যাবে।",
      ticketClosed: "টিকেট বন্ধ হয়েছে",
      ticketClosedError: "এই টিকেটটি বন্ধ করা হয়েছে",
      solution: "সমাধান",
      reopenHint: "সমাধান হওয়া টিকেটে উত্তর দিলে আবার খুলে যাবে",
      supportTeam: "সাপোর্ট টিম",
      you: "আপনি",
      allStatuses: "সব অবস্থা",
    },

    certificatesPage: {
      title: "সার্টিফিকেট",
      subtitle: "প্রিন্টযোগ্য শিক্ষার্থী ডকুমেন্ট — প্রোফাইল, প্রবেশপত্র, আসন পরিকল্পনা ও আইডি কার্ড",
      tabProfile: "শিক্ষার্থী প্রোফাইল",
      tabAdmit: "প্রবেশপত্র",
      tabSeat: "আসন পরিকল্পনা",
      seatPatternList: "রুম তালিকা",
      seatPatternCard: "সিট কার্ড",
      seatLayoutGrid: "৪ / পৃষ্ঠা",
      seatLayoutSingle: "১ / পৃষ্ঠা",
      seatLayoutGridHint: "প্রতি প্রিন্ট পৃষ্ঠায় চারটি সিট কার্ড",
      seatLayoutSingleHint: "প্রতি প্রিন্ট পৃষ্ঠায় একটি সিট কার্ড",
      tabTestimonial: "প্রশংসাপত্র",
      tabTranscript: "একাডেমিক ট্রান্সক্রিপ্ট",
      tabId: "আইডি কার্ড",
      studentTestimonial: "শিক্ষার্থী প্রশংসাপত্র",
      academicTranscript: "একাডেমিক ট্রান্সক্রিপ্ট",
      refLabel: "সূত্র নং",
      dateOfIssue: "প্রদানের তারিখ",
      classTeacher: "শ্রেণি শিক্ষক",
      headOfInstitution: "প্রতিষ্ঠান প্রধান",
      tBody1Son: "এই মর্মে প্রত্যয়ন করা যাচ্ছে যে, {guardian} এর পুত্র {name}, রোল {roll}, তারিখ {since} হতে এই প্রতিষ্ঠানের একজন নিয়মিত শিক্ষার্থী।",
      tBody1Daughter: "এই মর্মে প্রত্যয়ন করা যাচ্ছে যে, {guardian} এর কন্যা {name}, রোল {roll}, তারিখ {since} হতে এই প্রতিষ্ঠানের একজন নিয়মিত শিক্ষার্থী।",
      tBody2: "প্রতিষ্ঠানে অধ্যয়নকালীন সময়ে {name} সুশৃঙ্খল জীবনযাপন করেছে এবং সর্বদা ভালো চরিত্রের পরিচয় দিয়েছে।",
      tBody3: "শিক্ষার্থীর আবেদনক্রমে প্রয়োজনে এই প্রশংসাপত্র প্রদান করা হলো।",
      fullMarksLabel: "পূর্ণমান",
      passMarksLabel: "পাস নম্বর",
      obtainedLabel: "প্রাপ্ত নম্বর",
      gradeLabel: "গ্রেড",
      totalLabel: "মোট",
      noResultsLabel: "এই শিক্ষার্থীর কোনো পরীক্ষার ফলাফল এখনো নেই",
      selectStudent: "শিক্ষার্থী নির্বাচন করুন",
      selectExam: "পরীক্ষা নির্বাচন করুন",
      variantMinimal: "সংক্ষিপ্ত",
      variantDetailed: "বিস্তারিত",
      print: "প্রিন্ট",
      studentProfile: "শিক্ষার্থী প্রোফাইল",
      admitCard: "প্রবেশপত্র",
      seatPlan: "পরীক্ষার আসন পরিকল্পনা",
      studentIdCard: "শিক্ষার্থী আইডি কার্ড",
      noStudents: "কোনো শিক্ষার্থী পাওয়া যায়নি",
      dateLabel: "তারিখ",
      timeLabel: "সময়",
      roomLabel: "কক্ষ",
      subjectLabel: "বিষয়",
      marksLabel: "নম্বর (পূর্ণমান / পাস)",
      studentsLabel: "শিক্ষার্থী",
      roomsLabel: "কক্ষসমূহ",
      seatNo: "আসন",
      signature: "স্বাক্ষর",
      instructions: "নির্দেশনা",
      ins1: "পরীক্ষা শুরুর ৩০ মিনিট আগে পরীক্ষার কক্ষে পৌঁছান।",
      ins2: "এই প্রবেশপত্রটি সঙ্গে আনুন এবং চাইলে দেখান।",
      ins3: "মোবাইল ফোন বা ইলেকট্রনিক ডিভাইস নিষিদ্ধ।",
      designLabel: "কার্ড ডিজাইন",
      designClassic: "ক্লাসিক",
      designModern: "মডার্ন",
      designSide: "সাইড রেল",
      designFrame: "এলিগ্যান্ট ফ্রেম",
      fieldsLabel: "কার্ডে দেখানো হবে",
      previewLabel: "প্রিভিউ",
      colorsLabel: "রঙের থিম",
      primaryLabel: "প্রাথমিক",
      accentLabel: "সহায়ক",
      allLabel: "সব",
      selectedLabel: "{n} টি নির্বাচিত",
      selectStudents: "শিক্ষার্থী নির্বাচন করুন",
      selectExams: "পরীক্ষা নির্বাচন করুন",
      fName: "নাম",
      fRoll: "রোল",
      fPhoto: "ছবি",
      verifyScan: "যাচাই করতে স্ক্যান করুন",
      fClass: "শ্রেণি",
      fSection: "শাখা",
      fShift: "শিফট",
      fGroup: "গ্রুপ",
      fDob: "জন্মতারিখ",
      fGender: "লিঙ্গ",
      fGuardian: "অভিভাবক",
      fPhone: "অভিভাবকের ফোন",
      fAddress: "ঠিকানা",
      fId: "শিক্ষার্থী আইডি",
      fCardNo: "আইডি নং",
      fRegistration: "রেজিস্ট্রেশন নং",
      fBlood: "রক্তের গ্রুপ",
      fValidTill: "মেয়াদ",
      male: "পুরুষ",
      female: "মহিলা",
    },

    eventsPage: {
      title: "ইভেন্টসমূহ",
      subtitle: "শিক্ষাবিষয়ক, সাংস্কৃতিক ও ক্রীড়া ইভেন্টের ক্যালেন্ডার",
      newEvent: "নতুন ইভেন্ট",
      editEvent: "ইভেন্ট সম্পাদনা",
      eventTitle: "ইভেন্টের শিরোনাম (ইংরেজি)",
      eventTitleBn: "ইভেন্টের শিরোনাম (বাংলা)",
      venue: "স্থান",
      startDate: "শুরুর তারিখ",
      endDate: "শেষ তারিখ",
      description: "বিবরণ",
      totalEvents: "মোট ইভেন্ট",
      upcomingEvents: "আসন্ন",
      thisMonth: "এই মাসে",
      pastEvents: "অতীত",
      tabUpcoming: "আসন্ন",
      tabPast: "অতীত",
      noUpcoming: "কোনো আসন্ন ইভেন্ট নেই",
      noPast: "কোনো অতীত ইভেন্ট নেই",
      eventCreated: "ইভেন্ট তৈরি হয়েছে",
      eventUpdated: "ইভেন্ট আপডেট হয়েছে",
    },

    committeesPage: {
      title: "কমিটিসমূহ",
      subtitle: "কর্মচারী ও বহিরাগত সদস্য নিয়ে পদমর্যাদাসহ কমিটি গঠন",
      newCommittee: "নতুন কমিটি",
      editCommittee: "কমিটি সম্পাদনা",
      committeeName: "কমিটির নাম (ইংরেজি)",
      committeeNameBn: "কমিটির নাম (বাংলা)",
      formed: "গঠিত",
      totalCommittees: "কমিটি",
      totalMembers: "মোট সদস্য",
      membersShort: "সদস্য",
      noMembers: "এখনো কোনো সদস্য নেই",
      noCommittees: "এখনো কোনো কমিটি গঠিত হয়নি",
      addMember: "সদস্য যোগ করুন",
      memberSource: "সদস্যের ধরন",
      sourceStaff: "কর্মচারী সদস্য",
      sourceExternal: "বহিরাগত সদস্য",
      roleLabel: "পদ",
      committeeCreated: "কমিটি তৈরি হয়েছে",
      committeeUpdated: "কমিটি আপডেট হয়েছে",
      memberAdded: "সদস্য যোগ হয়েছে",
    },

    schedulePage: {
      title: "ক্লাস রুটিন",
      subtitle: "শিক্ষক, কক্ষ ও সাপ্তাহিক সময়সূচি দিয়ে ক্লাস নির্ধারণ করুন",
      tabSchedules: "শিডিউলসমূহ",
      tabRoutine: "রুটিন ভিউ",
      totalSchedules: "শিডিউল",
      activeSchedules: "সক্রিয়",
      classesCovered: "শ্রেণি",
      teachersInvolved: "শিক্ষক",
      newSchedule: "নতুন শিডিউল",
      editSchedule: "শিডিউল সম্পাদনা",
      teacherLabel: "শিক্ষক",
      sessionLabel: "শিক্ষাবর্ষ",
      departmentLabel: "বিভাগ",
      subjectLabel: "বিষয়",
      roomNo: "কক্ষ নম্বর",
      noteLabel: "নোট",
      startLabel: "শুরুর সময়",
      endLabel: "শেষ সময়",
      daysLabel: "বার",
      timeLabel: "সময়",
      activeLabel: "সক্রিয়",
      noSchedules: "এখনো কোনো ক্লাস শিডিউল তৈরি হয়নি",
      scheduleCreated: "শিডিউল তৈরি হয়েছে",
      scheduleUpdated: "শিডিউল আপডেট হয়েছে",
      daysRequired: "অন্তত একটি বার নির্বাচন করুন",
      timeInvalid: "শেষের সময় শুরুর সময়ের পরে হতে হবে",
      conflictTeacher: "এই শিক্ষকের এই সময়ে ইতোমধ্যে একটি ক্লাস আছে",
      conflictRoom: "এই কক্ষ এই সময়ে ইতোমধ্যে ব্যস্ত",
      conflictClass: "এই শ্রেণি/শাখার এই সময়ে ইতোমধ্যে একটি ক্লাস আছে",
      routineFor: "রুটিন —",
      selectClassView: "শ্রেণি নির্বাচন করুন",
      noRoutine: "এই শ্রেণির জন্য কোনো রুটিন পাওয়া যায়নি",
      filterClass: "শ্রেণি অনুযায়ী ফিল্টার",
      allClasses: "সকল শ্রেণি",
      printRoutine: "প্রিন্ট",
      dayBasisReport: "দিনভিত্তিক রুটিন",
      reportPreview: "রিপোর্ট প্রিভিউ",
      routineReport: "ক্লাস রুটিন রিপোর্ট",
      generatedOn: "তৈরির তারিখ",
      selectTeacher: "শিক্ষক নির্বাচন করুন",
      teacherTimetable: "টাইম টেবিল",
      teacherTimetableReport: "শিক্ষকের সময়সূচি রিপোর্ট",
    },

    campusAcademicPage: {
      title: "কলেজ ও বিশ্ববিদ্যালয় সেটআপ",
      subtitle: "উচ্চ শিক্ষার ডিগ্রি প্রোগ্রাম, টার্ম, কোর্স ও অফারিং — এইচএসসি, ডিগ্রি/সম্মান এবং বিশ্ববিদ্যালয় সেমিস্টার",
      tabPrograms: "প্রোগ্রাম",
      tabTerms: "টার্ম",
      tabCourses: "কোর্স",
      tabOfferings: "অফারিং",
      tabRoutine: "কোর্স রুটিন",
      newSlot: "ক্লাস যোগ করুন",
      fieldOffering: "কোর্স অফারিং",
      fieldDay: "দিন",
      fieldRoom: "কক্ষ",
      fieldNote: "নোট",
      thTime: "সময়",
      thRoom: "কক্ষ",
      noSlots: "এখনো কোনো রুটিন স্লট নেই — সাপ্তাহিক ক্লাসের সময় যোগ করুন",
      slotSaved: "ক্লাস স্লট সংরক্ষিত হয়েছে",
      slotDeleted: "ক্লাস স্লট মুছে ফেলা হয়েছে",
      confirmDeleteSlot: "এই ক্লাস স্লটটি মুছে ফেলবেন?",
      errCourseClash: "এই সময়ে কোর্সের ক্লাস আগেই আছে",
      errTeacherClash: "এই সময়ে শিক্ষকের ক্লাস আগেই আছে",
      errRoomClash: "এই সময়ে কক্ষটি ব্যস্ত আছে",
      newProgram: "নতুন প্রোগ্রাম",
      editProgram: "প্রোগ্রাম সম্পাদনা",
      fieldName: "প্রোগ্রামের নাম",
      fieldNameBn: "প্রোগ্রামের নাম (বাংলা)",
      fieldCode: "কোড",
      fieldDegree: "ডিগ্রি স্তর",
      fieldFaculty: "ফ্যাকাল্টি",
      fieldDepartment: "বিভাগ",
      fieldDuration: "মেয়াদ (বছর)",
      fieldTotalCredits: "মোট ক্রেডিট",
      fieldScale: "গ্রেডিং স্কেল",
      degree_HSC: "উচ্চ মাধ্যমিক (এইচএসসি)",
      degree_DEGREE_PASS: "ডিগ্রি (পাস)",
      degree_HONOURS: "সম্মান",
      degree_BACHELORS: "স্নাতক",
      degree_MASTERS: "স্নাতকোত্তর",
      degree_DIPLOMA: "ডিপ্লোমা",
      scaleGpa4: "ইউজিসি / জাতীয় বিশ্ববিদ্যালয় — জিপিএ ৪.০০ স্কেল",
      scaleGpa5: "বোর্ড এইচএসসি — জিপিএ ৫.০০ স্কেল",
      thProgram: "প্রোগ্রাম",
      thCode: "কোড",
      thDegree: "ডিগ্রি",
      thDuration: "মেয়াদ",
      thScale: "স্কেল",
      thTerms: "টার্ম",
      thCourses: "কোর্স",
      thStudents: "শিক্ষার্থী",
      thExams: "পরীক্ষা",
      fieldProgram: "প্রোগ্রাম",
      noPrograms: "এখনো কোনো প্রোগ্রাম নেই — প্রথম ডিগ্রি প্রোগ্রাম তৈরি করুন",
      programSaved: "প্রোগ্রাম সংরক্ষিত হয়েছে",
      programDeleted: "প্রোগ্রাম মুছে ফেলা হয়েছে",
      confirmDeleteProgram: "প্রোগ্রামটি মুছে ফেলবেন? এর টার্ম ও কোর্সও মুছে যাবে (শিক্ষার্থী বা পরীক্ষা থাকলে বাতিল হবে)।",
      newTerm: "নতুন টার্ম",
      editTerm: "টার্ম সম্পাদনা",
      fieldTerm: "টার্মের নাম",
      fieldTermBn: "টার্মের নাম (বাংলা)",
      fieldSequence: "ক্রম (ধারা)",
      thTerm: "টার্ম",
      thSequence: "ক্রম",
      thStart: "শুরু",
      thEnd: "শেষ",
      noTerms: "এখনো কোনো টার্ম নেই — প্রোগ্রামের বর্ষ/সেমিস্টার টার্মগুলো যোগ করুন",
      termSaved: "টার্ম সংরক্ষিত হয়েছে",
      termDeleted: "টার্ম মুছে ফেলা হয়েছে",
      confirmDeleteTerm: "টার্মটি মুছে ফেলবেন?",
      newCourse: "নতুন কোর্স",
      editCourse: "কোর্স সম্পাদনা",
      fieldCourseCode: "কোর্স কোড",
      fieldCourseName: "কোর্সের শিরোনাম",
      fieldCourseNameBn: "কোর্সের শিরোনাম (বাংলা)",
      fieldCredits: "ক্রেডিট আওয়ার",
      fieldCourseType: "কোর্সের ধরন",
      fieldFull: "পূর্ণমান",
      fieldPass: "পাস নম্বর",
      type_THEORY: "তত্ত্বীয়",
      type_LAB: "ল্যাব",
      type_SESSIONAL: "সেশনাল",
      type_THESIS: "থিসিস",
      type_PROJECT: "প্রজেক্ট",
      type_VIVA: "ভাইভা",
      thCourse: "কোর্স",
      thCredits: "ক্রেডিট",
      thType: "ধরন",
      thFull: "পূর্ণমান",
      thPass: "পাস",
      thOfferings: "অফারিং",
      noCourses: "এখনো কোনো কোর্স নেই — ক্রেডিট আওয়ারসহ কোর্স যোগ করুন",
      courseSaved: "কোর্স সংরক্ষিত হয়েছে",
      courseDeleted: "কোর্স মুছে ফেলা হয়েছে",
      confirmDeleteCourse: "কোর্সটি মুছে ফেলবেন?",
      newOffering: "নতুন অফারিং",
      editOffering: "অফারিং সম্পাদনা",
      fieldCourse: "কোর্স",
      fieldSession: "সেশন",
      fieldSection: "সেকশন",
      fieldTeacher: "শিক্ষক",
      fieldSeats: "আসন সীমা",
      sessionPlaceholder: "যেমন ২০২৫-২৬",
      thSession: "সেশন",
      thSection: "সেকশন",
      thTeacher: "শিক্ষক",
      thSeats: "আসন",
      thEnrolled: "ভর্তি",
      noTeacher: "— নির্ধারিত নয় —",
      noOfferings: "এখনো কোনো অফারিং নেই — কোনো সেশনের জন্য কোর্স খুলুন",
      offeringSaved: "অফারিং সংরক্ষিত হয়েছে",
      offeringDeleted: "অফারিং মুছে ফেলা হয়েছে",
      confirmDeleteOffering: "অফারিংটি মুছে ফেলবেন? এর সব ভর্তিও মুছে যাবে।",
      allPrograms: "সব প্রোগ্রাম",
      errCodeExists: "এই কোড আগেই আছে",
      errSequenceExists: "এই ক্রম প্রোগ্রামে আগেই আছে",
      errInUse: "মুছে ফেলা যাবে না — অন্য রেকর্ডে এখনো ব্যবহৃত হচ্ছে",
      errOfferingExists: "এই সেশন/সেকশনে কোর্সটি আগেই অফার করা আছে",
      errPassExceeds: "পাস নম্বর পূর্ণমানের চেয়ে বেশি হতে পারে না",
      errInvalidTerm: "টার্মটি এই প্রোগ্রামের নয়",
    },

    campusStudentsPage: {
      title: "কলেজ ও বিশ্ববিদ্যালয়ের শিক্ষার্থী",
      subtitle: "ডিগ্রি প্রোগ্রামের শিক্ষার্থী তথ্য — এইচএসসি, ডিগ্রি/সম্মান এবং বিশ্ববিদ্যালয় সেমিস্টার",
      tabStudents: "শিক্ষার্থী",
      tabEnrollments: "কোর্স ভর্তি",
      searchPlaceholder: "আইডি, নাম, রোল, রেজিস্ট্রেশন খুঁজুন…",
      allPrograms: "সব প্রোগ্রাম",
      allSessions: "সব সেশন",
      allStatuses: "সব অবস্থা",
      thId: "শিক্ষার্থী আইডি",
      thName: "নাম",
      thProgram: "প্রোগ্রাম",
      thSession: "সেশন",
      thTerm: "বর্তমান টার্ম",
      thGuardian: "অভিভাবক",
      thPhone: "ফোন",
      thStatus: "অবস্থা",
      thCourses: "কোর্স",
      newStudent: "নতুন শিক্ষার্থী",
      editStudent: "শিক্ষার্থী সম্পাদনা",
      viewProfile: "প্রোফাইল",
      fieldStudentId: "শিক্ষার্থী আইডি",
      fieldStudentIdHint: "যেমন CSE-2023-015",
      fieldName: "পুরো নাম",
      fieldNameBn: "পুরো নাম (বাংলা)",
      fieldGender: "লিঙ্গ",
      male: "পুরুষ",
      female: "মহিলা",
      fieldDob: "জন্ম তারিখ",
      fieldGuardian: "অভিভাবকের নাম",
      fieldGuardianPhone: "অভিভাবকের ফোন",
      fieldPhone: "ফোন",
      fieldEmail: "ইমেইল",
      fieldAddress: "ঠিকানা",
      fieldProgram: "প্রোগ্রাম",
      fieldSession: "ভর্তি সেশন",
      fieldTerm: "বর্তমান টার্ম",
      fieldBoardRoll: "বোর্ড রোল (এইচএসসি)",
      fieldRegistration: "জাতীয় বিশ্ববিদ্যালয় রেজিস্ট্রেশন নম্বর",
      fieldAdmissionDate: "ভর্তির তারিখ",
      fieldStatus: "অবস্থা",
      fieldNote: "নোট",
      st_ACTIVE: "সক্রিয়",
      st_GRADUATED: "স্নাতক সম্পন্ন",
      st_DROPPED: "ঝরে পড়েছে",
      st_SUSPENDED: "স্থগিত",
      st_TRANSFERRED: "স্থানান্তরিত",
      noStudents: "কোনো শিক্ষার্থী পাওয়া যায়নি",
      studentSaved: "শিক্ষার্থী সংরক্ষিত হয়েছে",
      studentDeleted: "শিক্ষার্থী মুছে ফেলা হয়েছে",
      confirmDeleteStudent: "শিক্ষার্থীটি মুছে ফেলবেন? তাদের কোর্স ভর্তি ও নম্বরও মুছে যাবে।",
      errIdExists: "এই শিক্ষার্থী আইডি আগেই আছে",
      profileTitle: "শিক্ষার্থী প্রোফাইল",
      infoTitle: "একাডেমিক তথ্য",
      contactTitle: "যোগাযোগ ও অভিভাবক",
      enrollmentListTitle: "ভর্তি কোর্সসমূহ",
      marksListTitle: "পরীক্ষার নম্বরের ইতিহাস",
      thCourse: "কোর্স",
      thCredits: "ক্রেডিট",
      thTeacher: "শিক্ষক",
      thEnrollStatus: "অবস্থা",
      thExam: "পরীক্ষা",
      thMarks: "নম্বর",
      thPublished: "প্রকাশিত",
      yes: "হ্যাঁ",
      no: "না",
      enrollTitle: "শিক্ষার্থীর কোর্সে ভর্তি",
      pickStudent: "শিক্ষার্থী",
      pickSession: "সেশন (অফারিং)",
      hintPickStudentFirst: "অফার করা কোর্স দেখতে একজন শিক্ষার্থী বেছে নিন",
      enrollBtn: "নির্বাচিতগুলোতে ভর্তি করুন",
      enrollSelectAll: "সব নির্বাচন",
      enrollResult: "{n} টিতে ভর্তি · {m} টি আগেই ভর্তি আছে",
      noOfferings: "এই সেশনে কোনো অফারিং নেই",
      enr_ENROLLED: "ভর্তি",
      enr_DROPPED: "বাদ",
      enr_RETAKE: "রিটেক",
      confirmRemoveEnrollment: "এই কোর্স ভর্তি বাতিল করবেন?",
      enrollmentSaved: "ভর্তি সংরক্ষিত হয়েছে",
      enrollmentRemoved: "ভর্তি বাতিল হয়েছে",
      sessionPlaceholder: "যেমন ২০২৫-২৬",
    },

    campusExamsPage: {
      title: "কলেজ ও বিশ্ববিদ্যালয়ের পরীক্ষা",
      subtitle: "মিড-টার্ম ও সেমিস্টার ফাইনাল পরীক্ষা, রুটিন ও নম্বর এন্ট্রি",
      tabExams: "পরীক্ষা",
      tabSchedule: "পরীক্ষার রুটিন",
      tabMarks: "নম্বর এন্ট্রি",
      newExam: "নতুন পরীক্ষা",
      editExam: "পরীক্ষা সম্পাদনা",
      fieldName: "পরীক্ষার নাম",
      fieldNameBn: "পরীক্ষার নাম (বাংলা)",
      fieldProgram: "প্রোগ্রাম",
      fieldTerm: "টার্ম",
      fieldExamType: "পরীক্ষার ধরন",
      fieldSession: "সেশন",
      fieldStartDate: "শুরুর তারিখ",
      fieldEndDate: "শেষের তারিখ",
      fieldNote: "নোট",
      ty_MIDTERM: "মিড-টার্ম",
      ty_SEMESTER_FINAL: "সেমিস্টার ফাইনাল",
      ty_FINAL: "ফাইনাল পরীক্ষা",
      ty_PRELIMINARY: "প্রিলিমিনারি",
      ty_TEST: "টেস্ট পরীক্ষা",
      ty_QUIZ: "কুইজ",
      thExam: "পরীক্ষা",
      thProgram: "প্রোগ্রাম",
      thTerm: "টার্ম",
      thType: "ধরন",
      thSession: "সেশন",
      thDates: "শুরু → শেষ",
      thPapers: "পেপার",
      thStatus: "অবস্থা",
      thCredits: "ক্রেডিট",
      thStudent: "শিক্ষার্থী",
      noExams: "এখনো কোনো পরীক্ষা নেই — প্রথম টার্ম/সেমিস্টার পরীক্ষা তৈরি করুন",
      examSaved: "পরীক্ষা সংরক্ষিত হয়েছে",
      examDeleted: "পরীক্ষা মুছে ফেলা হয়েছে",
      confirmDeleteExam: "পরীক্ষাটি মুছে ফেলবেন? এর রুটিন ও নম্বরও মুছে যাবে।",
      pickExam: "পরীক্ষা নির্বাচন করুন…",
      noExamSelected: "রুটিন সামলাতে একটি পরীক্ষা নির্বাচন করুন।",
      addPaper: "পেপার যোগ করুন",
      editPaper: "পেপার সম্পাদনা",
      fieldCourse: "কোর্স",
      fieldDate: "তারিখ",
      fieldStart: "শুরুর সময়",
      fieldEnd: "শেষের সময়",
      fieldRoom: "কক্ষ",
      fieldFull: "পূর্ণমান",
      fieldPass: "পাস নম্বর",
      thCourse: "কোর্স",
      thDate: "তারিখ",
      thTime: "সময়",
      thRoom: "কক্ষ",
      thFull: "পূর্ণমান",
      thPass: "পাস",
      thEntered: "এন্ট্রি",
      noPapers: "এখনো কোনো পেপার নেই — রুটিন তৈরি করতে কোর্স যোগ করুন",
      paperSaved: "পেপার সংরক্ষিত হয়েছে",
      paperDeleted: "পেপার মুছে ফেলা হয়েছে",
      confirmDeletePaper: "পেপারটি ও তার নম্বর মুছে ফেলবেন?",
      publishRoutine: "রুটিন প্রকাশ",
      allowEdit: "সম্পাদনার অনুমতি",
      publishRoutineConfirm: "রুটিন প্রকাশ করবেন? অ্যাডমিন আবার অনুমতি না দেওয়া পর্যন্ত পেপার লক থাকবে।",
      allowEditConfirm: "পেপার আবার সম্পাদনার জন্য রুটিন প্রকাশ বাতিল করবেন?",
      routinePublished: "রুটিন প্রকাশিত হয়েছে",
      editAllowed: "সম্পাদনার অনুমতি দেওয়া হয়েছে",
      printRoutine: "রুটিন প্রিন্ট",
      publishResult: "ফলাফল প্রকাশ",
      unpublishResult: "ফলাফল প্রকাশ বাতিল",
      publishResultConfirm: "ফলাফল প্রকাশ করবেন? নম্বর এন্ট্রি লক হয়ে যাবে।",
      unpublishResultConfirm: "নম্বর আবার সম্পাদনার জন্য ফলাফল প্রকাশ বাতিল করবেন?",
      resultPublishedMsg: "ফলাফল প্রকাশিত হয়েছে",
      resultUnpublishedMsg: "ফলাফল প্রকাশ বাতিল হয়েছে",
      marksLocked: "ফলাফল প্রকাশিত — নম্বর এন্ট্রি লক আছে",
      modeCourse: "কোর্স অনুযায়ী",
      modeStudent: "শিক্ষার্থী অনুযায়ী",
      pickCourse: "কোর্স পেপার নির্বাচন…",
      pickStudent: "শিক্ষার্থী নির্বাচন…",
      thObtained: "প্রাপ্ত নম্বর",
      thAbsent: "অনুপস্থিত",
      saveMarks: "নম্বর সংরক্ষণ",
      marksSaved: "নম্বর সংরক্ষিত হয়েছে",
      noEligible: "এই পরীক্ষার কোর্স ও সেশনে কোনো ভর্তি শিক্ষার্থী পাওয়া যায়নি",
      errCourseExists: "এই কোর্স রুটিনে আগেই আছে",
      errCourseNotInProgram: "কোর্সটি পরীক্ষার প্রোগ্রামের নয়",
      errRoomClash: "কক্ষ সংঘর্ষ — এই সময়ে কক্ষটি ব্যস্ত",
      errSchedulePublished: "রুটিন প্রকাশিত আছে — আগে সম্পাদনার অনুমতি দিন",
      errResultPublished: "ফলাফল প্রকাশিত আছে — আগে প্রকাশ বাতিল করুন",
      errEndBeforeStart: "শেষের সময় শুরুর পরে হতে হবে",
    },

    campusResultsPage: {
      title: "কলেজ ও বিশ্ববিদ্যালয়ের ফলাফল",
      subtitle: "সেমিস্টার জিপিএ ফলাফল, মার্কশিট, ট্যাবুলেশন শিট ও সিজিপিএ ট্রান্সক্রিপ্ট",
      tabSemester: "সেমিস্টার ফলাফল",
      tabTranscript: "ট্রান্সক্রিপ্ট (সিজিপিএ)",
      pickExam: "পরীক্ষা নির্বাচন করুন…",
      noExamSelected: "সেমিস্টার ফলাফল দেখতে একটি পরীক্ষা নির্বাচন করুন।",
      statStudents: "শিক্ষার্থী",
      statPassed: "উত্তীর্ণ",
      statFailed: "অকৃতকার্য",
      statIncomplete: "অসম্পূর্ণ",
      statHighestGpa: "সর্বোচ্চ জিপিএ",
      statLowestGpa: "সর্বনিম্ন জিপিএ",
      thStudent: "শিক্ষার্থী",
      thTotal: "মোট নম্বর",
      thCredits: "ক্রেডিট",
      thGpa: "জিপিএ",
      thResult: "ফলাফল",
      thActions: "অ্যাকশন",
      res_PASSED: "উত্তীর্ণ",
      res_FAILED: "অকৃতকার্য",
      res_INCOMPLETE: "অসম্পূর্ণ",
      viewMarksheet: "মার্কশিট",
      printTabulation: "ট্যাবুলেশন শিট প্রিন্ট",
      publishResult: "ফলাফল প্রকাশ",
      unpublishResult: "ফলাফল প্রকাশ বাতিল",
      publishResultConfirm: "ফলাফল প্রকাশ করবেন? নম্বর এন্ট্রি লক হয়ে যাবে।",
      unpublishResultConfirm: "নম্বর আবার সম্পাদনার জন্য ফলাফল প্রকাশ বাতিল করবেন?",
      resultPublishedMsg: "ফলাফল প্রকাশিত হয়েছে",
      resultUnpublishedMsg: "ফলাফল প্রকাশ বাতিল হয়েছে",
      marksheetTitle: "সেমিস্টার মার্কশিট",
      studentIdLabel: "শিক্ষার্থী আইডি",
      nameLabel: "নাম",
      programLabel: "প্রোগ্রাম",
      termLabel: "টার্ম",
      sessionLabel: "একাডেমিক সেশন",
      examLabel: "পরীক্ষা",
      courseLabel: "কোর্স",
      creditsLabel: "ক্রেডিট",
      fullMarksLabel: "পূর্ণমান",
      passMarksLabel: "পাস নম্বর",
      obtainedLabel: "প্রাপ্ত",
      percentLabel: "শতকরা",
      gradeLabel: "গ্রেড",
      pointLabel: "পয়েন্ট",
      totalsLabel: "সর্বমোট",
      gpaLabel: "জিপিএ",
      resultLabel: "ফলাফল",
      scaleLabel: "গ্রেডিং স্কেল",
      preparedByLabel: "প্রস্তুতকারী",
      controllerLabel: "নিয়ন্ত্রক (পরীক্ষা)",
      absentShort: "অনুপস্থিত",
      notEntered: "—",
      pickProgram: "প্রোগ্রাম",
      pickStudent: "শিক্ষার্থী নির্বাচন…",
      hintPickStudent: "ট্রান্সক্রিপ্ট তৈরি করতে একজন শিক্ষার্থী বেছে নিন",
      noStudentsInProgram: "এই প্রোগ্রামে এখনো কোনো শিক্ষার্থী নেই",
      noPublishedResults: "এই প্রোগ্রামের এখনো কোনো প্রকাশিত সেমিস্টার-ফাইনাল ফলাফল নেই",
      transcriptTitle: "একাডেমিক ট্রান্সক্রিপ্ট",
      facultyLabel: "ফ্যাকাল্টি",
      departmentLabel: "বিভাগ",
      boardRollLabel: "বোর্ড রোল",
      registrationLabel: "জাতীয় বিশ্ববিদ্যালয় রেজিস্ট্রেশন",
      creditsCompletedLabel: "সম্পন্ন ক্রেডিট",
      cgpaLabel: "সঞ্চিত সিজিপিএ",
      registrarLabel: "রেজিস্ট্রার",
      printTranscript: "ট্রান্সক্রিপ্ট প্রিন্ট",
      tabulationTitle: "ট্যাবুলেশন শিট",
    },

    credentials: {
      tabTitle: "ক্রেডেনশিয়াল",
      title: "সদস্য ক্রেডেনশিয়াল",
      create: "ক্রেডেনশিয়াল তৈরি করুন",
      username: "ইউজারনেম",
      role: "ভূমিকা",
      linkedTo: "সংযুক্ত",
      student: "শিক্ষার্থী",
      staffMember: "কর্মচারী",
      resetPassword: "পাসওয়ার্ড রিসেট",
      newPassword: "নতুন পাসওয়ার্ড",
      infoCode: "সদস্যরা এই প্রতিষ্ঠান কোড + ইউজারনেম দিয়ে লগইন করেন:",
      noCredentials: "এখনো কোনো সদস্য ক্রেডেনশিয়াল নেই — শিক্ষার্থী, শিক্ষক, অভিভাবক ও কর্মচারীর লগইন তৈরি করুন",
      created: "ক্রেডেনশিয়াল সফলভাবে তৈরি হয়েছে",
      deleted: "ক্রেডেনশিয়াল মুছে ফেলা হয়েছে",
      passwordReset: "পাসওয়ার্ড সফলভাবে রিসেট হয়েছে",
      usernameExists: "এই ইউজারনেম আপনার প্রতিষ্ঠানে আগেই ব্যবহৃত হয়েছে",
      deleteConfirm: "\"{name}\" ক্রেডেনশিয়াল মুছে ফেলবেন? সদস্যটি আর লগইন করতে পারবেন না।",
      // management upgrades
      searchPlaceholder: "ইউজারনেম, নাম, রোল খুঁজুন…",
      filterAllRoles: "সব ভূমিকা",
      lastLogin: "শেষ লগইন",
      editTitle: "ক্রেডেনশিয়াল সম্পাদনা",
      enable: "সক্রিয় করুন",
      disable: "নিষ্ক্রিয় করুন",
      disableConfirm: "\"{name}\" অ্যাকাউন্ট নিষ্ক্রিয় করবেন? পুনরায় সক্রিয় না করা পর্যন্ত সদস্যটি লগইন করতে পারবেন না।",
      updated: "ক্রেডেনশিয়াল হালনাগাদ হয়েছে",
      generate: "পাসওয়ার্ড তৈরি করুন",
      copy: "কপি করুন",
      show: "পাসওয়ার্ড দেখান",
      hide: "পাসওয়ার্ড লুকান",
      roll: "রোল",
      hasLogin: "লগইন আছে",
      alreadyLinked: "এই ব্যক্তির এই ধরনের একটি অ্যাকাউন্ট আগেই আছে",
      // bulk creation
      bulk: "বাল্ক তৈরি",
      bulkTitle: "বাল্ক ক্রেডেনশিয়াল তৈরি",
      bulkHint: "যে সক্রিয় শিক্ষার্থীর এখনো লগইন নেই তাদের জন্য তৈরি হবে — ইউজারনেম ডিফল্ট রোল (অভিভাবক: রোল-P), পাসওয়ার্ড স্বয়ংক্রিয়ভাবে তৈরি হবে।",
      bulkClass: "শ্রেণি",
      bulkRun: "লগইন তৈরি করুন",
      bulkResult: "{n} টি ক্রেডেনশিয়াল তৈরি হয়েছে · {m} টি বাদ দেওয়া হয়েছে (লগইন আগেই আছে)",
      bulkResultHint: "পাসওয়ার্ডগুলো এখনই কপি বা ডাউনলোড করুন — পরে আর দেখানো যাবে না।",
      noStudentsInScope: "এই পরিসরে কোনো সক্রিয় শিক্ষার্থী পাওয়া যায়নি",
      // subscription menu access
      menuAccess: "মেনু অ্যাক্সেস",
      menuAccessTitle: "সাবস্ক্রিপশন মেনু অ্যাক্সেস",
      menuAccessHint: "আপনার প্রতিষ্ঠান ও প্রতিটি সদস্য ভূমিকার সাইডবারে কোন কোন মেনু দেখাবে তা নির্বাচন করুন। টিক না দেওয়া মেনু ওই সাইডবার থেকে সরে যাবে; মূল মেনু (ড্যাশবোর্ড, প্রোফাইল, প্যাকেজ, বিলিং, সেটিংস) সবসময় দৃশ্যমান থাকে।",
      menuAccessSaved: "মেনু অ্যাক্সেস সংরক্ষিত — সংশ্লিষ্ট সাইডবার পরবর্তী ভিজিটে আপডেট হবে",
      menuAccessSaveError: "মেনু অ্যাক্সেস সংরক্ষণ করা যায়নি",
      menuAudInstitution: "প্রতিষ্ঠান (অ্যাডমিন)",
      menuAudTeacher: "শিক্ষক",
      menuAudStudent: "শিক্ষার্থী",
      menuAudParent: "অভিভাবক",
      menuAudStaff: "কর্মচারী",
      menuHiddenCount: "{n} টি লুকানো",
      menuSelectAll: "সব নির্বাচন",
      menuClearAll: "সব বাতিল",
    },
  },

  types: {
    PRIMARY_AND_HIGH_SCHOOL: "প্রাথমিক ও মাধ্যমিক বিদ্যালয়",
    COLLEGE_AND_UNIVERSITY: "কলেজ ও বিশ্ববিদ্যালয়",
    COACHING: "কোচিং",
    MADRASHA: "মাদ্রাসা",
  },

  me: {
    profile: "প্রোফাইল",
    attendanceMonth: "উপস্থিতি (এই মাস)",
    classRoutine: "ক্লাস রুটিন",
    results: "ফলাফল",
    noResults: "এখনো কোনো প্রকাশিত ফলাফল নেই",
    exam: "পরীক্ষা",
    totalMarks: "প্রাপ্ত নম্বর",
    time: "সময়",
    room: "কক্ষ",
    teacher: "শিক্ষক",
    usernameLabel: "ইউজারনেম",
    mySchedule: "আমার শিক্ষা সময়সূচি",
    pinned: "পিন করা",
    // module navigation
    navResults: "ফলাফল",
    navExams: "পরীক্ষার রুটিন",
    navAttendance: "উপস্থিতি",
    navFees: "ফি ও পেমেন্ট",
    navNotices: "নোটিশ",
    navComplaints: "অভিযোগ",
    navIdCard: "আইডি কার্ড",
    navProfile: "আমার প্রোফাইল",
    // results page
    resultsTitle: "আমার ফলাফল",
    resultsSubtitle: "বিষয়ভিত্তিক নম্বরসহ প্রকাশিত পরীক্ষার ফলাফল",
    noResultsDetail: "আপনার শ্রেণির জন্য এখনো কোনো ফলাফল প্রকাশ করা হয়নি",
    publishedOn: "প্রকাশ:",
    subjectCol: "বিষয়",
    appliedCol: "ব্যবহারিক",
    totalCol: "মোট",
    fullMarksCol: "পূর্ণমান",
    grandTotal: "সর্বমোট",
    // exam routine page
    examsTitle: "পরীক্ষার রুটিন",
    examsSubtitle: "তারিখ, সময় ও কক্ষসহ প্রকাশিত পরীক্ষার সময়সূচি",
    noRoutines: "এখনো কোনো পরীক্ষার রুটিন প্রকাশ করা হয়নি",
    roomCol: "কক্ষ",
    passMarksCol: "পাস নম্বর",
    resultPublishedBadge: "ফলাফল প্রকাশিত",
    // attendance page
    attendanceTitle: "আমার উপস্থিতি",
    attendanceSubtitle: "মাসিক উপস্থিতির ইতিহাস",
    noAttendance: "এই মাসে কোনো উপস্থিতি রেকর্ড নেই",
    attendanceRate: "উপস্থিতির হার",
    recordsMarked: "রেকর্ড",
    dailyRecords: "দৈনিক রেকর্ড",
    generalRecord: "সাধারণ রেকর্ড",
    // fees page
    feesTitle: "ফি ও পেমেন্ট",
    feesSubtitle: "আপনার ফি বিবরণী ও পেমেন্ট ইতিহাস",
    payWhereTitle: "কোথায় পরিশোধ করবেন",
    payWhereSubtitle: "এই প্রতিষ্ঠানের অ্যাকাউন্টে পেমেন্ট পাঠান এবং লেনদেনের রেফারেন্স সংরক্ষণ করুন",
    payCopy: "কপি",
    payCopied: "কপি হয়েছে!",
    payMerchant: "মার্চেন্ট",
    payPersonal: "পার্সোনাল",
    payRouting: "রাউটিং",
    deviceBadge: "ডিভাইস",
    feeStatement: "ফি বিবরণী",
    feeItem: "ফি",
    dueDateCol: "শেষ তারিখ",
    noFees: "এখনো কোনো ফি নির্ধারিত হয়নি",
    paymentHistory: "পেমেন্ট ইতিহাস",
    noPayments: "এখনো কোনো পেমেন্ট রেকর্ড নেই",
    paid: "পরিশোধিত",
    partial: "আংশিক",
    due: "বাকি",
    // notices page
    noticesTitle: "নোটিশ বোর্ড",
    noticesSubtitle: "আপনার প্রতিষ্ঠানের প্রকাশিত নোটিশ",
    // complaints page
    complaintsTitle: "অভিযোগ",
    complaintsSubtitle: "সমস্যা জানান এবং এর অবস্থা দেখুন",
    newComplaint: "নতুন অভিযোগ",
    complaintSubmitted: "অভিযোগ জমা হয়েছে — প্রতিষ্ঠানকে জানানো হয়েছে",
    noComplaints: "এখনো কোনো অভিযোগ জমা দেওয়া হয়নি",
    myComplaints: "আমার অভিযোগসমূহ",
    complaintDetails: "সমস্যার বিবরণ লিখুন",
    responseCol: "প্রতিষ্ঠানের জবাব",
    // id card page
    idCardTitle: "আমার আইডি কার্ড",
    idCardSubtitle: "প্রতিষ্ঠান কর্তৃক রক্ষণাবেক্ষিত আপনার শিক্ষার্থী আইডি তথ্য",
    idCardHint: "কার্ডের তথ্য প্রতিষ্ঠান 'শিক্ষার্থী পরিচয়' পৃষ্ঠায় রক্ষণাবেক্ষণ করে। সংশোধনের জন্য অফিসে যোগাযোগ করুন।",
    idCardDataTitle: "কার্ডের তথ্য",
    idCardDataHint: "উপরের প্রিভিউটি প্রতিষ্ঠানের অফিসিয়াল আইডি কার্ড ডিজাইনে তৈরি — প্রিন্ট করা কপি ঠিক এরকমই দেখাবে।",
    // class schedule page
    navSchedule: "ক্লাস রুটিন",
    scheduleTitle: "ক্লাস রুটিন",
    scheduleSubtitle: "আপনার সাপ্তাহিক ক্লাস রুটিন — বিষয়, রুম ও শিক্ষক",
    noSchedule: "আপনার শ্রেণির জন্য এখনো কোনো ক্লাস রুটিন প্রকাশ করা হয়নি",
    scheduleHint: "আজকের কলাম হাইলাইট করা আছে। সারিগুলো সাপ্তাহিক সময়সূচি।",
    printRoutine: "রুটিন প্রিন্ট",
    todayBadge: "আজ",
    // exam routine page extras
    admitCardBtn: "প্রবেশপত্র",
    admitCardTitle: "প্রবেশপত্র",
    admitCardUnavailable: "এই পরীক্ষার প্রবেশপত্র পাওয়া যাচ্ছে না",
    examToday: "আজ",
    // results page extras
    gradeCol: "গ্রেড",
    gpaCol: "জিপিএ",
    resultCol: "ফলাফল",
    resultPassed: "উত্তীর্ণ",
    resultFailed: "অকৃতকার্য",
    resultIncomplete: "অসম্পূর্ণ",
    positionCol: "মেধাস্থান",
    attendanceCol: "পরীক্ষার উপস্থিতি",
    marksheetBtn: "নম্বরপত্র",
    marksheetTitle: "নম্বরপত্র",
    failedShort: "ফেল",
    studentName: "শিক্ষার্থী",
    // attendance dashboard extras
    attTabDashboard: "ড্যাশবোর্ড",
    attTabYearly: "বার্ষিক রিপোর্ট",
    attCalendar: "মাসিক ক্যালেন্ডার",
    attSubjectWise: "বিষয়ভিত্তিক উপস্থিতি",
    attYearlyTitle: "বার্ষিক উপস্থিতি রিপোর্ট",
    attYearlyRate: "বার্ষিক হার",
    attRateCol: "হার",
    attPrintMonth: "মাস প্রিন্ট",
    attPrintYear: "রিপোর্ট প্রিন্ট",
    // fees page extras
    filterAll: "সব",
    noFeesInFilter: "এই ফিল্টারে কোনো ফি নেই",
    overdueBadge: "বকেয়া মেয়াদোত্তীর্ণ",
    overdueItems: "টি মেয়াদোত্তীর্ণ আইটেম",
    printStatement: "স্টেটমেন্ট প্রিন্ট",
    receiptBtn: "রশিদ",
    receiptTitle: "টাকা রশিদ",
    receiptReceivedBy: "গ্রহণকারী",
    // online payment claims
    payOnline: "অনলাইনে পরিশোধ",
    payOnlineTitle: "অনলাইন পেমেন্ট — রেফারেন্স জমা দিন",
    payOnlineHint: "প্রতিষ্ঠানের যেকোনো অ্যাকাউন্টে (কোথায় পরিশোধ করবেন) টাকা পাঠান, তারপর এখানে ট্রানজেকশন রেফারেন্স জমা দিন। অফিস যাচাই করে পেমেন্ট রেকর্ড করবে — অনুমোদনের পর ইনভয়েস হিস্ট্রিতে দেখা যাবে।",
    payOnlineSubmit: "যাচাইয়ের জন্য জমা দিন",
    payAccount: "প্রদানের অ্যাকাউন্ট",
    claimTxnId: "ট্রানজেকশন আইডি (TrxID)",
    claimRefCol: "রেফারেন্স",
    claimGeneralItem: "সাধারণ ফি পরিশোধ",
    claimsTitle: "অনলাইন পেমেন্ট অনুরোধ",
    claimsHint: "পেন্ডিং অনুরোধ প্রতিষ্ঠান যাচাই করে; অনুমোদনের পর পেমেন্ট হিস্ট্রিতে ইনভয়েস হিসেবে যুক্ত হয়।",
    claimSubmitted: "পেমেন্ট রেফারেন্স জমা হয়েছে — প্রতিষ্ঠান শীঘ্রই যাচাই করবে",
    claimExists: "এই ফি আইটেমের একটি অনুরোধ ইতিমধ্যে যাচাইয়ের অপেক্ষায় আছে",
    claimAmountExceeds: "পরিমাণ এই ফি আইটেমের অবশিষ্ট বকেয়ার চেয়ে বেশি",
    claimPending: "অপেক্ষমাণ",
    claimApproved: "অনুমোদিত",
    claimRejected: "প্রত্যাখ্যাত",
    // take-attendance panel + signature + marks parity
    navTakeAttendance: "উপস্থিতি নেওয়া",
    takeAttendanceTitle: "উপস্থিতি নেওয়া",
    takeAttendanceSubtitle: "নিজের ক্লাসগুলোর শিক্ষার্থীদের উপস্থিতি দিন — একক বা বাল্ক",
    takePickClass: "আপনার ক্লাসসমূহ",
    takePickClassFirst: "শিক্ষার্থী তালিকা দেখতে নিজের ক্লাস বেছে নিন",
    takeNotYourClass: "এই ক্লাসটি আপনার ক্লাস রুটিনে নেই",
    signatureTitle: "আমার স্বাক্ষর",
    signatureUpload: "স্বাক্ষর আপলোড",
    signatureReplace: "স্বাক্ষর পরিবর্তন",
    signatureRemove: "সরান",
    signatureSaved: "স্বাক্ষর সংরক্ষিত হয়েছে",
    signatureRemoved: "স্বাক্ষর সরানো হয়েছে",
    signatureInvalid: "সর্বোচ্চ ২ MB-এর PNG/JPG/WebP ছবি দিন",
    signatureHint: "আপনার স্বাক্ষর ফলাফল/সার্টিফিকেটসহ নথিতে ছাপা হয়।",
    marksMode: "এন্ট্রি মোড",
    pickStudentFirst: "শিক্ষার্থী বেছে নিয়ে প্রতিটি পত্রের নম্বর দিন",
    marksSavedCount: "নম্বর সংরক্ষিত — {n} সারি",
    marksEntered: "প্রবেশিত: {x} / {y}",
    marksNotGraded: "এখনো নম্বর দেওয়া হয়নি",
    marksLockedNotice: "এই পরীক্ষার ফলাফল প্রকাশিত হয়েছে, তাই নম্বর লক করা আছে। সংশোধন দরকার হলে অফিসকে ফলাফল আনপাবলিশ করতে বলুন।",
    // security
    changePassword: "পাসওয়ার্ড পরিবর্তন",
    currentPassword: "বর্তমান পাসওয়ার্ড",
    newPasswordLabel: "নতুন পাসওয়ার্ড",
    passwordChanged: "পাসওয়ার্ড সফলভাবে পরিবর্তন হয়েছে",
    wrongPassword: "বর্তমান পাসওয়ার্ডটি সঠিক নয়",
    // teacher/staff modules
    navMarks: "নম্বর এন্ট্রি",
    navLeaves: "ছুটির আবেদন",
    navPayroll: "বেতন",
    navLessonPlans: "পাঠ পরিকল্পনা",
    // marks entry
    marksTitle: "নম্বর এন্ট্রি",
    marksSubtitle: "আপনার পড়ানো পরীক্ষার পত্রে নম্বর দিন",
    noPapers: "এখনো আপনাকে কোনো পরীক্ষার পত্র দেওয়া হয়নি — পত্র মেলে আপনার ক্লাস রুটিনের বিষয়ের সাথে",
    examCol: "পরীক্ষা",
    pickExamFirst: "নম্বর দিতে একটি পরীক্ষা নির্বাচন করুন",
    marksSaved: "নম্বর সফলভাবে সংরক্ষিত হয়েছে",
    marksExceed: "পত্রের পূর্ণ/অংশ নম্বরের বেশি দেওয়া যাবে না",
    marksLocked: "ফলাফল প্রকাশিত — নম্বর লক করা",
    marksLockedBadge: "ফলাফল প্রকাশিত",
    notYourPaper: "শুধু নিজের পত্রেই নম্বর দিতে পারবেন",
    noStudentsInClass: "এই শ্রেণিতে কোনো সক্রিয় শিক্ষার্থী নেই",
    rollCol: "রোল",
    // leave requests
    leavesTitle: "ছুটির আবেদন",
    leavesSubtitle: "ছুটির আবেদন করুন এবং অনুমোদনের অবস্থা দেখুন",
    applyLeave: "ছুটির আবেদন করুন",
    leaveSubmitted: "ছুটির আবেদন জমা হয়েছে — অফিস যাচাই করবে",
    noLeaves: "এখনো কোনো ছুটির আবেদন নেই",
    myLeaves: "আমার ছুটির আবেদনসমূহ",
    fromCol: "থেকে",
    toCol: "পর্যন্ত",
    decidedOn: "সিদ্ধান্তের তারিখ",
    invalidDates: "শেষ তারিখ শুরুর তারিখের আগে হতে পারে না",
    // payroll
    payrollTitle: "বেতন",
    payrollSubtitle: "আপনার বেতন পরিশোধের ইতিহাস (পে-স্লিপ)",
    payslips: "পে-স্লিপ",
    noPaymentsYet: "এখনো কোনো বেতন পরিশোধ রেকর্ড নেই",
    // lesson plans
    lessonPlansTitle: "পাঠ পরিকল্পনা",
    lessonPlansSubtitle: "সাপ্তাহিক ভাঙন ও অগ্রগতিসহ আপনার অধ্যায় পরিকল্পনা",
    noLessonPlans: "এখনো আপনাকে কোনো পাঠ পরিকল্পনা দেওয়া হয়নি",
    weeks: "সপ্তাহ",
    progress: "অগ্রগতি",
    // staff profile
    staffProfileTitle: "আমার প্রোফাইল",
    staffProfileSubtitle: "আপনার কর্মচারী তথ্য ও যোগাযোগের তথ্য",
    profileUpdated: "প্রোফাইল সফলভাবে হালনাগাদ হয়েছে",
    joinedOn: "যোগদানের তারিখ",
    contactInfo: "যোগাযোগের তথ্য",
    contactHint: "আপনি নিজের যোগাযোগের তথ্য হালনাগাদ করতে পারেন; নাম, পদবি ও বেতন অফিস রক্ষণাবেক্ষণ করে।",
  },

  status: {
    PENDING: "অপেক্ষমাণ",
    ACTIVE: "সক্রিয়",
    APPROVED: "অনুমোদিত",
    REJECTED: "প্রত্যাখ্যাত",
    CONTACTED: "যোগাযোগ করা হয়েছে",
    CONVERTED: "ক্লায়েন্ট হয়েছে",
    SUSPENDED: "স্থগিত",
    EXPIRED: "মেয়াদোত্তীর্ণ",
    CANCELLED: "বাতিল",
    SUPER_ADMIN: "সুপার অ্যাডমিন",
    INSTITUTION_ADMIN: "প্রতিষ্ঠান অ্যাডমিন",
    STUDENT: "শিক্ষার্থী",
    TEACHER: "শিক্ষক",
    PARENT: "অভিভাবক",
    STAFF: "কর্মচারী",
    PRINCIPAL: "প্রিন্সিপাল",
    VICE_PRINCIPAL: "ভাইস প্রিন্সিপাল",
    EXECUTIVE_MEMBER: "নির্বাহী সদস্য",
    UPCOMING: "আসন্ন",
    RUNNING: "চলমান",
    FINISHED: "সমাপ্ত",
    PRESENT: "উপস্থিত",
    ABSENT: "অনুপস্থিত",
    LEAVE: "ছুটিতে",
    ISSUED: "ইস্যুকৃত",
    RETURNED: "ফেরতকৃত",
    OVERDUE: "মেয়াদোত্তীর্ণ",
    SENT: "পাঠানো হয়েছে",
    FAILED: "ব্যর্থ",
    IN: "স্টক ইন",
    OUT: "স্টক আউট",
      IN_REVIEW: "পর্যালোচনাধীন",
    RESOLVED: "সমাধান হয়েছে",
    PLANNED: "পরিকল্পিত",
    IN_PROGRESS: "চলমান",
    COMPLETED: "সম্পন্ন",
      OPEN: "খোলা",
      CLOSED: "বন্ধ",
  },
  methods: {
    BKASH: "বিকাশ",
    NAGAD: "নগদ",
    ROCKET: "রকেট",
    CARD: "কার্ড",
    BANK_TRANSFER: "ব্যাংক ট্রান্সফার",
    CASH: "নগদ টাকা",
  },

  categories: {
    CLASS: "শ্রেণি",
    SECTION: "শাখা",
    DEPARTMENT: "বিভাগ",
    SESSION: "শিক্ষাবর্ষ",
    SUBJECT: "বিষয়",
    GROUP: "গ্রুপ",
    SHIFT: "শিফট",
    ROOM: "কক্ষ",
  },

  feeTypes: {
    ADMISSION: "ভর্তি ফি",
    TUITION: "মাসিক টিউশন ফি",
    EXAM: "পরীক্ষার ফি",
    OTHER: "অন্যান্য",
  },

  channels: {
    SMS: "এসএমএস",
    EMAIL: "ইমেইল",
    WHATSAPP: "হোয়াটসঅ্যাপ",
  },

  audiences: {
    ALL_STUDENTS: "সকল শিক্ষার্থী (অভিভাবক)",
    BY_CLASS: "একটি শ্রেণি (অভিভাবক)",
    STUDENT: "একক শিক্ষার্থী (অভিভাবক)",
    ALL_STAFF: "সকল কর্মচারী",
    STAFF: "একক কর্মচারী",
  },

  designations: {
    PRINCIPAL: "প্রধান শিক্ষক",
    VICE_PRINCIPAL: "উপপ্রধান শিক্ষক",
    HEAD_TEACHER: "হেড টিচার",
    TEACHER: "শিক্ষক",
    ASSISTANT_TEACHER: "সহকারী শিক্ষক",
    LIBRARIAN: "গ্রন্থাগারিক",
    ACCOUNTANT: "হিসাবরক্ষক",
    OFFICE_ASSISTANT: "অফিস সহকারী",
    LAB_ASSISTANT: "ল্যাব সহকারী",
    DRIVER: "চালক",
    SECURITY_GUARD: "নিরাপত্তা প্রহরী",
    OTHER: "অন্যান্য",
  },

  departments: {
    ACADEMIC: "একাডেমিক",
    SCIENCE: "বিজ্ঞান",
    ARTS: "কলা",
    COMMERCE: "বাণিজ্য",
    ADMINISTRATION: "প্রশাসন",
    ACCOUNTS: "হিসাব",
    LIBRARY: "লাইব্রেরি",
    IT: "আইটি",
    OTHER: "অন্যান্য",
  },

  bookCategories: {
    TEXTBOOK: "পাঠ্যবই",
    REFERENCE: "রেফারেন্স",
    LITERATURE: "সাহিত্য",
    SCIENCE: "বিজ্ঞান",
    HISTORY: "ইতিহাস",
    RELIGIOUS: "ধর্মীয়",
    CHILDREN: "শিশুতোষ",
    OTHER: "অন্যান্য",
  },

  inventoryCategories: {
    FURNITURE: "ফার্নিচার",
    EQUIPMENT: "যন্ত্রপাতি",
    STATIONERY: "স্টেশনারি",
    LAB: "ল্যাব",
    IT: "আইটি",
    CLEANING: "পরিষ্কার-পরিচ্ছন্নতা",
    OTHER: "অন্যান্য",
  },

  inventoryUnits: {
    PCS: "টি",
    BOX: "বক্স",
    SET: "সেট",
    PACK: "প্যাকেট",
    LITER: "লিটার",
    KG: "কেজি",
    REAM: "রিম",
  },

  memberTypes: {
    STUDENT: "শিক্ষার্থী",
    STAFF: "কর্মচারী",
  },

  vehicleTypes: {
    BUS: "বাস",
    MINIBUS: "মিনিবাস",
    MICROBUS: "মাইক্রোবাস",
    VAN: "ভ্যান",
    OTHER: "অন্যান্য",
  },

  hostelTypes: {
    BOYS: "ছেলেদের",
    GIRLS: "মেয়েদের",
    MIXED: "উভয়ের",
  },

  roomTypes: {
    SINGLE: "সিঙ্গেল",
    DOUBLE: "ডাবল",
    TRIPLE: "ট্রিপল",
    DORMITORY: "ডরমিটরি",
  },

  noticeAudiences: {
    ALL: "সবার জন্য",
    STUDENTS: "শিক্ষার্থী",
    STAFF: "কর্মচারী",
  },

  complaintTypes: {
    STUDENT: "শিক্ষার্থী",
    PARENT: "অভিভাবক",
    STAFF: "কর্মচারী",
    OTHER: "অন্যান্য",
  },

  complaintCategories: {
    GENERAL: "সাধারণ",
    ACADEMIC: "শিক্ষাবিষয়ক",
    FACILITY: "সুবিধা",
    HARASSMENT: "হয়রানি",
    FINANCIAL: "আর্থিক",
    OTHER: "অন্যান্য",
  },

  eventCategories: {
    ACADEMIC: "শিক্ষাবিষয়ক",
    CULTURAL: "সাংস্কৃতিক",
    SPORTS: "ক্রীড়া",
    EXAM: "পরীক্ষা",
    HOLIDAY: "ছুটি",
    MEETING: "সভা",
  },

  committeeRoles: {
    PRESIDENT: "সভাপতি",
    VICE_PRESIDENT: "সহ-সভাপতি",
    SECRETARY: "সাধারণ সম্পাদক",
    TREASURER: "কোষাধ্যক্ষ",
    MEMBER: "সদস্য",
  },

  applicationTypes: {
    RAPID: "দ্রুত",
    DETAILS: "বিস্তারিত",
    PUBLIC: "অনলাইন (পাবলিক)",
  },

  promotionTypes: {
    CLASS: "শ্রেণি",
    SECTION: "শাখা",
    SHIFT: "শিফট",
    GROUP: "গ্রুপ",
  },

  lessonStatuses: {
    PLANNED: "পরিকল্পিত",
    IN_PROGRESS: "চলমান",
    COMPLETED: "সম্পন্ন",
  },
  notifications: {
    title: "নোটিফিকেশন",
    empty: "এখনো কোনো নোটিফিকেশন নেই",
    markAllRead: "সব পড়া হয়েছে",
    enableAlerts: "ডেস্কটপ অ্যালার্ট চালু করুন",
    alertsEnabled: "ডেস্কটপ অ্যালার্ট চালু আছে",
    kindNotice: "নোটিশ",
    kindEvent: "ইভেন্ট",
    kindResult: "ফলাফল",
    kindSystem: "ঘোষণা",
    pushTo: "নোটিফিকেশন পাঠান",
    groupStudents: "শিক্ষার্থী",
    groupParents: "অভিভাবক",
    groupTeachers: "শিক্ষক",
    groupStaff: "কর্মচারী",
    groupAdmins: "প্রতিষ্ঠান অ্যাডমিন",
    announcementsTitle: "ঘোষণা",
    announcementsSubtitle: "সব প্রতিষ্ঠানের নির্বাচিত গ্রুপে পুশ নোটিফিকেশন পাঠান",
    newAnnouncement: "নতুন ঘোষণা",
    formTitle: "শিরোনাম",
    formBody: "বার্তা",
    audienceLabel: "প্রেরণ করুন",
    audienceRequired: "অন্তত একটি প্রাপক গ্রুপ বেছে নিন",
    announcementsHint: "পুশটি সব প্রতিষ্ঠানের মিলে যাওয়া ব্যবহারকারীর নোটিফিকেশন বেলে পৌঁছাবে।",
    noAnnouncements: "এখনো কোনো ঘোষণা প্রকাশ করা হয়নি",
    announcementPublished: "নির্বাচিত গ্রুপে ঘোষণা পাঠানো হয়েছে",
    reached: "পৌঁছেছে",
    publish: "প্রকাশ করুন",
  },
  days: {
    SAT: "শনিবার",
    SUN: "রবিবার",
    MON: "সোমবার",
    TUE: "মঙ্গলবার",
    WED: "বুধবার",
    THU: "বৃহস্পতিবার",
    FRI: "শুক্রবার",
  },

  boards: {
    DHAKA: "ঢাকা",
    RAJSHAHI: "রাজশাহী",
    CHATTOGRAM: "চট্টগ্রাম",
    CUMILLA: "কুমিল্লা",
    JASHORE: "যশোর",
    BARISHAL: "বরিশাল",
    SYLHET: "সিলেট",
    DINAJPUR: "দিনাজপুর",
    MYMENSINGH: "ময়মনসিংহ",
    TECHNICAL: "কারিগরি শিক্ষা বোর্ড",
    MADRASAH: "মাদ্রাসা শিক্ষা বোর্ড",
    NATIONAL_UNIVERSITY: "জাতীয় বিশ্ববিদ্যালয়",
    OTHER: "অন্যান্য / প্রযোজ্য নয়",
  },
};
