{
  "family_send": {
    "channels": "Channels",
    "channel": { "sms": "SMS", "email": "E-mail", "app": "App", "whatsapp": "WhatsApp" },
    "sms_price": "SMS · {{price}}",
    "recipients_one": "{{count}} recipient",
    "recipients_other": "{{count}} recipients",
    "estimate_one": "About {{count}} SMS · estimated cost {{total}}",
    "estimate_other": "About {{count}} SMS · estimated cost {{total}}",
    "estimate_credits_one": "About {{count}} SMS",
    "estimate_credits_other": "About {{count}} SMS",
    "balance": "{{balance}} SMS left",
    "confirm": { "title": "Send the SMS?", "unknown": "Number of SMS unknown", "more": "The real cost can be higher.", "send": "Confirm and send" },
    "basis": {
      "admissions": "Counted per file: one SMS to the first guardian of each application; a long text costs several.",
      "formations": "Counted for the participants only; their parents receive the SMS too, which adds to the count.",
      "cantine": "1 SMS per pupil; a pupil with two parents gets two.",
      "transport": "1 SMS per pupil; a pupil with two parents gets two.",
      "payments": "Counted per family: one message per pupil to each active parent; a long text costs several."
    }
  },
  "theme": "Theme",
  "password": "password",
  "logout": "Logout",
  "dark_mode": "Dark mode",
  "light_mode": "Light mode",
  "english": "English",
  "arabic": "Arabic",
  "french": "French",
  "parent": "parent",
  "profile": "profile",
  "present": "Present",
  "late": "Late",
  "absent": "Absent",
  "expelled": "Expelled",
  "excused": "Excused",
  "unpaid_students": "Unpaid Students",
  "reset": "Reset",
  "search": "Search",
  "value": "Value",
  "type": "Type",
  "email": "Email",
  "first_name": "First name",
  "last_name": "Last name",
  "class": "Class",
  "student": "Student",
  "status": "Status",
  "amount": "Amount",
  "page_size": "Page size",
  "reason": "Reason",
  "no_data": "No Data",
  "content": "Content",
  "date": "Date",
  "time": "Time",
  "completed": "Completed",
  "add": "Add",
  "cancel": "Cancel",
  "edit": "Edit",
  "delete": "Delete",
  "are_you_sure": "Are you sure?",
  "user_type": {
    "staff": "staff",
    "teacher": "teacher",
    "parent": "parent",
    "student": "student",
    "platform": "platform"
  },
  "audit": {
    "action": { "create": "Created", "update": "Changed", "delete": "Deleted", "reset": "Reset", "feature_requested": "Requested", "change_class": "Class change", "attendance_alert": "Attendance alert", "payment": "Payment", "proof_submit": "Proof sent", "proof_validate": "Proof validated", "proof_refuse": "Proof refused", "instalment_extend": "Extension granted", "instalment_remind": "Reminder", "late_fee": "Late fee", "discount_add": "Discount added", "discount_remove": "Discount removed", "instalments_sync": "Schedule" },
    "instalments_sync_one": "Schedule {{year}}: {{count}} instalment updated",
    "instalments_sync_other": "Schedule {{year}}: {{count}} instalments updated",
    "feature_requested": "Asked ALLcarta to switch on {{feature}}.",
    "attendance_alert": { "absent": "Absences: limit of {{limit}} reached this period", "late": "Lates: limit of {{limit}} reached this period" },
    "period": { "trimester": "Trimester {{index}}", "semester": "Semester {{index}}", "rattrapage": "Resit session" }
  },
  "home": "Home",
  "classroom_list": "Classes",
  "subjects": "Subjects",
  "planning": "Planning",
  "author": "author",
  "other": "other",
  "session": "session",
  "class_list": "Classes",
  "no_news": "No news yet",
  "nav": {
    "classes": "Classes",
    "homework": "Homework",
    "planning": "Planning",
    "home": "Home",
    "timetable": "Timetable",
    "grades": "Grades",
    "attendance": "Attendance",
    "grades_exams": "Marks & exams",
    "people": "People",
    "pupils": "Pupils",
    "accounts": "Accounts",
    "permissions": "Permissions",
    "family": "Family",
    "profile": "Profile",
    "students": "Students",
    "groups": "Groups",
    "stats": "Statistics",
    "admissions": "Admissions",
    "teachers": "Teachers",
    "organisation": "School organisation",
    "exams": "Exams and grades",
    "discipline": "Discipline",
    "deliberations": "Deliberations",
    "stages": "Internships and final projects",
    "documents": "Official documents",
    "formations": "Trainings and workshops",
    "cantine": "Canteen",
    "transport": "Transport",
    "payments": "Payments",
    "salaries": "Salaries",
    "messages": "Messages",
    "structure": "Structure",
    "settings": "Settings",
    "my_classes": "My classes",
    "establishments": "Establishments",
    "features": "Features",
    "journal": "Platform journal",
    "platform": "Platform"
  },
  "nav_section": {
    "school": "Schooling",
    "services": "Services",
    "finance": "Finance",
    "establishment": "Establishment",
    "communication": "Communication"
  },
  "terms": {
    "trimester": "Trimester",
    "trimesters": "Trimesters",
    "semester": "Semester",
    "semesters": "Semesters",
    "pupil": "Pupil",
    "pupils": "Pupils",
    "pupils_inline": "pupils",
    "students_inline": "students",
    "student": "Student",
    "students": "Students",
    "class": "Class",
    "group": "Group"
  },
  "scholar_year": "School year",
  "student_number": "Students",
  "class_number": "Class number",
  "add_new_class": "Add class",
  "edit_class": "Edit class",
  "exams": "Exams",
  "presence": "Presence",
  "marks": "Marks",
  "classroom": "Classroom",
  "login": "Login",
  "remember_me": "Remember me?",
  "forgot_password": "Forgot Password?",
  "gender": "gender",
  "register_number": "Register number",
  "M": "male",
  "F": "female",
  "birthplace": "birth place",
  "zip_code": "zip code",
  "country": "country",
  "address": "Address",
  "state": "state",
  "cin": "CIN",
  "phone": "Phone",
  "family_situation": "family situation",
  "parent_type": "parent type",
  "profession": "profession",
  "registration_number": "Registration number",
  "birthday": "birthday",
  "married": "married",
  "divorced": "divorced",
  "father": "father",
  "mother": "mother",
  "ar_first_name": "first name in Arabic",
  "ar_last_name": "last name in Arabic",
  "subject": "Subject",
  "duration": "Duration",
  "coefficient": "Coefficient",
  "supervisor": "Supervisor",
  "showing": "showing",
  "approved": "approved",
  "_7_base": "7th basic",
  "_8_base": "8th basic",
  "_9_base": "9th basic",
  "_1_secondary": "1st secondary",
  "_2_secondary_sci": "2nd experimental science",
  "_2_secondary_info": "2nd computer science",
  "_2_secondary_eco": "2nd economy and management",
  "_2_secondary_letter": "2nd literature",
  "_3_secondary_info": "3rd computer science",
  "_3_secondary_sci": "3rd experimental science",
  "_3_secondary_tech": "3rd technical sciences",
  "_3_secondary_math": "3rd mathematics",
  "_3_secondary_letter": "3rd literature",
  "_3_secondary_eco": "3rd economy and management",
  "_4_secondary_info": "4th computer science",
  "_4_secondary_sci": "4th experimental science",
  "_4_secondary_tech": "4th technical sciences",
  "_4_secondary_math": "4th mathematics",
  "_4_secondary_letter": "4th literature",
  "_4_secondary_eco": "4th economy and management",
  "warning": "Warning",
  "exclusion": "exclusion",
  "expulsion": "expulsion",
  "created_at": "Created At",
  "chapters": "Chapters",
  "homework": "Homework",
  "homework_list": "Homework",
  "add_new_homework": "Add homework",
  "add_new_exam": "Add New Exam",
  "Sun": "Sunday",
  "Mon": "Monday",
  "Tue": "Tuesday",
  "Wed": "Wednesday",
  "Thu": "Thursday",
  "Fri": "Friday",
  "Sat": "Saturday",
  "loading": "loading",
  "day": "day",
  "hour": "hour",
  "teacher": "teacher",
  "none": "none",
  "per_group": "per group",
  "per_week": "per week",
  "group1": "group 1",
  "group2": "group 2",
  "week": "week",
  "weekA": "week A",
  "weekB": "week B",
  "exam_type": "Exam Type",
  "mark": "Mark",
  "exam": "Exam",
  "matricule": "Employee number",
  "num_class": "Num Class",
  "number": "Number",
  "username": "Full name",
  "card_id": "Card ID",
  "school": "School",
  "tasks": "Tasks",
  "mark_all_as_read": "Mark all as read",
  "change_password": "Change password",
  "true": "true",
  "false": "false",
  "success": "Success!",
  "successfully_added": "Successfully added",
  "successfully_edited": "Successfully edited",
  "successfully_deleted": "Successfully deleted",
  "today": "today",
  "edit_exam": "Edit Exam",
  "edit_mark": "Edit Mark",
  "search_by_name": "Search by name",
  "of": "of",
  "rows": "rows",
  "academic_details": "Academic details",
  "change_password_title": "Change Password",
  "login_with_email": "Login with your email",
  "sign_in_with_club": "Sign in with Allcarta Club",
  "club_link": "Link my Allcarta Club account",
  "error_404_title": "Page not found",
  "error_404_text": "This address does not lead anywhere. Check it, or go back to the home page.",
  "back_to_home": "Back to Home",
  "no_children": "No children found.",
  "no_sessions": "No sessions available",
  "all_done_today": "That's all for today.",
  "city": "City",
  "section": "Section",
  "staff": {
    "classes": {
      "empty_title": "No classes yet",
      "empty_body": "Add the first class of the school year.",
      "subtitle_one": "{{count}} class · {{students}} students of {{capacity}} seats ({{pct}} %)",
      "subtitle_other": "{{count}} classes · {{students}} students of {{capacity}} seats ({{pct}} %)",
      "subtitle_open_one": "{{count}} class · {{students}} students · no limit",
      "subtitle_open_other": "{{count}} classes · {{students}} students · no limit",
      "print": "Print",
      "incomplete_one": "{{count}} timetable incomplete",
      "incomplete_other": "{{count}} timetables incomplete",
      "other_level": "Others",
      "delete": {
        "body": "Delete the class {{name}}? This cannot be undone.",
        "in_use": "The class {{name}} is still in use (students, lessons, exams or homework): it cannot be deleted."
      },
      "kpi": {
        "classes": "Classes",
        "levels_one": "{{count}} level",
        "levels_other": "{{count}} levels",
        "fill": "Fill rate",
        "fill_open": "{{students}} enrolled",
        "fill_hint_one": "{{students}} / {{capacity}} · {{count}} seat free",
        "fill_hint_other": "{{students}} / {{capacity}} · {{count}} seats free",
        "average": "Overall average",
        "attendance": "Attendance",
        "timetables": "Timetables",
        "timetables_ok": "Every timetable is complete"
      },
      "timetable": {
        "complete": "Timetable complete",
        "missing_teacher": "Timetable: teacher missing",
        "conflicts_one": "Timetable: {{count}} conflict",
        "conflicts_other": "Timetable: {{count}} conflicts"
      },
      "timetable_short": {
        "missing_teacher": "teacher missing",
        "conflicts_one": "{{count}} conflict",
        "conflicts_other": "{{count}} conflicts"
      },
      "search": "Search a class",
      "search_placeholder": "Class, room, head teacher…",
      "all_levels": "All",
      "watch": "To watch",
      "sort": { "name": "Name", "fill": "Fill rate" },
      "level_stats_one": "{{count}} class · {{students}} / {{capacity}} students",
      "level_stats_other": "{{count}} classes · {{students}} / {{capacity}} students",
      "open": "Open class {{name}}",
      "no_head": "No head teacher",
      "fill_of": "Fill of {{name}}",
      "students_unit": "students",
      "dialog": {
        "capacity": "Capacity (seats)",
        "capacity_hint": "Empty: the class type's maximum ({{max}}).",
        "capacity_below": "The class has {{students}} students: the capacity cannot be lower."
      },
      "view": {
        "students_chip": "{{students}}/{{capacity}} students",
        "students_chip_unlimited": "{{students}} students · no limit",
        "delete": "Delete the class",
        "pdf": "PDF",
        "groups": { "2": "Groups 1 and 2", "3": "Groups 1 to 3" },
        "kpi": { "students": "Students", "rank": "Rank in level", "unpaid": "Unpaid" },
        "free_one": "{{count}} seat free",
        "free_other": "{{count}} seats free",
        "girls_one": "{{count}} girl",
        "girls_other": "{{count}} girls",
        "print": "Print the list",
        "photos": "Class photo sheet",
        "reports": "Term reports",
        "export": "Export",
        "archive": "Archive the class",
        "tabs": { "students": "Students", "timetable": "Timetable", "teachers": "Teachers", "results": "Results", "compare": "Compare" },
        "listed_by_name": "Listed by name",
        "see_in_students": "See in Students",
        "no_students": "No students in this class yet",
        "move_to": "Move to…",
        "rank": "Rank",
        "timetable_title": "{{week}} · published version v{{number}}",
        "edit_in_planning": "Edit in the planning",
        "who_teaches": "Who teaches what in {{name}}",
        "organisation": "School organisation",
        "no_subjects": "No subject is planned for this level yet",
        "col": { "subject": "Subject", "teacher": "Teacher", "hours": "Hours / week", "coef": "Coef.", "average": "Class average", "last_call": "Last roll call" },
        "results": {
          "by_subject": "Average by subject",
          "distribution": "Distribution of the averages",
          "summary": "Class average {{average}}",
          "below_pass_one": "{{count}} student below the pass mark",
          "below_pass_other": "{{count}} students below the pass mark",
          "empty": "No marks published for this class yet",
          "empty_hint": "The figures appear once a teacher publishes the marks of an exam."
        },
        "teacher_of": "Teacher for {{subject}}",
        "to_assign": "— To assign —",
        "no_teacher": "no teacher",
        "teacher_set": "{{teacher}} now teaches {{subject}} in {{class}} · timetable draft updated"
      }
    }
  },
  "profile_page": {
    "title": "My profile",
    "change_photo": "Change the photo",
    "photo_updated": "Photo updated",
    "security": "Security",
    "switch_space": "Switch space",
    "email_password": "Password to confirm a new e-mail",
    "information": "Information",
    "show_password": "Show the password",
    "hide_password": "Hide the password",
    "strength": "Password strength",
    "rule_length": "{{min}} characters minimum",
    "rule_digit": "a digit",
    "rule_upper": "an uppercase letter",
    "rule_met": "met",
    "rule_unmet": "not met",
    "match": "The passwords match",
    "spaces": "My spaces",
    "spaces_hint": "One account, several roles. Switch from one to the other without signing in again.",
    "current": "current",
    "switch": "Switch",
    "club_sub": "Same identifier · separate accounts",
    "club_open": "Open",
    "preferences": "Preferences",
    "date_format": "Date format",
    "notifications": "Notifications",
    "notifications_hint": "In the app: always visible in the bell.",
    "notifications_detail": "Detail by event"
  },
  "teacher_classes": {
    "classes_count_one": "{{count}} class",
    "classes_count_other": "{{count}} classes",
    "empty_title": "No class yet",
    "empty_body": "The classes you teach appear here once the school assigns them to you.",
    "compare": "Compare my classes",
    "message_class": "Message the class",
    "tab": { "students": "Students", "results": "Results", "info": "Info" },
    "trend": "Trend",
    "trend_of": "Average trend of {{name}}",
    "signal": "Signal",
    "full_record": "Full record",
    "private_note": "Private note",
    "private_note_hint": "Visible to you and the management",
    "you": "You",
    "whole_class": "Whole class",
    "info": { "level": "Level", "room": "Room", "head": "Head teacher", "lessons": "My lessons", "groups": "Groups" }
  },
  "ui": {
    "close": "Close",
    "chart_empty": "No data to show yet.",
    "chart_label": "Chart",
    "file_drop": { "choose": "Choose a file", "take_photo": "Take a photo", "remove": "Remove {{name}}" },
    "bulk_selected": "{{count}} selected",
    "bulk_clear": "Clear selection",
    "rule_default": "default: {{value}}",
    "rule_reset": "Reset to default",
    "rule_toggle": "{{name}} · enable",
    "rule_value": "{{name}} · value",
    "rule_on": "on",
    "rule_off": "off",
    "rule_range": "Between {{min}} and {{max}}",
    "rule_min": "At least {{min}}",
    "rule_max": "At most {{max}}",
    "rule_number": "Enter a number",
    "row_actions": "Row actions",
    "row_actions_for": "Actions for {{name}}",
    "sort_by": "Sort by",
    "sort_reverse": "Reverse sort order",
    "page": "Page",
    "loading": "Loading…",
    "retry": "Try again",
    "error_title": "Something went wrong",
    "error_body": "We couldn't load this. Check your connection and try again.",
    "type_to_confirm": "Type {{text}} to confirm",
    "choose": "Choose…",
    "skip_to_content": "Skip to content",
    "no_match_title": "Nothing matches",
    "no_match_body": "Try another search, or clear the filters.",
    "clear_filters": "Clear filters",
    "select_all": "Select all",
    "select_row": "Select {{name}}",
    "select_row_plain": "Select this row"
  },
  "students": {
    "add": "Add a student",
    "import": "Import (Excel)",
    "export": "Export",
    "export_csv": "CSV",
    "export_xlsx": "Excel (.xlsx)",
    "export_pdf": "PDF (list by class)",
    "export_contacts": "Parents' contacts",
    "file": "students",
    "subtitle_one": "{{active}} active {{learners}} · {{count}} class",
    "subtitle_other": "{{active}} active {{learners}} · {{count}} classes",
    "empty_title": "No {{learners}} yet",
    "empty_body": "Add the first student of the school.",
    "views": "Views",
    "view_all": "All students",
    "view_new": "New this year",
    "search": "Search by name, number or parent",
    "search_placeholder": "Name, number or parent",
    "filters": {
      "level": "Level",
      "class": "Class",
      "gender": "Gender",
      "all_levels": "All levels",
      "all_classes": "All classes",
      "all_genders": "All",
      "female": "Girls",
      "male": "Boys"
    },
    "sort": { "name": "Name (A → Z)", "-name": "Name (Z → A)", "class": "Class" },
    "tabs": { "active": "Active", "inactive": "Inactive", "all": "All" },
    "kpi": {
      "active": "Active students",
      "gender": "Girls / boys",
      "gender_hint": "{{female}} girls · {{male}} boys",
      "average": "Overall average",
      "unpaid": "Students with unpaid fees",
      "watch_hint": "Absences to follow up",
      "watch": "To watch"
    },
    "columns": { "student": "Student", "class": "Class", "average": "Average", "presence": "Attendance", "due": "Balance due", "parents": "Parents", "status": "Status" },
    "status": { "active": "Active", "inactive": "Inactive", "new": "New" },
    "row": {
      "open": "Open record",
      "change_class": "Change class",
      "deactivate": "Deactivate",
      "reactivate": "Reactivate",
      "reactivated_one": "{{count}} student reactivated",
      "reactivated_other": "{{count}} students reactivated",
      "message_parents": "Message the parents",
      "record_payment": "Record a payment",
      "certificate": "Enrolment certificate"
    },
    "bulk": { "message": "Send a message", "export": "Export", "certificates": "Generate certificates" },
    "quick": {
      "title": "Student overview",
      "registration": "Registration number",
      "birthday": "Birth date",
      "class": "Class",
      "no_class": "No class",
      "parents": "Parents",
      "no_parents": "No parent linked",
      "siblings": "Siblings",
      "message": "Message"
    },
    "group": { "auto": "Choose automatically", "G1": "Group 1", "G2": "Group 2", "G3": "Group 3" },
    "change_class": {
      "title": "Change class",
      "target": "Target class · places left counted on the capacity",
      "from": "From",
      "group": "Group in the new class",
      "reason": "Reason (kept in the history)",
      "note": "Grades and attendance stay attached to each student; upcoming timetable, homework and exams become those of the new class; fees do not change. Parents are notified.",
      "submit": "Move to {{class}}",
      "submit_none": "Choose a class",
      "no_classes": "No class for this level",
      "done_one": "{{count}} student moved",
      "done_other": "{{count}} students moved",
      "skipped_one": "({{count}} already in that class)",
      "skipped_other": "({{count}} already in that class)"
    },
    "deactivate": {
      "title": "Deactivate",
      "body": "Deactivated accounts can no longer sign in. Grades, attendance and payments are kept; the student moves to the Inactive tab and can be reactivated.",
      "reason": "Reason",
      "reasons": { "left": "Left the school", "transfer": "Transfer to another school", "dropout": "Dropped out", "other": "Other" },
      "done_one": "{{count}} student deactivated",
      "done_other": "{{count}} students deactivated"
    },
    "refusal": {
      "class_full": "Places left in the target class: {{places}}.",
      "same_class": "The students are already in this class.",
      "date_in_future": "The date cannot be in the future.",
      "other_year": "The target class is not in the current school year.",
      "unknown_student": "One of the students could not be found.",
      "unknown_parent": "One of the parents could not be found.",
      "invalid_group": "This group does not exist in the target class.",
      "use_change_class": "Use \"Change class\" to move a student.",
      "email_taken": "This e-mail is already used by another account.",
      "parent_required": "Add at least one parent or guardian",
      "own_email": "Change your own e-mail from your profile, with your current password.",
      "module_required": "A part-time teacher needs at least one module.",
      "duplicate_module": "A module can appear only once.",
      "permission_denied": "You are not allowed to do this, or this account cannot be changed."
    },
    "wizard": {
      "step": "Step {{n}} of {{total}} · {{name}}",
      "steps": { "identity": "Identity", "class": "Class", "parents": "Parents", "fees": "Fees", "summary": "Summary" },
      "back": "Back",
      "next": "Next",
      "create": "Create the student",
      "first_name": "First name",
      "last_name": "Last name",
      "ar_first_name": "الاسم (first name in Arabic)",
      "ar_last_name": "اللقب (last name in Arabic)",
      "birthday": "Birth date",
      "birth_place": "Birth place",
      "gender": "Gender",
      "female": "Girl",
      "male": "Boy",
      "required": "Required",
      "invalid_email": "Invalid e-mail",
      "places": "Places left in each class of the level",
      "find_parent": "Find a registered parent by e-mail",
      "search": "Search",
      "link": "Link this parent",
      "not_found": "No registered parent with this e-mail: create it below.",
      "cannot_add_parent": "No registered parent with this e-mail, and you are not allowed to create parent accounts. Link an existing parent, or ask an administrator.",
      "new_parent": "New parent",
      "parent_first_name": "Parent first name",
      "parent_last_name": "Parent last name",
      "relationship": "Relationship",
      "parent_type": { "F": "Father", "M": "Mother", "O": "Legal guardian" },
      "phone": "Phone",
      "digits": "Digits only",
      "add_parent": "Add this parent",
      "linked": "Linked parents ({{n}})",
      "no_parent": "No parent yet. A student needs at least one parent or guardian.",
      "remove": "Remove {{name}}",
      "remove_short": "Remove",
      "student": "Student",
      "send_access": "Send the access to the parents by e-mail on creation",
      "recommended": "Recommended",
      "created": "{{name}} was added"
    }
  },
  "student_record": {
    "identity": "Identity",
    "contact": "Contact & address",
    "schooling": "Schooling",
    "grades_by_subject": "Grades by subject",
    "attendance_card": "Attendance",
    "change": "Change",
    "year": "School year",
    "head_teacher": "Head teacher",
    "head_teacher_chip": "Head teacher: {{name}}",
    "group": "Group",
    "since": "Enrolled since",
    "since_date": "since {{date}}",
    "class_history": "Class history",
    "registration": "Registration number",
    "register": "Register number",
    "card": "Student card",
    "email": "Login e-mail",
    "address": "Address",
    "payment": "Payment",
    "deactivate": "Deactivate the account",
    "sanction": "Add a sanction",
    "exit_pass": "Exit authorisation",
    "password": "Resend the password",
    "report": "Term report",
    "delete": "Delete the student",
    "photo": "Change the photo",
    "parents_count_one": "{{count}} parent",
    "parents_count_other": "{{count}} parents",
    "write_head_teacher": "Write to the head teacher",
    "justify_absence": "Justify an absence",
    "view_timetable": "View the timetable",
    "kpi": { "presence": "Attendance", "lateness": "Late arrivals", "due": "Left to pay" },
    "report_not_generated": "report cards not generated",
    "admission_file": "Admission file",
    "grades_col": { "subject": "Subject", "marks": "Marks", "coef": "Coef.", "average": "Average", "class": "Class", "rank": "Rank", "general": "General average {{average}}" },
    "tabs": { "overview": "Overview", "grades": "Grades", "attendance": "Attendance", "payments": "Payments", "discipline": "Discipline", "family": "Family", "history": "History" }
  },
  "teachers": {
    "title": "Teachers",
    "file": "teachers",
    "add": "Add a teacher",
    "import": "Import (Excel)",
    "export": "Export",
    "export_csv": "CSV",
    "export_xlsx": "Excel (.xlsx)",
    "export_pdf": "Service table (PDF)",
    "subtitle_one": "{{count}} teacher · {{active}} in post · {{permanent}} permanent, {{vacataire}} part-time",
    "subtitle_other": "{{count}} teachers · {{active}} in post · {{permanent}} permanent, {{vacataire}} part-time",
    "mail_sent": "Password e-mail sent to {{name}}",
    "empty_title": "No teachers yet",
    "empty_body": "Add the first teacher of the school.",
    "search": "Search a teacher",
    "search_placeholder": "Name, subject or class",
    "hours_week": "{{hours}} h",
    "load_of": "Load: {{name}}",
    "kpi": {
      "active": "In post",
      "active_hint_one": "{{count}} inactive",
      "active_hint_other": "{{count}} inactive",
      "load": "Average load",
      "over": "Overloaded",
      "over_none": "None",
      "absent": "Absent today",
      "on_time": "Roll calls on time"
    },
    "tabs": { "active": "In post", "inactive": "Inactive", "all": "All" },
    "filters": { "subject": "Subject", "all_subjects": "All subjects", "over": "Overloaded", "under": "Under-loaded (< 70 %)" },
    "columns": {
      "teacher": "Teacher",
      "subjects": "Subjects",
      "classes": "Classes",
      "load": "Load",
      "on_time": "Roll calls on time",
      "status": "Status",
      "contract": "Contract",
      "grade": "Grade",
      "assigned": "Assigned hours",
      "weekly_load": "Weekly service"
    },
    "status": { "active": "In post", "inactive": "Inactive", "over": "Overloaded" },
    "row": {
      "open": "Open record",
      "replacement": "Organise a replacement",
      "message": "Send a message",
      "password": "Resend the password",
      "deactivate": "Deactivate",
      "reactivate": "Reactivate"
    },
    "bulk": { "message": "Send a message", "sheets": "Service sheets (PDF)", "availability": "Ask for availability" },
    "grade": {
      "none": "Not filled in",
      "pes": "Secondary education teacher",
      "principal": "Senior teacher",
      "contractuel": "Contract teacher",
      "suppleant": "Substitute",
      "assistant": "Assistant",
      "maitre_assistant": "Assistant lecturer",
      "mc": "Senior lecturer",
      "professeur": "Professor",
      "expert": "Expert / professional"
    },
    "hours": { "title": "Hours by subject", "assigned": "Assigned", "need": "Needed", "of": "{{assigned}} / {{need}} h" },
    "add_form": {
      "create": "Create and send the access",
      "step_contract": "Contract type",
      "step_identity": "Identity",
      "step_service": "Service and salary",
      "step_modules": "Allowed modules and hourly rates",
      "step_extras": "Extras (optional)",
      "contract_hint": {
        "permanent": "Monthly salary · statutory service · overtime",
        "vacataire": "Paid by the hour for the sessions held · allowed modules only"
      },
      "email": "E-mail (login)",
      "grade": "Grade / category (optional)",
      "hire_date": "Hire date",
      "vacation_start": "Start of the vacation",
      "vacation_end": "End of the vacation",
      "subjects": "Subjects taught",
      "bad_amount": "Enter an amount like 1800.500",
      "modules_required": "Add at least one allowed module",
      "module_duplicate": "This module is already in the list",
      "bad_cap": "Enter a whole number of hours",
      "modules_hint": "The teacher can only be assigned to these modules. The rate can vary by level.",
      "add_module": "Add a module",
      "remove_module": "Remove this module",
      "monthly_cap": "Ceiling of hours per month",
      "vacation_note": "Paid on the hours actually taught: only sessions whose roll call is validated count for pay.",
      "created": "{{name}} was added"
    },
    "field": { "weekly_load": "Statutory service (h / week)", "planned_hours": "Planned hours / week", "diploma": "Diploma" },
    "pay": {
      "title": "Pay",
      "salary": "Gross monthly salary ({{currency}})",
      "overtime_rate": "Overtime rate ({{currency}}/h)",
      "overtime_mode": "Overtime is paid",
      "mode": { "beyond_statutory": "Beyond the statutory service", "beyond_2h_month": "Beyond 2 h per month" },
      "rate": "Hourly rate ({{currency}}/h)",
      "rate_column": "Rate",
      "per_hour": "{{amount}} / h",
      "module": "Module",
      "modules_hint": "Allowed modules: only these can be assigned to the teacher. Paid on the sessions whose roll call is validated.",
      "add_module": "Add an allowed module",
      "rib": "RIB (20 digits)",
      "extras": "Pay extras"
    },
    "extras": {
      "encadrement": {
        "name": "Supervision of internships / final projects",
        "hint": "per student supervised, or a flat amount",
        "mode": "How supervision is paid",
        "amount": "Supervision amount ({{currency}})"
      },
      "jury": {
        "name": "Jury",
        "hint": "mock exams, orals, defences · per session",
        "mode": "How the jury is paid",
        "amount": "Amount of the jury ({{currency}})"
      },
      "formation": {
        "name": "Training courses & workshops",
        "hint": "when the teacher runs a training course of the school",
        "mode": "How training is paid",
        "amount": "Training rate ({{currency}}/h)"
      },
      "mode": { "per_student": "Per student", "flat": "Flat", "per_session": "Per session", "hourly": "Hourly" },
      "unit": { "per_student": "/ student", "flat": "flat", "per_session": "/ session", "hourly": "/ h" }
    },
    "assignments": {
      "title": "Classes and subjects",
      "add": "Add an assignment",
      "assign": "Assign",
      "taken": "This class, subject and group already have a teacher: change it from its card or in Organisation.",
      "no_subjects": "This teacher has no subject yet. Give them a subject or an allowed module on their profile first.",
      "total": "{{hours}} h per week",
      "empty_title": "No assignment yet",
      "empty_body": "Assign this teacher to a class and a subject from the Organisation page.",
      "hint": "Click a card to change the hours, hand it to a colleague or remove it. The change is checked for conflicts and saved at once.",
      "open_organisation": "Open Organisation",
      "conflicts": "This change would create timetable conflicts. Review it in Organisation."
    },
    "availability": { "save": "Save the availability", "saved": "Availability saved" },
    "timetable": { "title": "Timetable in force", "week": "Week", "week_A": "Week A", "week_B": "Week B", "open_planning": "Open in the planning" },
    "load": { "title": "Load", "of": "of {{hours}} h", "no_classes": "No class assigned yet." },
    "record": {
      "matricule": "Employee no.",
      "head_of": "Head teacher: {{name}}",
      "identity": "Identity & contract",
      "message": "Message",
      "replacement": "Organise a replacement",
      "declare_absence": "Declare an absence",
      "payslip": "Payslip",
      "certificate": "Work certificate",
      "payroll": {
        "title": "Payslips",
        "file": "payslips",
        "month": "Month",
        "status": "Status",
        "net": "Net",
        "open": "Open",
        "open_month": "Open the payslip of {{month}}",
        "empty": "No payslip yet",
        "empty_hint": "A payslip appears here once the payroll of a month is prepared."
      },
      "deactivate": "Deactivate the account",
      "reactivate": "Reactivate the account",
      "tabs": {
        "overview": "Overview",
        "assignments": "Assignments",
        "availability": "Availability",
        "timetable": "Timetable",
        "absences": "Absences & replacements",
        "payroll": "Payroll",
        "history": "History"
      },
      "kpi": {
        "hours": "Hours / week",
        "no_contract": "no weekly contract",
        "over": "+{{hours}} h over the contract",
        "share": "{{pct}} % of the {{hours}} h contract",
        "classes": "Classes",
        "subjects_one": "{{count}} subject",
        "subjects_other": "{{count}} subjects",
        "students": "Students",
        "average": "Class average"
      }
    }
  },
  "record": {
    "save": "Save",
    "more_actions": "More actions",
    "breadcrumb": "Breadcrumb",
    "soon": "soon",
    "soon_hint": "Available soon",
    "history": {
      "empty_title": "Nothing in the history yet",
      "empty_body": "Every change to this record is listed here, with its author.",
      "by": "by {{name}}",
      "system": "by the system",
      "newer": "Newer",
      "older": "Older"
    },
    "picker": {
      "unlimited": "No limit",
      "current": "current class",
      "full": "full",
      "short_one": "{{count}} place · not enough",
      "short_other": "{{count}} places · not enough",
      "left_one": "{{count}} place left",
      "left_other": "{{count}} places left"
    }
  },
  "messages": {
    "login": {
      "pending": "Please wait...",
      "success": "Successfully logged in!",
      "wrongCredentials": "Email or password is incorrect.",
      "passwordLoginDisabled": "Password sign-in is turned off: use \"Sign in with Allcarta Club\".",
      "throttled": "Too many sign-in attempts. Try again later.",
      "throttledIn_one": "Too many attempts. Try again in {{count}} min.",
      "throttledIn_other": "Too many attempts. Try again in {{count}} min."
    },
    "club": {
      "failed": "Signing in with Allcarta Club failed. Try again.",
      "unlinked": "No school account is linked to this Allcarta Club account.",
      "throttled": "Too many sign-in attempts. Try again later.",
      "linked": "Your Allcarta Club account is now linked.",
      "linkTitle": "Link my Allcarta Club account",
      "signingIn": "Signing you in with Allcarta Club…",
      "schoolPassword": "School password",
      "wrongPassword": "Wrong password. Try again.",
      "linkSubmit": "Link my account"
    },
    "errors": {
      "network": "The server could not be reached. Check your connection and try again.",
      "unexpected": "Something went wrong. Try again.",
      "status": "Request failed ({{status}}).",
      "render": "Something went wrong while showing this page.",
      "reload": "Reload",
      "export": "The export could not be loaded. Check your connection and try again."
    },
    "table": {
      "exportPdf": "Export to PDF",
      "exportExcel": "Export to Excel",
      "sortBy": "{{column}}: activate to sort",
      "previousPage": "Previous page",
      "nextPage": "Next page"
    },
    "account": {
      "email": "Email address",
      "password": "Password",
      "currentPassword": "Current password",
      "newPassword": "New password",
      "confirmPassword": "Confirm the new password",
      "passwordMismatch": "The two passwords do not match.",
      "resetTitle": "Reset your password",
      "resetSubmit": "Send the reset link",
      "resetSent": "If an account uses this email address, a reset link is on its way. Check your inbox.",
      "backToLogin": "Back to sign in",
      "resetConfirmTitle": "Choose a new password",
      "resetConfirmSubmit": "Save the new password",
      "resetAgain": "Ask for a new link",
      "resetDone": "Your password has been changed. Sign in with the new one.",
      "passwordChanged": "Your password has been changed.",
      "passwordChangedSignIn": "Password changed, please sign in again.",
      "profileUpdated": "Your profile has been updated."
    }
  },
  "shell": {
    "main_nav": "Main navigation",
    "more": "More",
    "search_hint": "Search and quick actions (Ctrl K)",
    "collapse_sidebar": "Collapse the menu",
    "expand_sidebar": "Expand the menu",
    "account_menu": "Account menu, {{name}}",
    "language": "Language",
    "notifications": "Notifications",
    "notifications_unread": "Notifications, {{count}} unread",
    "no_notifications": "No notifications yet",
    "unread": "Unread:",
    "switch_role": "Switch role",
    "switch_to": "Switch to {{role}}",
    "switch_failed": "Could not switch role. Please sign in again.",
    "site_link": "Allcarta website",
    "club_site": "Allcarta Club",
    "palette_title": "Go to",
    "palette_placeholder": "Search pages…",
    "no_results": "No results"
  },
  "teaching": {
    "roll_call": "Roll call"
  },
  "planner": {
    "subtitle": "Build each class's week: add, move and edit lessons.",
    "view": {
      "class": "Class",
      "teacher": "Teacher",
      "room": "Room"
    },
    "add_lesson": "Add lesson",
    "add_at": "Add a lesson on {{day}} at {{time}}",
    "add_on": "Add a lesson on {{day}}",
    "lesson_label": "{{subject}}, {{day}} {{start}}–{{end}}",
    "move": "Move",
    "add_title": "Add a lesson",
    "field": {
      "subject": "Subject",
      "class": "Class",
      "teacher": "Teacher",
      "room": "Room",
      "day": "Day",
      "start": "Starts at",
      "duration": "Duration",
      "week": "Week",
      "group": "Group"
    },
    "no_room": "No room",
    "chip": {
      "weekA": "Week A",
      "weekB": "Week B",
      "group1": "Group 1",
      "group2": "Group 2",
      "group3": "Group 3"
    },
    "save": "Save",
    "save_anyway": "Save anyway",
    "clash": "Clash: another lesson already uses the same {{what}} at that time. Change the day, the time, the teacher or the room.",
    "clash_warning": "This overlaps an alternating lesson (A/B week or group) with the same {{what}}. Save anyway if the two alternate.",
    "clash_target": {
      "_class": "class",
      "teacher": "teacher",
      "room": "room"
    },
    "saved": "Lesson saved",
    "moved": "Lesson moved",
    "deleted": "Lesson deleted",
    "delete_title": "Delete this lesson?",
    "delete_body": "{{subject}} on {{day}} at {{time}} will be removed from the timetable.",
    "no_lessons": "No lessons yet",
    "no_lessons_body": "Pick an empty slot or Add lesson to start this week.",
    "no_lessons_day": "No lessons",
    "empty_title": {
      "class": "No classes yet",
      "teacher": "No teachers yet",
      "room": "No rooms yet"
    },
    "empty_body": {
      "class": "Create a class in Classes, then plan its week here.",
      "teacher": "Add a teacher in People, then plan their week here.",
      "room": "Once the school has rooms, their week shows here."
    },
    "grid_label": "Week timetable",
    "by": { "class": "By class", "teacher": "By teacher", "room": "By room" },
    "week_switch": "Week",
    "week_A": "Week A",
    "week_B": "Week B",
    "hint": "Drag a lesson (or its handle) to another slot · click to edit",
    "today": "today",
    "closed": "No lessons",
    "lunch": "Lunch break · {{start}} – {{end}}",
    "grip": "Move this lesson",
    "locked": "Locked for generation",
    "has_conflict": "Conflict",
    "move_to": "Move {{subject}} to {{day}} at {{time}}",
    "move_free": "free",
    "move_conflict": "conflict",
    "move_bar": "pick a green slot. A red slot says which conflict it creates; you can still move the lesson there after confirming.",
    "force": {
      "title": "Move despite the conflict?",
      "summary": "{{lesson}} to {{when}} creates conflicts ({{n}}):",
      "unknown": "A conflict",
      "other": "Choose another slot",
      "confirm": "Move anyway",
      "note": "The lesson will be placed and the conflict stays flagged (grid, Conflicts panel) until it is fixed."
    },
    "copied": "This version is published: your change went to a new draft (v{{number}}).",
    "to_draft": "This version is published: your change went to its draft (v{{number}}).",
    "drawer_when": "{{day}} {{start}} – {{end}} · week {{week}}",
    "lock": "Lock for generation",
    "lock_hint": "The lesson stays in place when the timetable is regenerated (v3, v4…)",
    "room_seats": "{{n}} seats",
    "room_busy_short": "busy",
    "room_free_short": "free",
    "week_choice": { "both": "A and B", "weekA": "A only", "weekB": "B only" },
    "group_choice": { "whole": "Whole class", "group1": "Group 1", "group2": "Group 2", "group3": "Group 3" },
    "add": "Add",
    "add_anyway": "Add anyway",
    "added": "Lesson added",
    "check": {
      "ok": "{{day}} {{time}} is free for {{class}}, {{teacher}} and {{room}}.",
      "warn_one": "Possible, with {{count}} conflict: {{what}}",
      "warn_other": "Possible, with {{count}} conflicts: {{what}}",
      "ko": "Conflict: {{what}}",
      "pending": "Checking…",
      "failed": "Check not possible right now. The server will still check when you add."
    },
    "create_timetable": "Create a timetable",
    "no_timetable": "No timetable for this year yet",
    "no_timetable_body": "Create one with the timetable generation, then edit it here.",
    "summary": "Week {{week}} · {{classes}} classes · {{hours}} h placed · {{conflicts}} · {{missing}} h to place",
    "version": {
      "both": "Published version v{{published}} · draft v{{draft}} available",
      "published": "Published version v{{n}}",
      "draft": "Draft v{{n}} · not published yet",
      "locked_one": "{{count}} locked lesson",
      "locked_other": "{{count}} locked lessons",
      "changes_one": "{{count}} unpublished change",
      "changes_other": "{{count}} unpublished changes",
      "compare": "Compare v{{from}} / v{{to}}",
      "view_published": "See published v{{n}}",
      "open_draft": "Open draft v{{n}}",
      "publish": "Publish my changes",
      "open_generation": "Open generation"
    },
    "compare": {
      "title": "Compare v{{from}} → v{{to}}",
      "added": "Added lessons",
      "removed": "Removed lessons",
      "moved": "Moved lessons",
      "none": "No difference between these two versions."
    },
    "publish": {
      "title": "Publish v{{n}}",
      "action": "Publish",
      "date": "Effective date",
      "date_hint": "Students, parents and teachers keep the current version until this date.",
      "older": "This version is older than the published version v{{number}}."
    },
    "published": "Published as v{{n}}",
    "tray": { "title": "To place", "hours": "{{n}} h", "empty": "All lessons are placed." },
    "panel": {
      "class": "Weekly hours · {{name}}",
      "teacher": "Load · {{name}}",
      "room": "Occupancy · {{name}}",
      "of": "{{done}} / {{need}} h",
      "hours": "{{n}} h",
      "hours_placed": "{{n}} h placed",
      "placed_contract": "placed this week · contract {{max}} h",
      "unavailable": "Unavailability",
      "slots": "{{n}} slots"
    },
    "print": {
      "action": "Print",
      "export": "Export PDF",
      "back": "Back to the timetable",
      "empty": "Nothing to print for this view",
      "scope": { "view": "Displayed view", "classes": "All classes", "teachers": "All teachers", "rooms": "All rooms" }
    }
  },
  "permissions": {
    "subtitle": "Groups decide which areas of the school their staff members can manage.",
    "new_group": "New group",
    "name": "Group name",
    "create": "Create",
    "created": "Group created",
    "groups": "Groups",
    "areas_count": "{{n}} of {{total}} areas",
    "areas_title": "What this group can manage",
    "areas_hint": "Each area lets members view, add, edit and delete its records.",
    "save": "Save changes",
    "discard": "Discard",
    "saved": "Group saved",
    "members": "Members",
    "no_members": "No one is in this group yet.",
    "add_member": "Add a staff member",
    "add": "Add",
    "no_staff_left": "Every active staff member is already in this group.",
    "remove_member": "Remove {{name}} from {{group}}",
    "member_added": "Added to the group",
    "member_removed": "Removed from the group",
    "inactive": "Inactive",
    "rename": "Rename",
    "rename_title": "Rename the group",
    "delete": "Delete group",
    "delete_title": "Delete {{group}}?",
    "delete_body": "Its members lose the rights it grants. Their accounts stay.",
    "deleted": "Group deleted",
    "pick": "Pick a group",
    "pick_body": "Its areas and members appear here.",
    "empty": "No groups yet",
    "empty_body": "Create a group, tick the areas it manages, then add staff members to it.",
    "back": "All groups",
    "save_name": "Save"
  },
  "permission_area": {
    "school": "School profile",
    "schoolgroup": "Permission groups",
    "classmodel": "Class levels",
    "classsubjectvolume": "Weekly hours per subject",
    "schoolroutine": "Timetable routines",
    "student": "Students",
    "subject": "Subjects",
    "administration": "Staff accounts",
    "class": "Classes",
    "homework": "Homework",
    "exam": "Exams",
    "parent": "Parents",
    "presence": "Attendance",
    "teacher": "Teachers",
    "payment": "Payments",
    "instalment": "Instalments",
    "feeplan": "Fee plans",
    "discount": "Discounts",
    "transferproof": "Transfer proofs",
    "cashsession": "Cash sessions",
    "financesettings": "Fees & payments settings",
    "payrollrun": "Payroll runs",
    "payslip": "Payslips",
    "session": "Lessons (timetable)",
    "sanction": "Punishments",
    "authorization": "Authorizations",
    "notification": "Notifications",
    "salle": "Classrooms",
    "todo": "To-do lists",
    "user": "User accounts"
  },
  "settings_page": {
    "subtitle_all": "Fees, payments and the way the school reaches families",
    "subtitle_fees": "Fees, payments and payroll rules",
    "subtitle_messages": "How the school reaches families, and the services behind it"
  },
  "payroll": {
    "contract_none": "Not set",
    "status": { "draft": "Draft", "validated": "Validated", "paid": "Paid" },
    "slip": {
      "title": "Payslip",
      "title_month": "Payslip · {{month}}",
      "gross": "Gross",
      "extras": "Extras",
      "adjustment": "Bonus / deduction",
      "cnss": "CNSS",
      "net": "Net",
      "totals": "Totals",
      "gap": "Hours to check",
      "no_lines": "No line on this payslip.",
      "no_rate": "to regularise",
      "paper_title": "Payslip · {{month}}",
      "cnss_pct": "CNSS ({{pct}} %)",
      "transfer_on": "Transfer on {{date}}",
      "absences": "Absences: {{hours}} h (justified, not deducted)",
      "sessions": "Sessions",
      "sessions_of": "Sessions of {{month}}",
      "sessions_paid": "{{paid}} of {{total}} sessions paid",
      "session_rate": "{{hours}} h × {{rate}} / h",
      "unpaid": "Not paid",
      "validated_call": "Roll call validated",
      "modules": "Per module",
      "teacher_record": "Teacher record",
      "print": "Print",
      "validate": "Validate this sheet",
      "validated": "Sheet of {{name}} validated",
      "disclaimer": "Management statement: not a legal payslip.",
      "rib": "RIB",
      "col": { "label": "Label", "quantity": "Qty", "rate": "Rate", "amount": "Amount" }
    },
    "errors": {
      "run_paid": "This payroll is paid: it can no longer change.",
      "drafts_left": "Validate the draft sheets first",
      "run_not_validated": "Validate the payroll before marking it as paid",
      "run_exists": "A payroll already exists for this month.",
      "month_in_future": "This month has not started yet.",
      "month_before_go_live": "This month is before the school started using the payroll.",
      "kind_invalid": "This kind of extra is not valid.",
      "adjustment": {
        "max_value": "The bonus cannot exceed 999,999.999 TND",
        "min_value": "The deduction cannot exceed 999,999.999 TND",
        "max_digits": "This bonus has too many digits",
        "max_decimal_places": "The bonus takes at most 3 decimals"
      },
      "quantity": {
        "max_value": "The quantity cannot exceed 9,999.99",
        "min_value": "The quantity must be at least 0.01",
        "max_digits": "This quantity has too many digits",
        "max_decimal_places": "The quantity takes at most 2 decimals"
      },
      "rate": {
        "max_value": "The rate cannot exceed 9,999.999 TND",
        "min_value": "The rate cannot be negative",
        "max_digits": "This rate has too many digits",
        "max_decimal_places": "The rate takes at most 3 decimals"
      }
    },
    "adjustment": {
      "edit": "Edit the bonus of {{name}}",
      "input": "Bonus of {{name}} in TND",
      "save": "Save",
      "invalid": "Not a valid amount",
      "saved": "Bonus of {{name}} set to {{amount}}",
      "saved_reopened": "Bonus of {{name}} set to {{amount}}: the sheet is back to draft"
    },
    "files": { "transfers": "transfers-{{month}}", "journal": "payroll-journal-{{month}}" },
    "step": {
      "label": "Payroll steps",
      "imported": "Hours imported",
      "check": "Gaps check",
      "validation": "Management validation",
      "transfers": "Transfers",
      "imported_sub": "from the timetable and the roll calls",
      "imported_legacy": "migrated from the previous payroll · {{date}}",
      "checked": "gaps checked",
      "gaps_one": "{{count}} sheet with a gap",
      "gaps_other": "{{count}} sheets with gaps",
      "to_check_one": "{{count}} sheet to check",
      "to_check_other": "{{count}} sheets to check",
      "paid_on": "paid on {{date}}",
      "planned": "planned on {{date}}"
    },
    "kpi": {
      "net": "Net payroll",
      "vs_month": "{{pct}} % vs {{month}}",
      "hours": "Hours done",
      "hours_hint": "{{planned}} h planned · −{{absences}} h absences · +{{extra}} h overtime",
      "teachers": "Teachers paid",
      "teachers_hint": "{{permanents}} permanent · {{vacataires}} part-time",
      "pending": "Awaiting validation",
      "pending_hint_one": "sheet in draft",
      "pending_hint_other": "sheets in draft",
      "pending_none": "everything is validated"
    },
    "table": {
      "title": "Pay by teacher",
      "left": "Left the school",
      "left_hint": "Paid in full until the bonus / deduction is corrected",
      "missing_rib_one": "{{count}} teacher without a RIB",
      "missing_rib_other": "{{count}} teachers without a RIB",
      "click_hint": "Click a bonus to edit it",
      "recompute": "Recompute hours",
      "recomputed": "Hours recomputed from the roll calls",
      "search": "Search a teacher",
      "search_placeholder": "Name or subject…",
      "filter": { "all": "All", "gap": "With gap", "gap_hint": "Hours that do not add up, and teachers who left (their sheet stays until the bonus is corrected)", "draft": "Draft", "validated": "Validated", "extras": "With extras" },
      "sort": "Sort the teachers",
      "sort_gap": "Sort: gaps first",
      "sort_net": "Sort: net",
      "sort_name": "Sort: name",
      "sort_subject": "Sort: subject",
      "col": {
        "teacher": "Teacher",
        "contract": "Contract",
        "planned": "Planned",
        "absences": "Absences",
        "overtime": "Overtime",
        "done": "Done",
        "base": "Base / rate",
        "gross": "Gross",
        "extras": "Extras",
        "adjustment": "Bonus / deduction",
        "net": "Net",
        "status": "Status",
        "open": "Payslip"
      },
      "per_week": "{{hours}} h / week",
      "rates_line": "{{rates}} / h",
      "per_month": "/ month",
      "times_hours": "× validated hours",
      "total": "Total",
      "teachers_one": "{{count}} teacher",
      "teachers_other": "{{count}} teachers",
      "open": "Payslip of {{name}}",
      "extras_of": "Extras of {{name}}",
      "empty": "No payslip in this payroll",
      "empty_hint": "Teachers without pay data are not on a payroll: fill their salary or rates in their record.",
      "others_one": "Show the {{count}} other",
      "others_other": "Show the {{count}} others",
      "fewer": "Show fewer",
      "footnote": "Permanent: monthly salary + overtime (replacements) at each teacher's own rate. Part-time: hours × the module's rate, only for sessions whose roll call is validated."
    },
    "tip": {
      "vacataire": "{{hours}} h validated × module rates ({{rates}})",
      "permanent": "Salary {{base}} + overtime {{overtime}} ({{hours}} h)",
      "absences_vacataire": "Sessions not held or roll call not validated: not paid"
    },
    "extras": {
      "title": "Extras of the month",
      "kind_label": "Kind of extra",
      "all": "All",
      "kind": { "encadrement": "Supervision", "jury": "Jury", "formation": "Training" },
      "hint": "Added by hand on a sheet, or automatically by training sessions (internships and exams will follow).",
      "empty": "No extra this month.",
      "add": "Add an extra",
      "remove": "Remove {{label}}",
      "confirm_title": "Remove this extra?",
      "confirm_body": "{{label}} leaves the sheet, which goes back to draft if it was validated.",
      "confirm": "Remove",
      "added": "Extra added",
      "teacher": "Teacher",
      "kind_field": "Kind",
      "label": "Label",
      "quantity": "Quantity",
      "rate": "Rate (TND)",
      "rate_hint": "Leave empty to use the teacher's own rate, else the school's default.",
      "submit": "Add",
      "errors": { "label": "Enter a label", "quantity": "Enter a quantity above zero" }
    },
    "validate": {
      "title": "Validate the payroll of {{month}}",
      "net": "Net to pay",
      "hours": "Hours done",
      "sheets": "Sheets",
      "clean_one": "{{count}} sheet without gap",
      "clean_other": "{{count}} sheets without gap",
      "clean_hint": "already checked",
      "date": "Transfer date",
      "date_required": "Pick the transfer date",
      "submit_one": "Validate {{count}} sheet",
      "submit_other": "Validate {{count}} sheets",
      "submit_none": "Validate the payroll",
      "done": "Payroll of {{month}} validated"
    },
    "new": {
      "title": "New payroll",
      "month": "Month",
      "hint": "The sheets are built from the teachers' pay data and the validated roll calls.",
      "month_required": "Pick a month",
      "submit": "Prepare payroll",
      "created": "The payroll of {{month}} is ready.",
      "skipped": "Teachers left out",
      "reason": { "pay_missing": "No pay data: fill their salary or rates in their record." },
      "close": "Done",
      "done": "Payroll of {{month}} prepared"
    },
    "page": {
      "month": "Payroll month",
      "year": "School year",
      "print_failed": "The payslips could not be loaded for printing",
      "new_option": "New payroll…",
      "export": "Export / Transfers",
      "transfers": "Transfers file (CSV)",
      "journal": "Payroll journal (CSV)",
      "payslips": "Payslips (print all)",
      "cnss": "CNSS declaration (coming soon)",
      "mark_paid": "Mark as paid",
      "paid_done": "Payroll of {{month}} marked as paid",
      "validate": "Validate payroll",
      "is_validated": "Payroll validated",
      "is_paid": "Payroll paid",
      "no_access": "You do not have access to the payroll",
      "no_slips": "You do not have access to the payslips",
      "no_slips_hint": "The month's figures, the exports and the payslips need the right to read payslips. Ask an administrator.",
      "empty": "No payroll yet",
      "empty_hint": "Prepare the first month: the sheets are built from the teachers' pay data and the validated roll calls.",
      "skipped_one": "{{count}} teacher has no pay data and is not on this payroll: {{names}}.",
      "skipped_other": "{{count}} teachers have no pay data and are not on this payroll: {{names}}.",
      "sub_draft_one": "Payroll of {{month}} · draft · {{count}} sheet to check before validation",
      "sub_draft_other": "Payroll of {{month}} · draft · {{count}} sheets to check before validation",
      "sub_draft_clean": "Payroll of {{month}} · draft · every sheet is checked",
      "sub_validated": "Payroll of {{month}} · validated · transfers planned on {{date}}",
      "sub_validated_nodate": "Payroll of {{month}} · validated",
      "sub_paid": "Payroll of {{month}} · paid · read only"
    },
    "charts": {
      "mix": "Permanent and part-time",
      "month_net": "{{month}} · net",
      "mix_chart": "Net pay split between permanent and part-time teachers",
      "part_share": "part-time",
      "permanents_one": "{{count}} permanent",
      "permanents_other": "{{count}} permanent",
      "permanents_hint": "salary + {{hours}} h overtime",
      "parttimers_one": "{{count}} part-timer",
      "parttimers_other": "{{count}} part-timers",
      "parttimers_hint": "{{hours}} h validated",
      "extras": "Extras",
      "extras_hint_one": "{{count}} line",
      "extras_hint_other": "{{count}} lines",
      "parttime_hours": "Part-timers · hours validated / planned",
      "parttime_chart": "Hours validated per part-time teacher",
      "all_validated": "everything validated",
      "not_validated": "sessions not held or roll call to validate",
      "part_detail": "{{name}} · {{done}} h validated of {{planned}} h · {{gross}}",
      "trend": "Net payroll over 12 months",
      "trend_chart": "Net payroll over 12 months",
      "last_year": "Last year",
      "this_year": "{{from}} → {{to}}",
      "net": "Net payroll",
      "subjects": "Pay by subject",
      "subjects_chart": "Share of the net payroll by subject",
      "subject_detail": "{{name}} · {{amount}} · {{hours}} h",
      "subjects_hint": "Share of the net payroll of {{month}}"
    }
  },
  "finance": {
    "bank": { "biat": "BIAT", "stb": "STB", "bna": "BNA", "attijari": "Attijari bank", "amen": "Amen Bank", "uib": "UIB", "zitouna": "Banque Zitouna", "poste": "La Poste (CCP)", "other": "Other" },
    "method": { "cash": "Cash", "cheque": "Cheque", "transfer": "Transfer", "card": "Card (POS)", "credit": "Paid by credit" },
    "refund": {
      "title": "Refund the credit",
      "balance": "Credit left: {{credit}}",
      "amount": "Amount to refund",
      "method": "Method",
      "reference": "Reference",
      "submit": "Refund · {{amount}}",
      "done": "Refund of {{amount}} recorded",
      "errors": { "amount_invalid": "Enter a valid amount", "amount_over_credit": "More than the credit left ({{credit}})", "desk_closed": "Today's cash desk is closed.", "drawer_short": "Only {{available}} in the cash drawer." }
    },
    "discard": { "title": "Discard what you typed?", "body": "Closing this form loses what you entered.", "confirm": "Discard" },
    "no_year": { "title": "No current school year", "body": "Set the current school year in Structure to follow the fees." },
    "errors": {
      "no_plan": "This student's level has no fee plan yet.",
      "discount_invalid": "This discount can no longer be applied.",
      "days_invalid": "This delay is not valid.",
      "instalment_invalid": "One of these instalments is no longer available. Refresh the page.",
      "not_pending": "This proof has already been dealt with.",
      "template_invalid": "This message template is no longer available.",
      "when_invalid": "Choose when to send the reminder again.",
      "no_parent": "This student has no parent to send to."
    },
    "family": {
      "copied": "Copied: {{text}}",
      "copy_failed": "Your browser did not allow copying. Select the text and copy it by hand.",
      "year": "School year",
      "plan_request": "Request a payment plan",
      "upload": "Upload a proof",
      "upload_short": "Upload the proof",
      "empty_title": "No fees for this year",
      "empty_body": "The fees appear here once your child's registration is complete.",
      "children_one": "{{count}} child",
      "children_other": "{{count}} children",
      "subtitle": { "year": "School year {{year}}", "left": "{{amount}} left to pay", "late": "{{amount}} of it late", "pending": "{{amount}} being checked" },
      "banner": {
        "late_label": "Amount overdue",
        "late_text_one": "Instalment {{number}} of {{name}}, due on {{date}} ({{count}} day ago).",
        "late_text_other": "Instalment {{number}} of {{name}}, due on {{date}} ({{count}} days ago).",
        "fee_percent_one": "A {{value}} % fee applies after {{count}} day late.",
        "fee_percent_other": "A {{value}} % fee applies after {{count}} days late.",
        "fee_flat_one": "A fee of {{value}} applies after {{count}} day late.",
        "fee_flat_other": "A fee of {{value}} applies after {{count}} days late.",
        "refused": "Proof of {{date}} refused",
        "reupload": "Upload again",
        "ok_label": "No overdue",
        "ok_title": "Up to date",
        "ok_pending": "{{amount}} being checked by the accounting office.",
        "ok_next": "Next instalment on {{date}}.",
        "left": "Left to pay",
        "next": "Next instalment {{date}} · {{amount}}",
        "pay": "Pay {{amount}}"
      },
      "kpi": {
        "fees": "Fees for the year",
        "fees_children_one": "{{count}} child",
        "fees_children_other": "{{count}} children",
        "fees_discount_one": "{{count}} child · discount {{amount}}",
        "fees_discount_other": "{{count}} children · discount {{amount}}",
        "paid": "Already paid",
        "paid_hint": "{{pct}} % of the year",
        "late": "Overdue",
        "late_hint": "Instalment {{number}} of {{name}}",
        "late_none": "Nothing overdue",
        "coming": "Coming up",
        "coming_pending": "{{amount}} being checked"
      },
      "child": {
        "instalments_one": "{{count}} instalment",
        "instalments_other": "{{count}} instalments",
        "late_one": "{{count}} late",
        "late_other": "{{count}} late",
        "checking": "Checking",
        "ok": "Up to date",
        "fees": "Annual fees",
        "paid_left": "Paid {{paid}} · left {{left}}",
        "progress": "Payment progress of {{name}}",
        "open_receipt": "Open receipt {{number}}",
        "credited": "Credited · {{amount}}",
        "credit": "Credit {{amount}}",
        "credit_moves": "Credit movements",
        "credit_used": "Used for {{label}}",
        "credit_in": "Credit received",
        "credit_refund": "Refunded",
        "pay_instalment": "Pay instalment {{number}}",
        "pay_row": "Pay",
        "pay_for": "Pay for {{name}}",
        "step": "No. {{number}} · {{label}}",
        "paid_on": "paid on {{date}}",
        "since": "overdue since {{date}}",
        "being_checked": "being checked",
        "fee": "+ {{fee}} late fee",
        "left": "{{amount}} left",
        "on": "on {{date}}",
        "receipts": "Receipts ({{n}})",
        "certificate": "Attestation"
      },
      "bank": {
        "title": "Bank transfer",
        "hint": "From your bank or banking app, then upload the transfer notice here.",
        "holder": "Beneficiary",
        "bank": "Bank",
        "rib": "RIB",
        "iban": "IBAN",
        "bic": "BIC",
        "reference": "Reference",
        "copy_rib": "Copy the RIB",
        "copy_iban": "Copy the IBAN",
        "copy_reference": "Copy the reference",
        "reference_hint": "One reference per instalment. It lets the school match your transfer without error.",
        "prepare": "Prepare a transfer"
      },
      "desk": {
        "title": "Pay at the school",
        "hint": "At the school's cash desk · the receipt is handed over at once.",
        "week": "Mon – Fri",
        "saturday": "Saturday",
        "where": "Where",
        "slip": "Slip to show",
        "directions": "Directions"
      },
      "pay": {
        "title": "Pay an instalment",
        "what": "What do you want to pay?",
        "item": "{{name}} · No. {{number}} · {{label}}",
        "service_item": "{{name}} · {{label}}",
        "total": "Total",
        "nothing": "Nothing to pay for now.",
        "way": { "transfer": "Bank transfer", "desk": "At the school" },
        "step_transfer": "Make the transfer from your bank",
        "exact_amount": "Exact amount",
        "copy_amount": "Copy the amount",
        "reference_hint": "Paste the reference in the reason of the transfer. A transfer between Tunisian banks arrives within 24 to 48 hours.",
        "step_proof": "Upload the proof",
        "proof_hint": "A photo or PDF of the transfer notice. The accounting office compares it with the instalment and validates it within {{hours}} hours; the receipt arrives in the app."
      },
      "proof": {
        "title": "Transfer proof",
        "send": "Send the proof",
        "sent": "Proof sent. The accounting office will check it within {{hours}} hours.",
        "replaces": "This proof replaces your proof of {{date}}, which was refused.",
        "for": "For",
        "chip": "{{name}} · No. {{number}}",
        "file": "Transfer notice",
        "file_hint": "Drop a photo or a PDF here (PDF, PNG or JPG, {{max}} MB at most)",
        "date": "Transfer date",
        "amount": "Amount sent (TND)",
        "reference": "Reference",
        "bank": "Issuing bank",
        "bank_none": "Choose a bank",
        "partial": "You are sending {{amount}} while the selected instalments total {{total}}. The difference stays due.",
        "over": "You are sending {{amount}}, more than the {{total}} selected. The accounting office will contact you.",
        "privacy": "Only the accounting office sees this document. Its status is “being checked” until it is validated.",
        "errors": {
          "file_required": "Add the transfer notice.",
          "file_type": "This file type is not accepted. Use a PDF, PNG or JPG.",
          "file_too_large": "This file is too big ({{max}} MB at most).",
          "amount_invalid": "Enter a valid amount.",
          "date_in_future": "The transfer date cannot be in the future.",
          "instalment_invalid": "Choose at least one instalment of your children.",
          "instalment_not_open": "One of these instalments is already paid or waiting for a decision.",
          "transfer_disabled": "This school does not accept bank transfers.",
          "replaces_invalid": "This proof can no longer be replaced."
        }
      },
      "proofs": {
        "title": "My transfer proofs",
        "empty": "No proof sent yet.",
        "item_one": "{{students}} · instalment No. {{numbers}} · {{amount}}",
        "item_other": "{{students}} · instalments No. {{numbers}} · {{amount}}",
        "meta": "Transfer of {{date}} · ref. {{reference}} · sent on {{sent}}",
        "waiting": "The accounting office checks the amount and the reference · answer within {{hours}} hours",
        "recorded": "Payment recorded.",
        "receipt": "Receipt {{number}}",
        "reason": "Reason:",
        "replaced": "Replaced by a new proof",
        "status": { "pending": "Checking", "validated": "Validated", "refused": "Refused" }
      },
      "history": {
        "title": "Payment history",
        "filter": "Filter by child",
        "all": "All",
        "export": "Export (CSV)",
        "file": "payment-history",
        "empty": "No payment yet.",
        "refund": "Credit refund",
        "refunded": "Refunded",
        "paid": "Paid",
        "col": { "date": "Date", "child": "Child", "instalment": "Instalment", "amount": "Amount", "method": "Method", "receipt": "Receipt" }
      },
      "card": {
        "title": "Payments {{year}}",
        "details": "Details",
        "chart": "Paid, late and upcoming amounts",
        "paid": "Paid",
        "late": "Late",
        "upcoming": "Upcoming",
        "next": "Next instalment: {{date}} · {{amount}}",
        "late_note": "Instalment {{number}} of {{name}} ({{amount}}) is overdue since {{date}}."
      },
      "todo": {
        "title": "Instalment {{number}} late",
        "detail_one": "{{amount}} · due on {{date}} ({{count}} day ago)",
        "detail_other": "{{amount}} · due on {{date}} ({{count}} days ago)",
        "pay": "Pay"
      }
    },
    "plans": {
      "intro": "One plan per level: annual amount, schedule and discounts. Changes apply to new instalments.",
      "new": "New plan",
      "error": "The fee plans could not be loaded.",
      "empty_title": "No fee plan yet",
      "empty_body": "Create the plan of a level to generate its pupils' instalments.",
      "add_title": "Add a plan",
      "add_hint": "e.g. Baccalaureate, primary cycle, transport option",
      "classes_count_one": "{{count}} class",
      "classes_count_other": "{{count}} classes",
      "students_count_one": "{{count}} student",
      "students_count_other": "{{count}} students",
      "active": "Active",
      "inactive": "Inactive",
      "edit": "Edit",
      "edit_plan": "Edit plan {{name}}",
      "save": "Save",
      "saved_one": "Plan {{name}} saved · {{count}} instalment updated",
      "saved_other": "Plan {{name}} saved · {{count}} instalments updated",
      "annual": "Annual amount",
      "fee": "Registration fee",
      "late": "Late fee",
      "late_link": "Change in Settings",
      "late_percent_one": "{{value}} % once, {{count}} day after the due date",
      "late_percent_other": "{{value}} % once, {{count}} days after the due date",
      "late_flat_one": "{{value}} flat, {{count}} day after the due date",
      "late_flat_other": "{{value}} flat, {{count}} days after the due date",
      "annual_field": "Annual amount (TND)",
      "fee_field": "Registration fee (TND)",
      "active_switch": "Plan active",
      "row_label": "Label N°{{number}}",
      "row_amount": "Amount N°{{number}}",
      "row_date": "Date N°{{number}}",
      "row_name": "N°{{number}}",
      "row_due": "due {{date}}",
      "discounts_in_force": "Discounts in force",
      "errors": {
        "schedule_mismatch": "The instalments add up to {{total}} but the annual amount is {{annual}}.",
        "amount_invalid": "Enter a valid amount",
        "plan_exists": "This level already has a plan for the year.",
        "count_invalid": "This number of instalments is not offered.",
        "level_required": "Choose a level",
        "fields_required": "Every instalment needs a label and a date"
      },
      "new_dialog": {
        "title": "New fee plan",
        "level": "Level",
        "annual": "Annual amount (TND)",
        "count": "Number of instalments",
        "fee": "Registration fee (TND)",
        "create": "Create the plan",
        "created": "Plan created · schedule generated",
        "no_level": "Every level already has a plan for this year.",
        "count_4": "4 instalments",
        "count_3": "3 instalments",
        "count_10": "10 monthly instalments",
        "count_1": "1 payment"
      },
      "disc": {
        "title": "Discounts",
        "add": "Add a discount",
        "error": "The discounts could not be loaded.",
        "empty": "No discount yet.",
        "siblings": "{{value}} for the 2nd child, {{third}} from the 3rd · applied automatically",
        "manual": "{{value}} · assigned student by student",
        "usage_one": "{{count}} student · −{{amount}}",
        "usage_other": "{{count}} students · −{{amount}}",
        "switch": "{{name}} enabled",
        "on": "{{name}} switched on",
        "off": "{{name}} switched off",
        "dialog_title": "New discount",
        "name": "Name",
        "name_placeholder": "e.g. Company partnership",
        "kind": "Type",
        "kind_percent": "Percentage",
        "kind_flat": "Fixed amount",
        "value_percent": "Value (%)",
        "value_flat": "Value (TND)",
        "third": "Value from the 3rd child",
        "attribution": "Attribution",
        "attribution_manual": "Manual, student by student",
        "attribution_siblings": "Automatic (siblings rule)",
        "create": "Add",
        "created": "Discount added",
        "errors": {
          "name_required": "Enter a name",
          "value_invalid": "Enter a valid value; a percentage is at most 100.",
          "siblings_exists": "A siblings discount already exists."
        }
      }
    },
    "fees": {
      "tab": "Fees & payments",
      "title": "Fees & payments",
      "sub": "Amounts and schedules by level are in",
      "sub_link": "Payments → Fee plans",
      "save": "Save",
      "saved": "Settings saved",
      "error": "The fees settings could not be loaded.",
      "methods": {
        "title": "Accepted methods",
        "sub": "Parents only see the ways to pay that are switched on here",
        "transfer": "Bank transfer with proof",
        "transfer_hint": "The parent sees the RIB below, makes the transfer, then uploads the photo or PDF of the slip. Accounting checks it in Payments → Proofs.",
        "transfer_switch": "Transfer with proof",
        "delay": "Verification delay shown to parents",
        "delay_option": "{{hours}} business hours",
        "desk": "On-site payment at the cash desk",
        "desk_hint": "Receipt handed over immediately · the cash desk closes every day.",
        "desk_switch": "On-site payment",
        "desk_methods": "Methods taken at the desk"
      },
      "bank": {
        "title": "Bank account shown to parents",
        "visible": "Visible in the app",
        "visible_switch": "RIB visible to parents",
        "holder": "Account holder",
        "bank": "Bank",
        "branch": "Branch",
        "rib": "RIB (20 digits)",
        "iban": "IBAN",
        "bic": "BIC",
        "reference": "Reference asked in the transfer reason",
        "reference_family": "Family name, year, child and instalment number",
        "reference_matricule": "Student registration number and instalment number",
        "reference_example_family": "e.g. BENSALAH-2026-Y3",
        "reference_example_matricule": "e.g. 2024-0187-E3",
        "attestation": "RIB certificate (PDF)",
        "preview": "What the parent sees",
        "preview_holder": "Account holder",
        "preview_bank": "Bank",
        "preview_branch": "Branch",
        "preview_rib": "RIB",
        "preview_iban": "IBAN",
        "preview_bic": "BIC",
        "hidden": "The account is hidden from parents."
      },
      "rib": {
        "ok": "Valid RIB: the key matches.",
        "incomplete": "{{typed}} of {{total}} digits",
        "bad_key": "The key does not match: check the last two digits.",
        "invalid": "A RIB is 20 digits, nothing else."
      },
      "desk": {
        "title": "On-site cash desk",
        "sub": "Shown to parents under “Pay on site”",
        "week": "Monday → Friday",
        "saturday": "Saturday",
        "location": "Place",
        "bring": "What to bring"
      },
      "receipts": {
        "title": "Receipts",
        "prefix": "Numbering prefix",
        "prefix_hint": "Leave empty for {{prefix}}. A custom prefix must contain {{token}}.",
        "next": "Next number",
        "tax_id": "Tax ID",
        "footer": "Footer line of the receipt"
      },
      "errors": {
        "rib_invalid": "The server refused this RIB: 20 digits, the last two being the key.",
        "receipt_number_backwards": "The next number cannot be lower than {{min}}: it would repeat a receipt already issued.",
        "receipt_prefix_year": "The prefix must contain {{token}}, so each year starts again at 0001.",
        "receipt_next_invalid": "Enter a whole number from 1 to {{max}}.",
        "max_value": "Enter a whole number from 1 to {{max}}.",
        "no_current_year": "No school year is current yet: set one in Structure first."
      },
      "late": {
        "title": "Late fee",
        "sub": "One rule for the whole school. The fee plans show it, read-only.",
        "saved": "Late fee saved",
        "mode": "Mode",
        "mode_none": "None",
        "mode_percent": "Percentage of what is left, once",
        "mode_flat": "Fixed amount, once",
        "value_percent": "Value (%)",
        "value_flat": "Value (TND)",
        "grace": "Days of grace after the due date"
      },
      "rules": {
        "range": "Enter a number between {{min}} and {{max}}",
        "min": "Enter a number of {{min}} or more",
        "integer": "Enter a whole number",
        "number": "Enter a valid number"
      },
      "relances": {
        "title": "Automatic reminders",
        "saved": "Reminders updated",
        "before": "Reminder before the due date",
        "before_option_one": "{{count}} day before",
        "before_option_other": "{{count}} days before",
        "off": "Off",
        "first": "First reminder",
        "after_option_one": "{{count}} day after",
        "after_option_other": "{{count}} days after",
        "firm": "Firm reminder and alert to management",
        "channel": "Channel",
        "channel_hint": "Templates and detailed rules are in Messages → Automatic rules"
      },
      "pay": {
        "title": "Payroll",
        "sub": "Management figures, not a legal payslip",
        "saved": "Payroll rules saved",
        "cnss": "CNSS contribution (%)",
        "weeks": "Weeks per month (planned hours)",
        "weeks_hint": "A teacher's planned hours are the weekly load times this number."
      }
    },
    "pay": {
      "subtitle_one": "{{date}} · {{rate}} % of instalments collected to date · {{count}} family late",
      "subtitle_other": "{{date}} · {{rate}} % of instalments collected to date · {{count}} families late",
      "year": "School year",
      "proofs": "Proofs",
      "export": "Export",
      "export_payments": "All payments (CSV)",
      "export_unpaid": "Unpaid list (CSV)",
      "export_accounting": "Accounting export (CSV)",
      "record": "Record a payment",
      "file_payments": "payments",
      "file_unpaid": "unpaid",
      "families_one": "{{count}} family",
      "families_other": "{{count}} families",
      "tabs": { "suivi": "Tracking", "proofs": "Proofs to check", "plans": "Fee plans", "cash": "Cash desk" },
      "kpi": {
        "month": "Collected in {{month}}",
        "vs_last": "{{pct}} % vs last year on the same date",
        "month_chart": "Collected this month",
        "rate": "Collected / expected",
        "rate_line": "{{collected}} / {{expected}} · year: {{pct}} % of {{total}}",
        "late": "Late",
        "late_none": "Nobody is late",
        "late_over_one": "of which {{count}} over {{days}} days",
        "late_over_other": "of which {{count}} over {{days}} days",
        "see_unpaid": "See the unpaid",
        "today": "Payments today",
        "today_none": "No payment yet",
        "today_hint": "{{amount}} · last at {{time}}",
        "cash": "Today's cash desk"
      },
      "months": {
        "title": "Collections by month",
        "chart": "Collections by month",
        "compare": "Comparison",
        "vs": "vs {{year}}",
        "no_compare": "No comparison",
        "expected": "Expected",
        "collected": "Collected {{year}}",
        "remaining": "Left to collect this year",
        "remaining_hint": "{{pct}} % of {{total}}",
        "next_big": "Next big instalment",
        "next_big_hint": "No. {{number}} · {{amount}} expected",
        "final": "Final recovery {{year}}"
      },
      "classes": {
        "title": "Recovery by class",
        "chart": "Recovery rate by class",
        "sort": "Sort the classes",
        "sort_asc": "Rate ↑",
        "sort_desc": "Rate ↓",
        "sort_class": "Class",
        "low": "< {{low}} %",
        "mid": "{{low}} to {{mid}} %",
        "high": "≥ {{mid}} %",
        "school": "School {{rate}} %",
        "detail": "{{name}} · {{rate}} % · {{amount}} late"
      },
      "methods": { "title": "Payment methods", "chart": "Payments by method", "total": "collected" },
      "unpaid": {
        "title": "Unpaid",
        "select_all": "Select all",
        "csv": "CSV",
        "search": "Search an unpaid instalment",
        "search_placeholder": "Student, parent or class…",
        "all": "All",
        "over": "More than {{days}} days",
        "never_reminded": "Never reminded",
        "sort": "Sort the unpaid",
        "sort_late": "Sort: lateness",
        "sort_amount": "Sort: amount",
        "sort_class": "Sort: class",
        "col": { "student": "Student", "class": "Class", "parent": "Parent", "phone": "Phone", "instalment": "Instalment", "due": "Due on", "late": "Late", "amount": "Amount", "reminder": "Last reminder", "actions": "Actions" },
        "number": "No. {{number}}",
        "due_on": "due on {{date}}",
        "days_one": "{{count}} day",
        "days_other": "{{count}} days",
        "never": "never",
        "record": "Record a payment",
        "record_for": "Record a payment for {{name}}",
        "remind_family": "Remind this family",
        "extend": "Grant a {{days}}-day delay",
        "extended": "{{days}}-day delay granted to {{name}}",
        "open": "Open the student record",
        "call": "Call the parent",
        "export": "Export",
        "remind": "Remind",
        "empty": "No unpaid instalment."
      },
      "recent": { "title": "Recent payments", "all": "See all", "empty": "No payment yet." },
      "journal": {
        "title": "Payments journal",
        "date": "Date",
        "student": "Student",
        "instalment": "Instalment",
        "method": "Method",
        "reference": "Reference",
        "amount": "Amount",
        "by": "Received by",
        "receipt": "Receipt",
        "export": "Export (CSV)",
        "all_methods": "All methods"
      }
    },
    "payment": {
      "title": "Record a payment",
      "student": "Student",
      "student_placeholder": "Search a student…",
      "no_student": "No student found.",
      "change_student": "Change",
      "instalment": "Instalment",
      "instalment_label": "No. {{number}} · {{label}}",
      "late_tag": "(late)",
      "amount": "Amount (TND)",
      "method": "Payment method",
      "date": "Date",
      "ref": { "cash": "Reference (optional)", "cheque": "Cheque number", "transfer": "Transfer reference", "card": "Transaction number" },
      "ref_needed": { "cheque": "Enter the cheque number", "transfer": "Enter the transfer reference" },
      "bank": "Bank",
      "bank_none": "Choose a bank",
      "print": "Print the receipt after saving",
      "send": "Send the receipt to the parent (e-mail + notification)",
      "submit": "Record · {{amount}}",
      "recorded": "Payment of {{amount}} recorded",
      "due_pill": "{{amount}} due",
      "parent": "parent: {{name}}",
      "nothing_due": "Nothing is left to pay for this student.",
      "no_method": "No payment method is switched on.",
      "errors": {
        "amount_invalid": "Enter a valid amount",
        "amount_over_due": "The amount is more than what is due ({{due}})",
        "method_disabled": "This payment method is not available",
        "reference_required": "Enter the reference",
        "date_in_future": "The date cannot be in the future",
        "cash_closed": "Today's cash desk is closed."
      }
    },
    "record": {
      "title": "Fees {{year}} · {{amount}}",
      "file": "fees",
      "pay": "Record a payment",
      "col": { "number": "Instalment", "period": "Period", "amount": "Amount", "status": "Status", "paid_on": "Paid on" },
      "status": { "paid": "Paid", "partial": "Partial", "due": "Upcoming", "late": "Late", "pending": "Proof being checked", "credited": "Credited" },
      "credit": "Credit {{amount}}",
      "refund": "Refund",
      "to_credit": "{{amount}} moved to credit",
      "due_on": "due on {{date}}",
      "left": "{{amount}} left",
      "fee": "+ {{amount}} late fee",
      "collection": "Collection",
      "amounts": "Amounts",
      "load_failed": "Could not be loaded",
      "paid": "Paid",
      "left_label": "Left",
      "discounts": "Discounts",
      "no_discount": "No discount this year.",
      "remove": "Remove {{name}}",
      "add_label": "Add a discount",
      "add": "Add",
      "no_plan": "No fee plan for this level",
      "no_plan_body": "Once the plan exists, this student's instalments are generated from it.",
      "open_plans": "Open the fee plans",
      "none_title": "No instalment yet",
      "none_body": "The plan of this level is ready: generate this student's instalments.",
      "generate": "Generate the instalments",
      "late_count_one": "{{count}} late instalment",
      "late_count_other": "{{count}} late instalments",
      "nothing_late": "Nothing is late",
      "families_late_one": "{{count}} family late",
      "families_late_other": "{{count}} families late",
      "students_late": "with a late instalment",
      "wizard": {
        "plan": "Plan {{level}} · {{amount}} a year",
        "registration": "Registration fee: {{amount}}",
        "schedule": "Instalments",
        "siblings_one": "Sibling discount expected: {{count}} brother or sister already enrolled, about {{amount}} off.",
        "siblings_other": "Sibling discount expected: {{count}} brothers or sisters already enrolled, about {{amount}} off.",
        "siblings_hint": "An estimate: the exact discount is worked out when the student is created, from the birth dates.",
        "discounts": "Discounts for this student",
        "no_manual": "No manual discount is available.",
        "generate_failed": "The student was added, but their instalments could not be generated. Open their Payments tab to try again."
      }
    },
    "receipt": {
      "title": "Payment receipt",
      "send": "Send",
      "print": "Print",
      "sent": "Receipt sent to the parent",
      "number": "Receipt {{number}}",
      "student": "Student",
      "object": "For",
      "object_value": "School fees {{year}} · instalment No. {{number}}",
      "refund_title": "Refund receipt",
      "refunded_by": "Refunded by {{name}}.",
      "refund_object": "Credit refund",
      "refund_amount": "Amount refunded",
      "refunded": "REFUNDED",
      "method": "Method",
      "amount": "Amount received",
      "paid": "PAID",
      "received_by": "Received by {{name}}.",
      "tax_id": "Tax ID {{id}}",
      "errors": { "no_parent": "This student has no parent to send the receipt to." }
    },
    "remind": {
      "title_one": "Remind {{count}} family",
      "title_other": "Remind {{count}} families",
      "template": "Template",
      "default_text": "Default text",
      "estimate": "An estimate: the server sends one message per student to each of their active parents, and an invalid number costs nothing.",
      "when": "Sending",
      "when_now": "Now",
      "when_evening": "Tonight at 18:00",
      "when_morning": "Tomorrow at 08:00",
      "preview": "Preview for {{name}} · highlighted fields are filled in for each family",
      "chars_one": "{{chars}} characters · {{count}} SMS",
      "chars_other": "{{chars}} characters · {{count}} SMS",
      "cost_email_one": "{{count}} e-mail · free",
      "cost_email_other": "{{count}} e-mails · free",
      "cost_app_one": "{{count}} notification · free",
      "cost_app_other": "{{count}} notifications · free",
      "send": "Send",
      "sent_one": "Reminder sent: {{count}}",
      "sent_other": "Reminders sent: {{count}}",
      "skipped_one": "{{count}} family skipped (no parent, or already paid)",
      "skipped_other": "{{count}} families skipped (no parent, or already paid)"
    },
    "proofs": {
      "kpi": {
        "pending": "To check",
        "pending_hint": "{{amount}} declared",
        "conform": "Compliant",
        "conform_hint": "amount and reference match",
        "delay": "Average validation time",
        "delay_value": "{{hours}} h",
        "refused": "Refused in {{month}}",
        "refused_hint": "out of {{total}} proofs"
      },
      "queue": {
        "title": "Transfer proofs to check",
        "bulk_one": "Validate the compliant proof",
        "bulk_other": "Validate the {{count}} compliant proofs",
        "bulk_done_one": "{{count}} payment recorded · receipt sent to the parent",
        "bulk_done_other": "{{count}} payments recorded · receipts sent to the parents",
        "import": "Import the bank statement",
        "all": "All",
        "ok": "Compliant",
        "issues": "To look at",
        "note": "Oldest first · delay promised to parents: {{hours}} h",
        "note_plain": "Oldest first",
        "col": { "uploaded": "Uploaded", "student": "Student", "expected": "Expected instalment", "amount": "Amount", "reference": "Reference", "check": "Check", "actions": "Actions" },
        "review": "Check",
        "review_for": "Check the proof of {{name}}",
        "empty": "All proofs are checked.",
        "empty_hint": "New uploads from parents arrive here, with a notification."
      },
      "check": { "ok": "Compliant", "amount_gap": "Amount differs", "reference_free": "Free reference" },
      "reason": { "illegible": "Unreadable", "amount_mismatch": "Different amount", "not_on_statement": "Not on the statement", "wrong_rib": "Wrong RIB", "already_used": "Already used" },
      "done": {
        "title": "Recently processed",
        "export": "Export",
        "file": "proofs",
        "empty": "Nothing processed yet.",
        "validated": "Validated",
        "refused": "Refused: {{reason}}",
        "col": { "when": "When", "student": "Student", "instalment": "Instalment", "amount": "Amount", "decision": "Decision", "by": "By", "receipt": "Receipt" }
      },
      "drawer": {
        "state_ok": "Matches",
        "state_warn": "To look at",
        "sub": "Uploaded by {{parent}} {{when}} · {{file}}",
        "sub_noparent": "Uploaded {{when}} · {{file}}",
        "compare": "Reconciliation with the instalment",
        "amount": "Amount",
        "amount_same": "same as the expected instalment",
        "amount_short": "{{missing}} short: a partial payment is possible",
        "amount_over": "{{extra}} more than expected",
        "reference": "Reference",
        "reference_ok": "expected format",
        "reference_free": "free reference: check the student and the instalment by hand",
        "beneficiary": "Beneficiary",
        "beneficiary_hint": "compare the RIB on the proof with the school's",
        "statement": "Bank statement",
        "statement_hint": "check the credit on the statement by hand",
        "unchecked": "not checked",
        "attach": "Attach to",
        "attach_none": "No open instalment.",
        "pick_one": "Pick at least one instalment",
        "amount_to_record": "Amount to record (TND)",
        "watch": "To look at: {{issues}}.",
        "remain": "If you validate, {{amount}} will remain due.",
        "all_good": "Everything matches. Validating records the payment, issues the receipt and sends it to the parent.",
        "write": "Write to {{name}}",
        "student": "Student record",
        "left": "Left to pay: {{amount}}",
        "refuse": "Refuse",
        "validate": "Validate · record {{amount}}",
        "validated": "Proof validated · {{amount}} recorded"
      },
      "viewer": {
        "alt": "Proof {{name}}",
        "no_pdf": "This browser cannot show the PDF here. Use “Open the original”.",
        "zoom_in": "Zoom in",
        "zoom_out": "Zoom out",
        "rotate": "Rotate",
        "open": "Open the original"
      },
      "refuse": {
        "title": "Refuse the proof",
        "reason": "Reason",
        "reason_needed": "Pick a reason",
        "message": "Message to the parent (shown next to the proof)",
        "message_needed": "Tell the parent the reason",
        "placeholder": "Pick a reason or write your own…",
        "sms": "Also warn by SMS",
        "sms_hint": "1 credit · the notification always goes out",
        "submit": "Refuse and warn the parent",
        "done": "Proof refused · {{parent}} was warned",
        "done_noparent": "Proof refused",
        "sms_refused": "The proof is refused, but the SMS was not sent (not enough credits).",
        "why": {
          "illegible": "Unreadable proof: the amount and the reference cannot be read. Please upload a sharp photo or the PDF sent by your bank.",
          "amount_mismatch": "The transfer amount does not match the instalment. Please complete the payment or contact us.",
          "not_on_statement": "We cannot find the transfer on the school's account yet. Please check with your bank that it was executed.",
          "wrong_rib": "The beneficiary of the transfer is not the school's account. Please check the RIB shown in the app.",
          "already_used": "This proof was already used for another instalment."
        }
      },
      "errors": { "not_pending": "This proof was already processed.", "instalment_invalid": "One of these instalments cannot be paid by this proof." }
    },
    "cash": {
      "title": "Cash desk of {{date}}",
      "opened": "Opened at {{time}} by {{name}} · float {{float}}",
      "closed": "Closed at {{time}} by {{name}}",
      "print": "Print",
      "tiles": "Totals by method",
      "receipts_one": "{{count}} receipt",
      "receipts_other": "{{count}} receipts",
      "none_title": "The cash desk is not open today",
      "none_body": "Open it with the float in the drawer. The first payment at the desk opens it on its own.",
      "float": "Opening float (TND)",
      "open": "Open the cash desk",
      "moves": {
        "title": "Today's movements",
        "refund": "Refund",
        "refunds_count_one": "{{count}} refund",
        "refunds_count_other": "{{count}} refunds",
        "summary_one": "{{count}} payment · {{total}}",
        "summary_other": "{{count}} payments · {{total}}",
        "empty": "No receipt yet today.",
        "col": { "time": "Time", "student": "Student", "method": "Method", "receipt": "Receipt", "amount": "Amount" }
      },
      "count": {
        "title": "Cash count",
        "value": "{{value}} TND",
        "input": "Count of {{value}} TND",
        "counted": "Counted",
        "expected": "Expected (float {{float}} + cash {{cash}})",
        "refunded": "Cash refunded",
        "expected_refunds": "Expected (float {{float}} + cash {{cash}} − refunds {{refunds}})",
        "gap": "Gap",
        "whole": "Counts must be whole numbers.",
        "cheques": "Cheques are listed on the bank deposit slip."
      },
      "close": {
        "open": "Close the cash desk",
        "title": "Close the cash desk",
        "total": "Total collected",
        "counted": "Cash counted",
        "note": "Comment (kept in the journal)",
        "note_placeholder": "e.g. a 5 TND coin is missing",
        "warn": "Count the cash before closing: the gap will be recorded as it is.",
        "submit": "Confirm the closing",
        "done": "Cash desk closed"
      },
      "history": {
        "title": "Last closings",
        "by": "{{name}} · {{time}}",
        "empty": "No closing yet.",
        "col": { "day": "Day", "by": "Closed by", "total": "Total collected", "counted": "Cash counted", "gap": "Gap" }
      },
      "report": { "title": "Cash report · {{date}}", "total": "Total", "signature": "Signature" },
      "errors": { "counts_invalid": "The counts are not valid.", "already_closed": "Today's cash desk is already closed.", "already_open": "Today's cash desk is already open." }
    }
  },
  "segmented": {
    "day": "Day",
    "period": "Period",
    "planning_view": "Planning view",
    "people_status": "Account status"
  },
  "timetable_v2": {
    "view": "View",
    "week_pick": "Week",
    "room": "Room {{num}}",
    "pdf": "PDF",
    "min_left": "{{minutes}} min left",
    "next": "Next",
    "break": "Break · {{duration}} free",
    "free_day": "No lessons that day",
    "week_of": "Week of {{from}} to {{to}}",
    "group_shared": "{{group}} (shared class)",
    "week_only": "{{week}} only",
    "due_tag": "Due {{date}}: {{work}}",
    "due_on": "Due: {{date}}",
    "all_about": "All about {{subject}}",
    "lessons_count_one": "{{count}} lesson",
    "lessons_count_other": "{{count}} lessons",
    "exams_count_one": "{{count}} exam",
    "exams_count_other": "{{count}} exams"
  },
  "teacher_tt": {
    "classes_one": "{{count}} class",
    "classes_other": "{{count}} classes",
    "today_one": "{{count}} lesson today",
    "today_other": "{{count}} lessons today",
    "export": "Export / Print",
    "pdf": "Download as PDF",
    "print": "Print",
    "ical": "Add to my calendar (iCal)",
    "my_classes": "Timetables of my classes",
    "odd_weeks": "Odd weeks",
    "even_weeks": "Even weeks",
    "load": "My load",
    "load_hours": "{{assigned}} / {{load}} h",
    "load_aria": "{{assigned}} hours out of {{load}}",
    "per_week": "per week",
    "hours": "{{hours}} h",
    "changes": "Changes",
    "new_timetable": "New timetable",
    "from_date": "From {{date}}",
    "no_changes": "No change announced",
    "filter": "Filter:",
    "do_roll_call": "Do the roll call",
    "details": "Details",
    "roll_now": "Do the roll call now",
    "roll_soon": "Upcoming",
    "roll_opens": "The roll call opens at {{time}}",
    "give_homework": "Give homework",
    "see_class": "See the class"
  },
  "student_ui": {
    "card": "Student card",
    "card_id": "Card number",
    "class": "Class",
    "coefficient": "Coefficient",
    "day": "Day",
    "no_children_body": "Ask the school to link your children to your account.",
    "no_lessons_today": "No lessons today",
    "no_timetable": "No lessons in the timetable yet",
    "no_timetable_body": "The school has not planned this class's lessons yet.",
    "now": "Now",
    "period_week": "Week",
    "room": "Room",
    "school": "School",
    "school_type": "School type",
    "teacher": "Teacher",
    "year": "School year"
  },
  "people": {
    "subtitle": "Every account of the school: students, teachers, parents and staff.",
    "add": "Add person",
    "search": "Search people",
    "search_placeholder": "Search by name or e-mail",
    "name": "Name",
    "roles": "Roles",
    "status": "Status",
    "active": "Active",
    "inactive": "Inactive",
    "tab": {
      "all": "All",
      "student": "Students",
      "teacher": "Teachers",
      "parent": "Parents",
      "staff": "Staff"
    },
    "status_filter": {
      "active": "Active",
      "inactive": "Inactive",
      "all": "All"
    },
    "role": {
      "student": "Student",
      "teacher": "Teacher",
      "parent": "Parent",
      "staff": "Staff"
    },
    "role_hint": {
      "student": "Joins a class; parents can be linked to them",
      "teacher": "Teaches subjects to classes",
      "parent": "Linked to a student of the school",
      "staff": "Runs the school in this app"
    },
    "empty_title": "No one here yet",
    "empty_body": "No account matches these filters. Change them or add a person.",
    "details": "Details",
    "groups": "Groups",
    "no_groups": "No group",
    "resend_mail": "Resend password e-mail",
    "mail_sent": "Password e-mail sent to {{email}}",
    "deactivate": "Deactivate",
    "reactivate": "Reactivate",
    "deactivated": "{{name}} is deactivated",
    "reactivated": "{{name}} is active again",
    "remove_role": "Remove the {{role}} role",
    "remove_role_body": "{{name}} keeps their other roles: {{roles}}. Their {{role}} records are deleted. This cannot be undone.",
    "remove_last_role_body": "This is {{name}}'s only role: the account is deleted with it. This cannot be undone.",
    "remove_role_confirm": "Remove role",
    "role_removed": "Role removed from {{name}}",
    "delete_account": "Delete account",
    "delete_account_body": "This deletes {{name}}'s account and every role it holds: {{roles}}. This cannot be undone.",
    "account_deleted": "{{name}}'s account is deleted",
    "edit_title": "Edit {{name}}",
    "edit_unavailable": "This parent is not linked to any student, so their profile cannot be edited here.",
    "saved": "{{name}} is saved",
    "created": "{{name}} is added",
    "save": "Save",
    "create": "Create",
    "required": "Required",
    "digits": "{{n}} digits",
    "invalid_email": "Enter a valid e-mail",
    "email_taken": "An account already uses this e-mail",
    "pick_student": "Pick the student",
    "existing_parent": "This e-mail belongs to {{name}}: that account is linked to the student as a parent. Only the parent details below are saved; the account itself is not changed.",
    "password_mail_note": "The new account gets an e-mail to set its password.",
    "linked_to": "Linked to {{name}}",
    "wizard": {
      "step": "Step {{n}} of {{total}}: {{name}}",
      "role": "Role",
      "identity": "Identity",
      "details": "Details",
      "review": "Review",
      "pick_role": "Who are you adding?",
      "back": "Back",
      "next": "Next"
    },
    "gender": {
      "M": "Male",
      "F": "Female"
    },
    "parent_type": {
      "F": "Father",
      "M": "Mother",
      "O": "Other legal guardian"
    },
    "family": {
      "M": "Married",
      "D": "Divorced",
      "O": "Other"
    },
    "fields": {
      "role": "Role",
      "first_name": "First name",
      "last_name": "Last name",
      "ar_first_name": "First name (Arabic)",
      "ar_last_name": "Last name (Arabic)",
      "email": "E-mail",
      "gender": "Gender",
      "birthday": "Birthday",
      "cin": "CIN",
      "phone_number": "Phone",
      "address": "Street address",
      "city": "City",
      "zip_code": "Zip code",
      "country": "Country",
      "_class": "Class",
      "birth_place": "Place of birth",
      "register_number": "Register number",
      "registration_number": "Registration number",
      "card_id": "Card ID",
      "matricule": "Employee number",
      "subject": "Subjects",
      "classes": "Classes",
      "type": "Relationship",
      "profession": "Profession",
      "family_situation": "Family situation",
      "student": "Student",
      "find_student": "Find the student"
    }
  },
  "nav_short": {
    "timetable": "Timetable",
    "planning": "Planning",
    "attendance": "Presence",
    "assessments": "Exams",
    "permissions": "Access",
    "homework": "Homework"
  },
  "structure": {
    "subtitle": "The school year, its periods, and the rules of evaluation, passage and attendance.",
    "year": "School year",
    "save": "Save",
    "saved": "Structure saved",
    "unsaved": "Unsaved changes: {{count}}",
    "leave": { "title": "Leave without saving?", "body_one": "You have {{count}} unsaved change. Leaving this page discards it.", "body_other": "You have {{count}} unsaved changes. Leaving this page discards them.", "confirm": "Leave" },
    "forbidden": { "periods": "You do not have permission to change the periods.", "rules": "You do not have permission to change the rules.", "levels": "You do not have permission to change the levels.", "types": "You do not have permission to change the class types.", "subjects": "You do not have permission to change the subjects.", "volumes": "You do not have permission to change coefficients and hours.", "units": "You do not have permission to change the modules." },
    "refusal": { "period_holds_exams": "An exam of this year would fall outside its period. Move or delete the exam first, or keep the dates of the period." },
    "read_only": { "periods": "You can read the periods but not change them.", "rules": "You can read the rules but not change them." },
    "tab": { "periods": "Periods", "levels": "Levels & cycles", "levels_univ": "Programmes & years", "classes": "Classes & groups", "subjects": "Subjects", "subjects_univ": "Modules (UE / ECUE)", "evaluation": "Evaluation & passage", "attendance": "Attendance" },
    "banner": { "label": "Type of establishment", "hint": "ALLcarta sets the type of establishment. To change it, contact us." },
    "contact": {
      "open": "Contact ALLcarta",
      "title": "Contact ALLcarta",
      "body": "Ask for a feature to be switched on. The ALLcarta team sees your request and answers within one working day.",
      "feature": "Feature to switch on",
      "none": "Every feature is already on for your establishment.",
      "send": "Send the request",
      "sent": "Request sent to ALLcarta"
    },
    "timeline": { "label": "The school year with its periods and exam windows", "exams": "exams" },
    "periods": {
      "title": "Split of the year",
      "hint": "Dates of each {{periods}} and of its exam window. Nothing is applied before you save.",
      "add": "Add a {{period}}",
      "add_rattrapage": "Add the resit session",
      "rattrapage": "Resit session",
      "remove": "Remove {{name}}",
      "start": "From",
      "end": "To",
      "exam_start": "Exams from",
      "exam_end": "Exams to",
      "end_before_start": "The end must be after the start.",
      "empty_title": "No school year yet",
      "empty_body": "ALLcarta opens your first school year. Contact us if it is missing."
    },
    "rules": {
      "hint": "Each rule can be switched off or given your value, and keeps its default visible.",
      "reset_all": "Reset all",
      "reset_all_title": "Reset all rules to their defaults?",
      "reset_all_body_one": "{{count}} rule goes back to its default value. Nothing is applied before you save.",
      "reset_all_body_other": "{{count}} rules go back to their default values. Nothing is applied before you save.",
      "empty_title": "No rules to show",
      "empty_body": "The rules for your type of establishment appear here.",
      "group": { "passage": "Passage and validation", "council": "Report card council", "mentions": "Honours", "justification": "Justification", "thresholds": "Thresholds", "exams": "Exams and marks", "homework": "Homework", "other": "Other" },
      "passage": {
        "title": "Evaluation and passage rules",
        "pass_average": "Passing average",
        "mention_ab": "Honours threshold: fairly good",
        "mention_b": "Honours threshold: good",
        "mention_tb": "Honours threshold: very good",
        "rounding": "Rounding of averages",
        "compensation_between_ue": "Compensation between course units",
        "capitalisation": "Capitalisation of course units",
        "rattrapage_keep_best": "Resit: keep the better mark",
        "rachat_min_credits": "Buy-back: minimum credits",
        "rachat_min_average": "Buy-back: minimum average",
        "eliminatory_mark": "Eliminatory mark",
        "jury_points_max": "Jury points: maximum",
        "felicitations_min": "Congratulations: minimum average",
        "warning_min": "Warning: average below",
        "warning_absences": "Warning: absences from"
      },
      "unit": { "days": "days", "credits": "credits", "absences/period": "absences/period", "retards/period": "lates/period", "h": "hours", "min": "minutes", "absences": "absences" },
      "attendance": {
        "title": "Attendance rules",
        "justify_within_days": "Days allowed to justify an absence",
        "edit_window_hours": "Hours a teacher may edit a roll call",
        "on_time_minutes": "Minutes after the start still counted on time",
        "alert_absences": "Alert after this many absences",
        "alert_lates": "Alert after this many lates",
        "rate_alert_pct": "Attendance rate alert",
        "watch_absences": "Absences that put a student on watch",
        "watch_days": "Days of the watch window",
        "elimination_absences": "Elimination: number of absences"
      },
      "exams": {
        "title": "Exam rules",
        "correction_days": "Days a teacher may correct marks after publication",
        "late_marks_days": "Days before marks are late",
        "pass_goal_pct": "Pass-rate goal"
      },
      "homework": {
        "title": "Homework rules",
        "done_goal_pct": "Homework done goal",
        "missed_alert": "Missed homework before an alert"
      }
    },
    "diff": {
      "open": "What changes",
      "title": "What changes",
      "hint": "Nothing is applied before you save.",
      "period": "{{year}} · {{name}}",
      "added": "Added",
      "removed": "Removed",
      "rule_reset": "Back to the default: {{value}}"
    },
    "history": {
      "open": "History",
      "title": "History of the structure",
      "empty_title": "Nothing in the history yet",
      "empty_body": "Every change to the structure is listed here, with its author.",
      "by": "by {{name}}",
      "system": "by the system",
      "newer": "Newer",
      "older": "Older"
    }
  },
  "school_types": {
    "private": "Private",
    "public": "Public"
  },
  "platform": {
    "subtitle": "Every establishment on ALLcarta, its plan and its features.",
    "new": "New establishment",
    "empty_title": "No establishment yet",
    "empty_body": "Create the first establishment: its first administrator receives an invitation by e-mail.",
    "search": "Search establishments",
    "search_placeholder": "Name or city",
    "filter_kind": "Type of establishment",
    "filter_status": "Subscription",
    "features_on_one": "{{count}} on",
    "features_on_other": "{{count}} on",
    "expires_in_one": "ends in {{count}} d",
    "expires_in_other": "ends in {{count}} d",
    "soon": "soon",
    "locked": "Not available for this type",
    "status": { "active": "Active", "trial": "Trial", "expired": "Expired", "soon": "Expiring soon" },
    "kind": {
      "primary": "Primary school",
      "college": "Middle school",
      "lycee": "High school",
      "college_lycee": "Middle and high school",
      "university": "University"
    },
    "kind_hint": {
      "primary": "Grades 1 to 6, terms",
      "college": "Grades 7 to 9, terms",
      "lycee": "Secondary grades, terms",
      "college_lycee": "Grades 7 to 12, terms",
      "university": "Degrees, semesters and resits"
    },
    "col": { "name": "Establishment", "kind": "Type", "city": "City", "students": "Students", "features": "Features", "status": "Status" },
    "field": {
      "kind": "Type",
      "type": "Public or private",
      "periods": "Periods",
      "city": "City",
      "students": "Students",
      "teachers": "Teachers",
      "subscription_end": "Subscription ends",
      "created": "Created",
      "group": "Group"
    },
    "kpi": {
      "establishments": "Establishments",
      "by_kind": "Establishments by type",
      "students": "Students",
      "teachers_one": "{{count}} teacher",
      "teachers_other": "{{count}} teachers",
      "sms": "SMS credits used",
      "sms_later": "Available with SMS billing",
      "subscriptions": "Subscriptions to handle",
      "subscriptions_detail": "{{expired}} expired · {{soon}} ending within {{days}} days"
    },
    "tab": { "overview": "Overview", "features": "Features", "journal": "Journal" },
    "group": {
      "finance": "Finance",
      "communication": "Communication",
      "school_life": "School life",
      "administration": "Administration",
      "teaching": "Teaching",
      "services": "Services",
      "university": "University"
    },
    "feature": {
      "payments": { "name": "Payments", "desc": "Fee schedules, bank transfers with proof and on-site cash desk.", "gone": "The Payments menu disappears; parents no longer see their instalments or upload a transfer proof.", "appears": "The Payments menu appears for the staff and parents." },
      "salaries": { "name": "Salaries", "desc": "Staff pay slips and monthly payroll.", "gone": "The Salaries menu disappears for the staff.", "appears": "The Salaries menu appears for the staff." },
      "sms": { "name": "SMS", "desc": "Absence alerts, payment reminders and announcements.", "gone": "No more automatic SMS (absences, reminders); the remaining credits are frozen.", "appears": "SMS alerts can be sent again." },
      "whatsapp": { "name": "WhatsApp", "desc": "The same messages through WhatsApp Business, chosen by each family.", "gone": "Families who chose WhatsApp go back to the app and e-mails.", "appears": "Families can choose WhatsApp for their messages." },
      "messages": { "name": "Messages", "desc": "Messages between the staff, teachers, parents and students.", "gone": "The Messages menu disappears for everyone.", "appears": "The Messages menu appears for everyone." },
      "discipline": { "name": "Discipline", "desc": "Incidents, sanctions and discipline board.", "gone": "The Discipline menu disappears; parents no longer see incidents.", "appears": "The Discipline menu appears for the staff and teachers." },
      "documents": { "name": "Official documents", "desc": "Certificates and transcripts with a verification QR code.", "gone": "No more certificates or transcripts can be generated; QR codes already issued stay valid.", "appears": "The Documents menu appears for the staff." },
      "admissions": { "name": "Online admissions", "desc": "Public form, attachments and follow-up until enrolment.", "gone": "The public form closes; applications in progress stay visible to the management.", "appears": "The public admission form opens." },
      "timetable_generation": { "name": "Automatic timetable", "desc": "Constraint solver, teacher preferences and versions.", "gone": "The Generate button disappears; the current timetable stays editable by hand.", "appears": "The Generate button appears in Planning." },
      "formations": { "name": "Trainings and workshops", "desc": "Hourly-paid trainings and one-off workshops.", "gone": "The Trainings menu disappears; trainers no longer see their sessions.", "appears": "The Trainings menu appears for the staff and trainers." },
      "cantine": { "name": "Canteen", "desc": "Menus, enrolment, attendance and billing.", "gone": "The Canteen menu disappears for the staff and parents; canteen billing stops.", "appears": "The Canteen menu appears for the staff and parents." },
      "transport": { "name": "Transport", "desc": "Routes, stops, vehicles and parent alerts.", "gone": "The Transport menu disappears; bus alerts are no longer sent.", "appears": "The Transport menu appears for the staff and parents." },
      "stages": { "name": "Internships", "desc": "Agreements, supervisors, companies and defences.", "gone": "The Internships menu disappears; agreements in progress stay archived.", "appears": "The Internships menu appears for the staff." },
      "deliberations": { "name": "Deliberations", "desc": "Juries, minutes and lists of admitted students.", "gone": "The Deliberations menu disappears; signed minutes stay in the documents.", "appears": "The Deliberations menu appears for the staff." }
    },
    "toggle": {
      "off_title": "Switch off {{feature}} for {{name}}?",
      "on_title": "Switch on {{feature}} for {{name}}?",
      "off_confirm": "Switch off",
      "on_confirm": "Switch on",
      "disappears": "What users lose:",
      "kept_title": "What is kept:",
      "kept": "All the data already entered. Switching it back on shows it again, with no loss.",
      "journal_note": "The change is written to the platform journal.",
      "appears": "What appears:",
      "appears_note": "The menu shows the next time staff open a page.",
      "done_on": "{{feature}} is on for {{name}}",
      "done_off": "{{feature}} is off for {{name}}"
    },
    "drawer": { "features_note": "A feature that is off disappears from the establishment's menus. Its data is kept." },
    "matrix": { "establishment": "Establishment", "subtitle": "A feature that is off disappears from the establishment's menus. Greyed switches do not exist for that type." },
    "journal": {
      "subtitle": "Everything done to the establishments, newest first.",
      "filter": "Establishment",
      "all": "All establishments",
      "empty_title": "Nothing in the journal yet",
      "empty_body": "Creations and changes of establishments appear here.",
      "by": "by {{name}}",
      "system": "by the system",
      "newer": "Newer",
      "older": "Older"
    },
    "wizard": {
      "title": "New establishment",
      "discard_title": "Discard this establishment?",
      "discard_body": "What you typed is not saved. Closing the form loses it.",
      "discard_confirm": "Discard",
      "step": "Step {{n}} of {{total}} · {{name}}",
      "step_identity": "Identity",
      "step_type": "Type",
      "step_features": "Features",
      "step_admin": "First administrator",
      "step_review": "Review",
      "name": "Name",
      "name_ar": "Name (Arabic)",
      "group": "Group of establishments",
      "group_hint": "A name that will bring several establishments together, such as a university and its schools.",
      "no_group": "No group",
      "pick_kind": "Pick the type of establishment",
      "type_hint": {
        "private": "Private: tuition fees and payments are on by default.",
        "public": "Public: free tuition, so payments and admissions are off by default."
      },
      "periods_note": "Default periods: {{periods}}. The establishment can change them later.",
      "features_note": "Pre-filled for this type. Switch on what the establishment has subscribed to.",
      "features_count": "Features ({{n}})",
      "first_name": "First name",
      "last_name": "Last name",
      "email": "E-mail (receives the invitation)",
      "admin_name": "Administrator",
      "invite_note": "An invitation e-mail is sent to create their password.",
      "required": "Required",
      "invalid_email": "Enter a valid e-mail address",
      "back": "Back",
      "next": "Next",
      "create": "Create",
      "created": "{{name}} created. The invitation is on its way."
    }
  },
  "generation": {
    "steps_label": "Generation steps",
    "nav": { "previous": "Previous", "next": "Next" },
    "run": {
      "title": "Generate the timetable",
      "engine": "Google OR-Tools (CP-SAT) · computed on the server",
      "computed": "What will be computed",
      "classes_hours": "{{classes}} classes · {{hours}} teaching hours a week",
      "teachers": "{{teachers}} teachers · {{unavailable}} unavailabilities · {{preferred}} preferences",
      "rules": "{{active}} active rules, {{hard}} of them mandatory",
      "locked_one": "{{count}} locked lesson of version {{n}} stays in place",
      "locked_other": "{{count}} locked lessons of version {{n}} stay in place",
      "time_limit": "Maximum computing time",
      "minutes": "{{minutes}} min",
      "generate": "Generate",
      "running": "Computing…",
      "hint": "You can leave the page, a notification arrives at the end.",
      "view_result": "See the result",
      "retry": "Run again",
      "score": "Quality score",
      "toast_done": "Timetable generated · score {{score}}",
      "already_running": "A generation is already running",
      "unsaved": "Save your changes from step 2 before starting",
      "base_error": "The versions could not be loaded: the base version is unknown",
      "status": {
        "idle": { "name": "Waiting", "sub": "Start the computation to see the progress." },
        "queued": { "name": "Waiting", "sub": "The computation is about to start." },
        "running": { "name": "Searching", "sub": "The score rises with every better solution." },
        "done": { "name": "Done", "sub": "{{duration}}" }
      },
      "log_label": "Solver log",
      "log_empty": "Solver log…",
      "log_time": "[{{seconds}} s]",
      "failed": {
        "infeasible": "No solution respects all the mandatory rules",
        "no_solution": "No solution found in the time allowed: increase the computing time",
        "interrupted": "The computation was interrupted: run it again",
        "error": "The computation was interrupted: run it again"
      }
    },
    "result": {
      "title": "Result · Version {{n}}",
      "subtitle": "Computed in {{duration}} · all mandatory rules respected",
      "duration": "{{minutes}} min {{seconds}} s",
      "duration_seconds": "{{seconds}} s",
      "regenerate": "Generate again",
      "editor": "Open in the editor",
      "compare": "Compare to v{{n}}",
      "publish": "Publish",
      "score": "Score",
      "trend": "{{delta}} vs v{{base}}",
      "preferences": "Preferences met",
      "student_gaps": "Student gaps",
      "teacher_gaps": "Teacher gaps",
      "hours": "{{hours}} h",
      "unmet_one": "Points to improve ({{count}})",
      "unmet_other": "Points to improve ({{count}})",
      "all_met": "Every preference is met.",
      "missing": "This version no longer exists",
      "missing_body": "The generated version was deleted. Generate the timetable again."
    },
    "violation": {
      "teacher_preferences": "{{teacher}} teaches on {{day}} at {{time}} (outside the preferred slots)",
      "heavy_morning": "{{class}} has {{subject}} on {{day}} at {{time}} (rule “heavy subjects in the morning”)",
      "one_per_day": "{{class}} has {{subject}} more than once on {{day}}",
      "sport_after_lunch": "{{class}} has {{subject}} right after lunch on {{day}}",
      "student_gaps": "{{class}} has a {{hours}} h gap on {{day}}",
      "teacher_gaps": "{{teacher}} has a {{hours}} h gap on {{day}}",
      "balance_days": "{{class}} has a long day on {{day}} ({{hours}} h)"
    },
    "log": {
      "read_inputs_one": "Reading the data: {{count}} class, {{teachers}} teachers, {{rooms}} rooms, {{hours}} h of lessons",
      "read_inputs_other": "Reading the data: {{count}} classes, {{teachers}} teachers, {{rooms}} rooms, {{hours}} h of lessons",
      "model_one": "Model built: {{count}} variable, {{constraints}} constraints",
      "model_other": "Model built: {{count}} variables, {{constraints}} constraints",
      "first_solution": "First solution found · score {{score}}",
      "improved": "Better solution · score {{score}}",
      "finished": "Finished · score {{score}}",
      "finished_optimal": "Finished, optimal solution · score {{score}}",
      "infeasible": "No solution respects all the mandatory rules",
      "no_solution": "No solution found in the time allowed",
      "error": "The computation was interrupted"
    },
    "step": {
      "calendar": { "name": "Calendar", "hint": "days, slots, breaks" },
      "need": { "name": "Needs", "hint": "hours per class and subject", "missing_one": "{{count}} need without a teacher", "missing_other": "{{count}} needs without a teacher" },
      "teachers": { "name": "Teachers", "hint": "subjects, load, availability" },
      "rooms": { "name": "Rooms", "hint": "types and capacities" },
      "constraints": { "name": "Constraints", "hint": "rules and priorities" },
      "generate": { "name": "Generate", "hint": "start the computation" },
      "result": { "name": "Result", "hint": "check and publish" }
    },
    "ready": { "title": "Ready to generate", "steps_one": "{{count}} step out of 5", "steps_other": "{{count}} steps out of 5", "clear": "Nothing is in the way.", "problems_one": "{{count}} point to check", "problems_other": "{{count}} points to check" },
    "problem": {
      "nothing_to_place": "Nothing to place: every lesson is locked or has no teacher assigned",
      "class_over_grid": "{{class}} has {{hours}} h to place for {{slots}} slots (step 2)",
      "teacher_over_available": "{{teacher}} has {{hours}} h to teach for {{slots}} available slots (step 3)",
      "uncovered_one": "A teacher is missing for {{count}} need (step 2)",
      "uncovered_other": "A teacher is missing for {{count}} needs (step 2)",
      "missing_room_kind": "No {{kind}} room for {{subject}} (step 4)",
      "room_kind_over_grid": "Not enough \"{{kind}}\" rooms: {{hours}} h to place for {{slots}} slots (step 4)"
    },
    "calendar": {
      "title": "Calendar of the week",
      "days": "Teaching days",
      "slots": "Slots",
      "slot_minutes": "Slot length: {{minutes}} min",
      "half_days": "{{days}}: morning only",
      "lunch": "lunch break",
      "rules": "Calendar rules"
    },
    "rule": {
      "day_start": "Day start",
      "day_end": "Day end",
      "lunch_start": "Lunch break start",
      "lunch_end": "Lunch break end",
      "wednesday_afternoon_off": "Wednesday afternoon free",
      "saturday_afternoon_off": "Saturday afternoon free",
      "week_a_parity": "Weeks A / B (alternating): parity of week A",
      "class_day_hours_max": "Maximum hours per class and day"
    },
    "teachers": {
      "title": "Teachers and availability",
      "hint": "Click or drag over the grid to paint",
      "empty": "No teacher yet.",
      "hours": "{{hours}} h",
      "unavailable_one": "{{count}} unavailable slot",
      "unavailable_other": "{{count}} unavailable slots",
      "preferred_one": "{{count}} preferred slot",
      "preferred_other": "{{count}} preferred slots"
    },
    "constraints": {
      "title": "Constraints and priorities",
      "badge": "MANDATORY",
      "hint": "always respected · the others are balanced by their weight",
      "fixed": "non-negotiable",
      "locked_toast": "Mandatory rule: it cannot be switched off",
      "weight_of": "Weight: {{name}}",
      "level_1": "Low",
      "level_2": "Medium",
      "level_3": "Important",
      "level_4": "Very important",
      "level_5": "Maximum"
    },
    "hard": {
      "no_overlap": { "name": "No overlap", "desc": "a teacher, a class or a room has one lesson at a time" },
      "availability": { "name": "Teacher availability", "desc": "no lesson on a slot painted red" },
      "exact_volume": { "name": "Exact hours", "desc": "each class gets exactly its hours per subject" },
      "room_kind": { "name": "Suitable room", "desc": "lab for Physics, computer room for Computing, gym for Sport" }
    },
    "soft": {
      "student_gaps": { "name": "No gaps for students", "desc": "the lessons of a day follow one another" },
      "teacher_preferences": { "name": "Teacher preferences", "desc": "preferred slots (green)" },
      "heavy_morning": { "name": "Heavy subjects in the morning", "desc": "subjects marked heavy before the lunch break" },
      "one_per_day": { "name": "Same subject: at most 1 session a day", "desc": "except 2 h blocks" },
      "sport_after_lunch": { "name": "No Sport right after lunch", "desc": "no Sport just after the lunch break" },
      "teacher_gaps": { "name": "Limit teachers' gaps", "desc": "group a teacher's hours" },
      "balance_days": { "name": "Balance the load across the week", "desc": "avoid days that are too long for a class" }
    }
  },
  "org": {
    "yes": "Yes",
    "no": "No",
    "count": { "classes_one": "{{count}} class", "classes_other": "{{count}} classes" },
    "levels": {
      "title": "Cycles and levels",
      "title_univ": "Programmes and years of study",
      "hint": "Order of the levels, open sections and levels not yet open. Classes are created in Classes.",
      "hint_univ": "Domain › mention › programme, then the years. Specialisations open per year.",
      "add_cycle": "New cycle",
      "add_cycle_univ": "New programme",
      "add_level": "Level",
      "add_level_univ": "Year",
      "new_level": "New level",
      "new_level_univ": "New year",
      "cycle_name": "Cycle name",
      "cycle_name_univ": "Programme name",
      "cycle_actions": "Cycle actions",
      "rename": "Rename",
      "duplicate": "Duplicate",
      "archive": "Archive",
      "copy_suffix": "(copy)",
      "copy_suffix_n": "(copy {{n}})",
      "domain": "Domain",
      "mention": "Mention",
      "cycle_empty": "A cycle needs a name.",
      "cycle_taken": "Another cycle already has this name.",
      "level_name": "Level name",
      "move_up": "Move up {{name}}",
      "move_down": "Move down {{name}}",
      "remove": "Delete {{name}}",
      "open": "open",
      "open_level": "Open this level",
      "not_open": "not yet open",
      "to_configure": "to configure",
      "no_section": "no section",
      "no_section_univ": "common core",
      "add_section": "Add a section",
      "empty_title": "No level yet",
      "empty_body": "Create a cycle, then its levels. Classes are created in Classes.",
      "read_only": "You can read the levels but not change them."
    },
    "types": {
      "title": "Class and group types",
      "hint": "Maximum size, sub-groups and session length per type. Exceptions per subject are beside them.",
      "hint_univ": "A cohort follows the lecture in the lecture hall, then splits into tutorial and practical groups, each with its maximum size and timetable.",
      "add": "New type",
      "new_type": "New type",
      "name": "Type name",
      "max": "Maximum size",
      "max_of": "Maximum size {{name}}",
      "less": "Less {{name}}",
      "more": "More {{name}}",
      "over": "Classes over the limit: {{list}}",
      "subgroups": "Sub-groups",
      "subgroups_of": "Sub-groups {{name}}",
      "subgroups_count": "Number of sub-groups {{name}}",
      "none": "none",
      "scheduling": "Scheduling",
      "scheduling_of": "Scheduling {{name}}",
      "default_minutes": "Default session length",
      "default_minutes_of": "Default session length {{name}}",
      "allowed": "Allowed lengths",
      "allowed_of": "Allowed lengths {{name}}",
      "default_not_allowed": "The default length must be one of the allowed lengths.",
      "split_title": "Example split",
      "split_type": "{{name}} · max {{max}}",
      "split_groups": "{{n}} sub-groups of {{size}} at most",
      "empty_title": "No class type yet",
      "empty_body": "Create a type to set the maximum size and session length of your classes.",
      "read_only": "You can read the class types but not change them."
    },
    "exceptions": {
      "title": "Exceptions per subject",
      "title_univ": "Exceptions per ECUE",
      "subject": "Subject",
      "subject_univ": "ECUE",
      "minutes": "Session length",
      "half_group": "Half group",
      "ab_weeks": "A/B weeks",
      "room": "Room",
      "by_default": "default",
      "any_room": "Any",
      "minutes_of": "Session length {{name}}",
      "half_group_of": "Half group {{name}}",
      "ab_weeks_of": "A/B weeks {{name}}",
      "room_of": "Room {{name}}",
      "empty_title": "No subject yet",
      "empty_body": "Subjects appear here once they are created."
    },
    "diff": {
      "level": "Level {{name}}",
      "type": "Class type {{name}}",
      "subject": "Subject {{name}}",
      "volume": "Volume {{name}}",
      "unit": "Unit {{name}}",
      "elements_one": "{{count}} element",
      "elements_other": "{{count}} elements",
      "field": {
        "name": "Name",
        "ar_name": "Arabic name",
        "order": "Order",
        "cycle": "Cycle",
        "domain": "Domain",
        "mention": "Mention",
        "sections": "Sections",
        "is_open": "Status",
        "max_students": "Maximum size",
        "subgroups": "Sub-groups",
        "scheduling": "Scheduling",
        "default_minutes": "Default session length",
        "allowed_minutes": "Allowed lengths",
        "session_minutes": "Session length",
        "half_group": "Half group",
        "ab_weeks": "A/B weeks",
        "heavy": "Heavy subject",
        "room_kind": "Room",
        "coefficient": "Coefficient",
        "hours": "Hours per week",
        "code": "Code",
        "kind": "Type",
        "credits": "Credits",
        "elements": "Elements"
      }
    },
    "subjects": {
      "title": "Subjects per level",
      "hint": "Coefficient, hours per week and session length. Values are prefilled; check them against the official curriculum.",
      "level": "Level",
      "pick": "Existing subject…",
      "add": "Subject",
      "read_only": "You can read the subjects but not change them.",
      "no_level_title": "No level",
      "no_level_body": "Create the levels first in the Levels & cycles tab.",
      "empty_title": "No subject in this level",
      "empty_body": "Add an existing subject or create one, with its coefficient and hours.",
      "subject": "Subject",
      "arabic": "العربية",
      "coefficient": "Coef.",
      "hours": "Hours / wk",
      "session": "Session",
      "split": "Hours split",
      "coefficient_of": "Coefficient {{name}}",
      "hours_of": "Hours {{name}}",
      "coefficient_error": "The coefficient cannot be negative.",
      "hours_error": "Hours go by half hours (0.5) and cannot be negative.",
      "edit": "Edit {{name}}",
      "remove": "Remove {{name}}",
      "total": "Total",
      "total_of": "{{total}} h out of {{max}} h possible per week",
      "over": "{{total}} h exceed the {{max}} h possible per week: the timetable cannot place everything.",
      "edit_title": "Edit subject",
      "new_title": "New subject",
      "save": "Apply",
      "create": "Create",
      "name": "Name",
      "ar_name": "Arabic name",
      "color": "Colour",
      "minutes": "Session length",
      "heavy": "Heavy subject (preferably in the morning)"
    },
    "units": {
      "no_level_title": "No programme",
      "no_level_body": "Create the programmes and years first in the Programmes & years tab.",
      "new_unit": "New unit",
      "heading": "{{level}} · Semester {{semester}}",
      "summary": "{{units}} UE · {{elements}} ECUE · {{hours}} h",
      "credits_only": "{{total}} credits",
      "credits_of": "{{total}} / {{max}} credits",
      "level": "Programme",
      "semester": "Semester",
      "add": "UE",
      "read_only": "You can read the modules but not change them.",
      "empty_title": "No unit in this semester",
      "empty_body": "Add a unit with its code, type and credits, then its elements.",
      "code_of": "Code of {{name}}",
      "name_of": "Title of {{code}}",
      "kind_of": "Type of {{name}}",
      "credits_input": "Credits {{name}}",
      "credits_error": "Credits are a whole number.",
      "coefficient_input": "Coefficient {{name}}",
      "meta": "{{credits}} credits · coef. {{coefficient}} · {{hours}} h",
      "add_element": "ECUE",
      "remove": "Delete {{name}}",
      "duplicate": "A subject can appear only once in a unit.",
      "element": "ECUE",
      "cours": "Lecture",
      "td": "TD",
      "tp": "TP",
      "coefficient": "Coef.",
      "regime": "Assessment regime",
      "element_of": "Element {{n}} of {{code}}",
      "hours_cours_of": "Lecture {{name}}",
      "hours_td_of": "TD {{name}}",
      "hours_tp_of": "TP {{name}}",
      "coefficient_of": "Coefficient {{name}}",
      "regime_of": "Regime {{name}}",
      "weight_exam_of": "Exam share {{name}}",
      "weight_cc_of": "Continuous assessment share {{name}}",
      "weights_error": "The shares must match the regime and add up to 100%.",
      "exam": "exam share",
      "cc": "continuous assessment share",
      "legend": "Default weights: Evaluation & passage tab.",
      "remove_element": "Remove {{name}}"
    },
    "minutes": { "60": "1 h", "90": "1 h 30", "120": "2 h", "180": "3 h", "other": "{{count}} min" },
    "roomKind": { "classroom": "Classroom", "support": "Support", "lab": "Laboratory", "gym": "Sports", "amphi": "Lecture hall" },
    "scheduling": { "per_week": "Per week", "per_group": "Per group", "ab_weeks": "A/B weeks" },
    "unitKind": { "fondamentale": "Fundamental", "transversale": "Transversal", "optionnelle": "Optional" },
    "regime": { "mixte": "Mixed", "continu": "Continuous assessment", "examen": "Exam only" },
    "contract": { "permanent": "Permanent", "vacataire": "Part-time" },
    "page": {
      "summary": "Year {{year}} · {{classes}} · {{subjects}} · {{teachers}}",
      "n_classes_one": "{{count}} class",
      "n_classes_other": "{{count}} classes",
      "n_subjects_one": "{{count}} subject",
      "n_subjects_other": "{{count}} subjects",
      "n_teachers_one": "{{count}} teacher",
      "n_teachers_other": "{{count}} teachers",
      "unsaved": "Unsaved changes: {{count}}",
      "year": "School year",
      "read_only": "You can read the assignments but not change them.",
      "check_failed": "Check unavailable",
      "check_retry": "The conflict check did not answer. Try again.",
      "retry": "Try again",
      "copy": "Copy last year",
      "copy_title": "Copy last year's assignments?",
      "copy_body": "The assignments of {{from}} are copied to {{to}}, class by class. Those already set in {{to}} are kept.",
      "copy_confirm": "Copy",
      "copied_one": "Copied from {{year}}: {{count}} assignment",
      "copied_other": "Copied from {{year}}: {{count}} assignments",
      "copy_skipped": "Not copied: {{count}}",
      "save": "Save",
      "saved": "Organisation saved",
      "tab_generation": "Generation",
      "tab_assignments": "Assignments",
      "tab_subjects": "Subjects",
      "tab_classes": "Levels & classes",
      "tab_years": "Years & semesters",
      "tab_rooms": "Rooms",
      "to_fix": "To fix: {{count}}",
      "none": "none",
      "empty_title": "Nothing to organise yet",
      "empty_body": "Create the levels, classes and subjects in Structure, then assign the teachers here.",
      "open_structure": "Open Structure",
      "no_classes_title": "No class in this level this year",
      "no_classes_body": "Create the classes of this level in Structure.",
      "no_subjects_title": "No subject for this level",
      "no_subjects_body": "Set the weekly hours of the level's subjects in Structure.",
      "leave": { "title": "Leave without saving?", "body": "Unsaved changes: {{count}}. Leaving this page discards them.", "confirm": "Leave" }
    },
    "pivot": {
      "add": "Add a subject",
      "arabic": "Arabic",
      "coefficient": "Coef. {{level}}",
      "hours": "Hours {{level}}",
      "session": "Session length",
      "teachers": "Teachers",
      "not_allowed": "not allowed",
      "hint": "A length marked \"not allowed\" creates a conflict: no class type allows this length (set in Structure)."
    },
    "classes": {
      "students": "Students",
      "capacity": "Capacity",
      "room": "Home room",
      "room_of": "Home room of {{name}}",
      "head": "Head teacher",
      "head_of": "Head teacher of {{name}}",
      "type": "Type",
      "type_of": "Type of {{name}}",
      "timetable": "Timetable",
      "none": "None",
      "places_one": "{{count}} seat",
      "places_other": "{{count}} seats",
      "complete": "complete",
      "missing": "no teacher",
      "conflicts_one": "{{count}} conflict",
      "conflicts_other": "{{count}} conflicts",
      "empty_title": "No classes this year",
      "empty_body": "Add the first class of the year."
    },
    "years": {
      "passage": "Move to next year",
      "soon": "soon",
      "new": "New year",
      "current": "Current",
      "closed": "Closed",
      "upcoming": "Upcoming",
      "range": "{{start}} → {{end}}",
      "period_trimester": "Term",
      "period_semester": "Semester",
      "period_rattrapage": "Resit session"
    },
    "rooms": {
      "add": "Add a room",
      "edit_title": "Edit the room",
      "new_title": "New room",
      "name": "Room",
      "kind": "Type",
      "capacity": "Seats",
      "occupation": "Occupancy",
      "now": "Now",
      "busy": "In use",
      "free": "Free",
      "empty_title": "No rooms yet",
      "empty_body": "Add the rooms lessons can take place in."
    },
    "assign": {
      "title": "Who teaches what",
      "missing_one": "{{count}} lesson without a teacher",
      "missing_other": "{{count}} lessons without a teacher",
      "all_assigned": "Everything is assigned",
      "level": "Level",
      "students_one": "{{count}} student",
      "students_other": "{{count}} students",
      "unassigned": "To assign",
      "cell_label": "{{name}}: {{teacher}}, {{hours}} h",
      "cell_unassigned": "{{name}}: to assign",
      "groups_one": "+{{count}} group",
      "groups_other": "+{{count}} groups",
      "whole": "Whole class",
      "rows": "Rows of this cell",
      "add_group": "Add a group",
      "hours_week": "{{hours}} h / wk",
      "part_time": "part-time",
      "hint": "Hours per week. The recommended volume comes from the subject (Structure). A red cell blocks timetable generation; a red outline marks a conflict (hover it for the cause)."
    },
    "pop": {
      "hint": "Choose the teacher · conflicts are checked right away",
      "hours": "Hours per week",
      "recommended": "recommended {{hours}} h",
      "teachers": "Teachers",
      "part_time": "part-time",
      "other_subject": "other subject",
      "outside_modules": "outside modules",
      "remove": "Remove the teacher"
    },
    "load": {
      "title": "Teacher load",
      "hint": "hours / contract per week · part-timers: ceiling",
      "open": "Open {{name}}",
      "empty": "No teaching staff yet."
    },
    "teacher": {
      "save": "Save",
      "saved": "{{name}} saved",
      "read_only": "You can read this teacher's contract and availability but not change them.",
      "contract": "Contract",
      "hours": "Hours per week (contract)",
      "ceiling": "Weekly ceiling (hours)",
      "hours_step": "Hours go by half hours (0.5).",
      "modules": "Allowed modules",
      "modules_hint": "A part-timer can only teach the subjects and levels listed here.",
      "no_modules": "No module yet.",
      "remove_module": "Remove {{name}}",
      "module_subject": "Subject",
      "module_level": "Level",
      "add_module": "Add",
      "availability": "Availability",
      "availability_hint": "Paint the slots the teacher cannot teach (unavailable) or prefers. Closed slots cannot be painted."
    },
    "avail": {
      "brush": "Brush",
      "unavailable": "Unavailable",
      "preferred": "Preferred",
      "clear": "Clear",
      "closed": "Closed"
    },
    "ignoreReason": {
      "direction": "Management decision",
      "temporary": "Temporary situation (replacement, outing, leave)",
      "overtime_accepted": "Extra hours accepted by the teacher",
      "next_generation": "Will be fixed at the next generation",
      "other": "Other"
    },
    "conflicts": {
      "count_one": "{{count}} conflict",
      "count_other": "{{count}} conflicts",
      "none": "no conflicts",
      "empty": "No conflicts · generation can run",
      "new": "New conflict: {{detail}}",
      "new_many_one": "{{count}} new conflict",
      "new_many_other": "{{count}} new conflicts",
      "ignore": "Ignore with a reason",
      "ignore_title": "Ignore this conflict",
      "ignore_confirm": "Ignore with this reason",
      "reason": "Reason",
      "note": "Details (visible in the history)",
      "ignored_by": "Ignored: {{reason}} · {{actor}}",
      "restore": "Restore",
      "ignored_count_one": "{{count}} ignored with a reason",
      "ignored_count_other": "{{count}} ignored with a reason",
      "title_drawer": "Conflicts",
      "timetable": "Timetable",
      "recheck": "Check everything again",
      "title": {
        "uncovered_hours": "Uncovered hours",
        "volume_under": "Uncovered hours",
        "volume_over": "Class above its weekly hours",
        "vacataire_outside_modules": "Part-timer outside allowed modules",
        "teacher_unavailable": "Unavailable slot",
        "teacher_over_load": "Teacher above their contract",
        "teacher_over_load_vacataire": "Part-timer above their ceiling",
        "teacher_double": "Teacher double-booked",
        "room_double": "Room double-booked",
        "class_double": "Class double-booked",
        "room_too_small": "Room too small",
        "session_length": "Session length not allowed",
        "timetable_outdated": "Timetable needs an update"
      },
      "cause": {
        "uncovered_hours": "{{hours}} h a week without a teacher: blocks timetable generation",
        "volume_under": "{{hours}} h a week for {{programme}} h in the programme (-{{missing}} h)",
        "volume_under_placed": "{{hours}} h a week for {{programme}} h in the programme ({{missing}} h a week not yet placed in the grid)",
        "volume_over": "{{hours}} h a week for {{programme}} h in the programme (+{{extra}} h)",
        "vacataire_outside_modules": "Their part-time contract only allows {{modules}}",
        "teacher_unavailable": "Lesson placed on a slot {{teacher}} marked unavailable",
        "teacher_over_load": "{{hours}} h a week for a {{max}} h contract (+{{extra}} extra hours)",
        "teacher_double": "Lessons in {{class}} and {{other_class}} at the same time: {{day}} {{time}}",
        "room_double": "Used by {{class}} ({{subject}}) and {{other_class}} ({{other_subject}})",
        "class_double": "{{subject}} and {{other_subject}} at the same time",
        "room_too_small": "{{students}} students for {{capacity}} seats",
        "session_length": "Classes of type “{{class_type}}” have sessions of {{allowed}}",
        "timetable_outdated": "It no longer reflects {{changes}} changes"
      },
      "fix": {
        "assign": "Assign {{teacher}} ({{load}}/{{max}} h)",
        "assign_short": "Assign {{teacher}}",
        "choose": "Choose…",
        "change_teacher": "Change teacher",
        "transfer": "Move {{subject}} {{class}} to {{teacher}}",
        "set_hours": "Back to {{programme}} h",
        "adjust_hours": "Fix the hours",
        "place": "Place",
        "delete_lesson": "Remove the last lesson added",
        "allow_module": "Allow this module",
        "move_lesson": "Move",
        "set_room_class": "Put {{class}} in {{room}} (free, {{capacity}} seats)",
        "set_room": "Put in {{room}} ({{capacity}} seats)",
        "change_room": "Change room",
        "set_duration": "Change to {{minutes}}",
        "adjust_duration": "Change the length",
        "open_timetable": "Open the timetable",
        "open_structure": "See the structure",
        "open_week": "See their week",
        "open_view": "View"
      },
      "save": {
        "title": "Save with conflicts?",
        "summary_one": "{{count}} conflict remains in this timetable.",
        "summary_other": "{{count}} conflicts remain in this timetable.",
        "note": "“To assign” cells block timetable generation. The other conflicts stay visible here and in the timetable until fixed.",
        "back": "Go back and fix",
        "confirm_one": "Save with {{count}} conflict",
        "confirm_other": "Save with {{count}} conflicts"
      },
      "publish": {
        "title": "Publish with conflicts?",
        "summary_one": "{{count}} conflict remains in this timetable.",
        "summary_other": "{{count}} conflicts remain in this timetable.",
        "note": "Students, parents and teachers will see the lessons as they are. Conflicts ignored with a reason are not listed.",
        "back": "Fix first",
        "confirm": "Publish anyway"
      }
    }
  },
  "communication": {
    "messages_unread_one": "Messages, {{count}} unread",
    "messages_unread_other": "Messages, {{count}} unread",
    "today": "Today",
    "yesterday": "Yesterday",
    "yesterday_short": "yesterday",
    "you": "You: ",
    "unread_count_one": "{{count}} unread message",
    "unread_count_other": "{{count}} unread messages",
    "summary_unread_one": "{{count}} unread message",
    "summary_unread_other": "{{count}} unread messages",
    "summary_all_read": "Everything is read",
    "recipients_one": "{{count}} recipient",
    "recipients_other": "{{count}} recipients",
    "read_pct": "{{pct}} % read",
    "search": "Search a person or a message…",
    "search_label": "Search messages",
    "filters": "Filter messages",
    "filter": {
      "all": "All",
      "unread": "Unread",
      "parents": "Parents",
      "teachers": "Teachers",
      "announcements": "Announcements"
    },
    "none": "No conversation.",
    "write": "Write a message",
    "pick": "Select a conversation",
    "back": "Back to the list",
    "group_read_only": "You can read this group conversation but not reply to it.",
    "sent": "Sent",
    "read": "Read",
    "read_by": "Read by {{read}} of {{total}}",
    "report": "report",
    "earlier": "Earlier messages",
    "thread_label": "Conversation with {{name}}",
    "your_message": "Your message",
    "send": "Send (Enter)",
    "attach": "Attach a file",
    "download": "Download {{name}}",
    "kb": "KB",
    "mb": "MB",
    "announcement_meta": "Announcement · sent {{date}} · {{audience}}",
    "ack": "I have read this",
    "acked": "Read and confirmed",
    "new_badge": "New",
    "new_count_one": "{{count}} new",
    "new_count_other": "{{count}} new",
    "ann": {
      "button": "Announcement",
      "title": "New announcement",
      "field_title": "Title",
      "text": "Text",
      "audience": "Audience",
      "all_parents": "All parents",
      "all_teachers": "All teachers",
      "all_students": "All students",
      "when": "Sending",
      "now": "Now",
      "later": "Schedule",
      "at": "Date and time",
      "ack_label": "Acknowledgement required",
      "ack_hint": "Recipients confirm “I have read this”; you see who has not.",
      "news_title": "School announcements",
      "reach_none": "Will reach nobody: choose an audience",
      "reach_one": "Will reach {{count}} recipient",
      "reach_other": "Will reach {{count}} recipients",
      "reach_ack": "acknowledgement requested",
      "draft": "Draft",
      "publish": "Publish",
      "schedule": "Schedule",
      "saved_draft": "Draft saved",
      "published": "Announcement published",
      "scheduled": "Announcement scheduled for {{date}}",
      "read": "Read",
      "acked_title": "“I have read this” confirmed",
      "acked_sub": "{{acked}} of {{total}}",
      "by_group": "Read by level or class",
      "teachers_group": "Teachers",
      "by_channel": "Delivery by channel",
      "col": { "channel": "Channel", "sent": "Sent", "delivered": "Delivered", "read": "Read", "failed": "Failed" },
      "remind_one": "Remind the {{count}} unread",
      "remind_other": "Remind the {{count}} unread",
      "unread_list": "Unread list",
      "duplicate": "Duplicate",
      "publish_now": "Publish now",
      "reminded": "Reminder sent",
      "duplicated": "Draft created",
      "status_draft": "Draft",
      "status_scheduled": "Scheduled · {{date}}"
    },
    "lang": { "fr": "Français", "ar": "العربية" },
    "wa_status": { "none": "no template", "pending": "awaiting Meta", "approved": "approved", "rejected": "rejected" },
    "quick": {
      "family_1": "Received, thank you.",
      "family_2": "I will pass this on to the teachers.",
      "family_3": "Could you drop by the front desk?",
      "general_1": "Thanks!",
      "general_2": "Noted.",
      "general_3": "Can we talk about it in the staff room?"
    },
    "who": {
      "teacher": "Teacher · {{detail}}",
      "student": "Student · {{detail}}",
      "group_title": "Group",
      "parent_father": "Father of {{children}}",
      "parent_mother": "Mother of {{children}}",
      "parent_guardian": "Guardian of {{children}}",
      "child": "{{name}} ({{class}})",
      "role": { "staff": "Administration", "teacher": "Teacher", "parent": "Parent", "student": "Student" },
      "group_families_one": "Group · {{count}} family",
      "group_families_other": "Group · {{count}} families",
      "group_people_one": "Group · {{count}} person",
      "group_people_other": "Group · {{count}} people",
      "count_families_one": "{{count}} family",
      "count_families_other": "{{count}} families",
      "count_teachers_one": "{{count}} teacher",
      "count_teachers_other": "{{count}} teachers",
      "count_students_one": "{{count}} student",
      "count_students_other": "{{count}} students"
    },
    "aud": {
      "class_parents": "Parents of {{name}}",
      "class_teachers": "Teachers of {{name}}",
      "level_parents": "Parents of level {{name}}",
      "student_parents": "Parents of {{name}}",
      "unread_of": "Unread: {{audience}}"
    },
    "info": {
      "label": "Details",
      "members": "Members",
      "children": "Children",
      "recent": "Recent",
      "recent_soon": "Absences, fees and grades will appear here.",
      "person": "Contact",
      "audience": "Audience"
    },
    "channel": {
      "app": "Notification",
      "email": "E-mail",
      "sms": "SMS",
      "whatsapp": "WhatsApp",
      "app_sub": "In-app notification · {{n}}",
      "email_sub": "Valid e-mail addresses · {{n}}",
      "sms_sub": "SMS recipients · {{n}}",
      "sms_segments": "{{segments}} SMS each ({{chars}} characters)",
      "sms_low": "short: {{credits}} needed, {{balance}} left",
      "sms_balance": "balance {{balance}}",
      "topup": "top up",
      "whatsapp_sub": "WhatsApp recipients · approved template required · {{n}}",
      "whatsapp_pending": "this template is not approved by Meta yet",
      "whatsapp_template": "WhatsApp template",
      "whatsapp_choose": "Choose a template",
      "credits": "Credits: {{n}}",
      "conversations": "Conversations: {{n}}",
      "free": "free",
      "coverage": "Estimated coverage ({{n}})"
    },
    "new": {
      "title": "New message",
      "send": "Send",
      "recipients": "Recipients",
      "segment": {
        "person": "One person",
        "class_parents": "Class parents",
        "class_parents_mine": "My class parents",
        "class_teachers": "Class teachers",
        "level": "A level"
      },
      "remove": "Remove {{name}}",
      "search_recipient": "Search a recipient",
      "type_name": "Type a name…",
      "choose_class": "Choose a class…",
      "choose_level": "Choose a level…",
      "suggestions": "Suggestions",
      "subject": "Subject",
      "subject_hint": "e.g. Parent-teacher meeting",
      "template": "Template",
      "no_template": "None · free message",
      "language": "Language",
      "message": "Message",
      "message_hint": "Your message…",
      "preview": "Preview: each family receives its own values",
      "attach": "Attach a file",
      "remove_file": "Remove the file",
      "no_recipient": "No recipient",
      "channels": "Channels",
      "err_recipient": "Add at least one recipient",
      "err_body": "Write a message",
      "err_channel": "Choose at least one channel",
      "err_credit": "Not enough SMS credits: {{balance}} left. Top up in Settings → Integrations",
      "err_whatsapp": "Choose a WhatsApp template approved by Meta",
      "sent_one": "Message sent to {{count}} recipient · {{channels}}",
      "sent_other": "Message sent to {{count}} recipients · {{channels}}"
    },
    "errors": {
      "recipient_required": "Add at least one recipient",
      "body_required": "Write a message",
      "channel_required": "Choose at least one channel",
      "channel_disabled": "A chosen channel is not switched on for your school",
      "sms_credit_insufficient": "Not enough SMS credits: {{balance}} left, {{needed}} needed. Top up in Settings → Integrations",
      "wa_template_not_approved": "The WhatsApp template “{{wa_code}}” is not approved by Meta yet",
      "recipient_not_allowed": "You may not write to one of these recipients",
      "attachment_invalid": "This file cannot be attached (PDF, image, Word or Excel, 5 MB at most)",
      "title_required": "Give the announcement a title",
      "audience_required": "Choose who receives it",
      "scheduled_in_past": "Pick a time in the future",
      "body_fr_required": "Write the text in French",
      "no_failed_deliveries": "Nothing failed in this send",
      "topup_already_fulfilled": "This top-up was already credited",
      "pack_unavailable": "This SMS pack is not available",
      "rule_exists": "A rule already exists for this trigger",
      "not_published": "This announcement is not published yet",
      "no_unread_recipients": "Everyone has already read it",
      "already_published": "This announcement is already published",
      "not_a_draft": "Only a draft can be published",
      "audience_invalid": "The chosen audience is not valid",
      "ack_not_required": "This announcement does not ask for an acknowledgement",
      "remind_too_soon": "A reminder went out recently. Try again after {{retry_at}}",
      "variable_not_allowed": "{élève} and {classe} cannot be used in an announcement",
      "already_resent": "The failures of this send were already resent",
      "nothing_to_resend": "Nothing left to resend: those contacts were already reached or opted out",
      "group_read_only": "This group conversation is read-only for you",
      "topup_pending": "A top-up of this size is already waiting for payment",
      "preferences_invalid": "These preferences are not valid"
    },
    "lib": {
      "button": "Templates & automations",
      "title": "Templates & automations",
      "balance_sms": "SMS: {{balance}} credits",
      "balance_wa": "WhatsApp: {{families}} of {{total}} families reachable",
      "tabs": { "templates": "Templates", "rules": "Automatic rules", "reports": "Send reports" },
      "rules_active_one": "{{count}} active",
      "rules_active_other": "{{count}} active"
    },
    "tpl": {
      "hint": "Variables are replaced for each family · a WhatsApp template must be approved by Meta before use.",
      "new": "New template",
      "empty": "No template yet.",
      "edit": "Edit",
      "use": "Use",
      "lang_of": "Language of {{name}}",
      "used_one": "{{category}} · used {{count}} time",
      "used_other": "{{category}} · used {{count}} times",
      "category": { "attendance": "Attendance", "payment": "Payments", "discipline": "Discipline", "school": "School" },
      "sample": { "parent": "Mrs Ben Salah", "student": "Yasmine", "class": "7 A", "amount": "460 TND", "due": "3", "date": "21/10", "time": "08:00" },
      "editor": {
        "title_new": "New template",
        "title_edit": "Template",
        "name": "Name",
        "category": "Category",
        "language": "Language",
        "text": "Text",
        "insert": "Insert a variable",
        "insert_label": "Insert:",
        "preview": "Preview for Salma Ben Salah, mother of Yasmine (7 A)",
        "preview_empty": "The text will appear here.",
        "counter_one": "{{chars}} characters · {{count}} SMS per send",
        "counter_other": "{{chars}} characters · {{count}} SMS per send",
        "counter_arabic": "(Arabic: 70 characters per SMS)",
        "counter_special": "(special characters: 70 characters per SMS)",
        "channels": "Channels",
        "wa_submit": "Submit to Meta for WhatsApp",
        "wa_changed": "Changing the text of an approved template sends it back to Meta: it stays “awaiting Meta” until approved again.",
        "save": "Save template",
        "saved": "Template saved",
        "submitted": "Template saved and submitted to Meta",
        "err_name": "Give the template a name",
        "err_body_fr": "Write the text in French"
      }
    },
    "rule": {
      "intro": "Messages sent automatically. SMS only go out between {{from}} and {{to}} (Settings → Notifications).",
      "intro_all": "Messages sent automatically. SMS go out at any hour (Settings → Notifications).",
      "empty": "No rule yet.",
      "channel": "Channel",
      "when": "When",
      "template": "Template",
      "no_template": "No template",
      "sms_email": "SMS + e-mail",
      "when_now": "immediately",
      "when_10": "at 10:00 the same day",
      "when_09": "at 09:00",
      "when_18": "at 18:00",
      "last_never": "last send: never",
      "last": "last send {{date}}",
      "recipient": "Student's parents",
      "switched_on": "Rule “{{name}}” switched on",
      "switched_off": "Rule “{{name}}” switched off",
      "updated": "Rule “{{name}}” updated",
      "add": "Add a rule",
      "trigger": "Trigger",
      "added": "Rule added, switched off: choose its channel and template, then switch it on",
      "event": { "absence": "Unexcused absence", "late": "Late student", "instalment_overdue": "Overdue instalment", "instalment_due": "Upcoming instalment", "sanction": "Disciplinary notice" }
    },
    "rep": {
      "title": "Send report",
      "sub": "{{date}} · {{audience}}",
      "empty": "No send yet.",
      "detail": "Details",
      "na": "n/a",
      "na_tip": "An SMS returns no read receipt",
      "cols": { "send": "Send", "channels": "Channels", "recipients": "Recipients", "delivered": "Delivered", "read": "Read", "failed": "Failed" },
      "stat_read": "Read",
      "reason": { "invalid_phone": "Invalid phone number", "missing_phone": "No phone number on file", "missing_email": "No e-mail address on file", "opted_out": "Opted out of this channel", "provider_error": "The provider refused the message", "timeout": "The provider did not answer in time" },
      "resent_badge": "Resent",
      "fix_contact": "Fix the contact",
      "stat_delivered": "Delivered",
      "stat_failed": "Failed",
      "legend_read": "Read",
      "legend_delivered": "Delivered, not read yet",
      "legend_failed": "Failed",
      "bar": "{{channel}}: read {{read}}, delivered {{delivered}}, failed {{failed}}",
      "failures": "Failures",
      "none": "No failure: everything was delivered.",
      "resend": "Resend by another channel",
      "resent": "Failures resent by {{channels}}",
      "export": "Export",
      "file_suffix": "failures",
      "csv": { "channel": "Channel", "recipient": "Recipient", "student": "Student", "reason": "Reason" }
    },
    "settings": {
      "tabs": { "notifications": "Notifications", "integrations": "Integrations" },
      "credits_one": "{{n}} credit",
      "credits_other": "{{n}} credits",
      "window": { "07-20": "07:00 → 20:00", "08-19": "08:00 → 19:00", "all": "All day" },
      "fam": {
        "title": "Notifications to families",
        "sub": "The school's default settings. Each parent can switch some off in their app, except those marked required.",
        "table": "Default notifications to families",
        "event": "Event",
        "mandatory": "Required",
        "yes": "yes",
        "no": "no",
        "switch": "{{event}} · {{channel}}",
        "sms_title": "SMS sending",
        "sender": "SMS sender name",
        "sender_hint": "{{max}} characters at most",
        "sender_invalid": "Letters without accents, digits and spaces only",
        "window": "SMS sending hours",
        "save": "Save",
        "saved": "Settings saved"
      },
      "integ": { "title": "Integrations", "sub": "Services connected to ALLcarta School." },
      "club": {
        "title": "ALLcarta Club · single sign-on",
        "sub": "One account for the school and the club",
        "on": "Configured",
        "off": "Not configured",
        "linked": "Linked accounts"
      },
      "sms": {
        "title": "SMS gateway",
        "sub": "Absences, reminders, announcements, sign-in codes",
        "active": "Active",
        "inactive": "Not included in the plan",
        "provider": "Provider",
        "sender": "Sender name",
        "sender_set": "set",
        "sender_unset": "not set",
        "balance": "Balance",
        "low": "low",
        "empty": "empty",
        "requested": "top-up requested · {{n}}",
        "hint": "1 credit = 1 SMS of 160 characters (70 in Arabic)",
        "used": "this month: {{used}} sent",
        "delivered": "{{pct}} % delivered",
        "alert": "alert below {{low}}",
        "topup": "Top up",
        "test": "Send a test",
        "reports": "Send reports"
      },
      "email": {
        "title": "E-mail",
        "sub": "Sent from the school's address",
        "from": "Sender",
        "dns": "SPF · DKIM · DMARC",
        "test": "Send a test",
        "sent": "Test e-mail sent to {{to}}"
      },
      "wa": {
        "title": "WhatsApp Business",
        "active": "Active",
        "inactive": "Not connected",
        "sub": "Messages to parents from templates approved by Meta",
        "number": "Number",
        "quality": "Number quality",
        "conversations": "Conversations",
        "reach": "Reachable parents",
        "reach_value": "{{families}} families of {{total}} ({{pct}} %)",
        "templates": "Templates",
        "summary": "{{approved}} approved · {{pending}} pending · {{rejected}} refused",
        "submit": "Submit a template"
      },
      "topup": {
        "title": "Top up SMS credits",
        "balance": "Current balance: {{balance}}.",
        "pack": "Pack",
        "credits_unit": "credits",
        "price": "{{price}} excl. tax",
        "unit": "Unit price",
        "payment": "Payment",
        "payment_value": "bank transfer to ALLcarta · invoice sent by e-mail",
        "availability": "Availability",
        "availability_value": "once the payment is received (24 to 48 h)",
        "request": "Request top-up",
        "sent": "Request sent to ALLcarta · {{credits}}, invoice by e-mail"
      },
      "test": {
        "title": "Test SMS",
        "phone": "Phone number",
        "phone_hint": "8 digits, e.g. 98 554 120",
        "phone_error": "Incomplete number: 8 digits expected",
        "message": "Message",
        "default_body": "ALLcarta test: the school's SMS gateway works.",
        "send": "Send",
        "sent": "Test SMS sent",
        "failed": "The test SMS could not be delivered"
      }
    },
    "notif": {
      "all": "All notifications",
      "open": "Open",
      "summary": "Last 7 days: {{unread}} · {{today}} today",
      "all_read": "Everything is read",
      "unread_count_one": "{{count}} unread",
      "unread_count_other": "{{count}} unread",
      "mark_all": "Mark all as read",
      "mark_all_short": "Read all",
      "settings_button": "Settings",
      "tabs": { "feed": "All", "settings": "Settings by channel" },
      "filter_label": "Filter by type",
      "filter_all": "All",
      "filter_unread": "Unread",
      "kind": { "payment": "Payments", "attendance": "Attendance", "grades": "Grades & exams", "discipline": "Discipline", "message": "Messages", "announcement": "Announcements", "service": "Services", "system": "System", "other": "Other" },
      "period_label": "Period",
      "period_week": "The last 7 days",
      "period_today": "Today",
      "empty_filter": "Nothing in this filter.",
      "show_all": "See all notifications",
      "feed_label": "Notifications by day",
      "mark_read": "Mark as read",
      "mark_unread": "Mark as unread",
      "week_title": "This week",
      "dnd": {
        "title": "Do not disturb",
        "hint": "No SMS or notification from {{start}} to {{end}}. Emergencies (security) still get through.",
        "start": "Start",
        "end": "End"
      },
      "prefs": {
        "title": "What you receive, and where",
        "sub": "For your account ({{name}} · {{role}}). Families set their own preferences in the app.",
        "default": "Default",
        "save": "Save",
        "sub_family": "For your account ({{name}}). Choose how the school reaches you for each event.",
        "saved": "Preferences saved",
        "reset_done": "Default preferences restored",
        "event": "Event",
        "channel": { "app": "In the app", "email": "E-mail", "sms": "SMS" },
        "switch": "{{event}} · {{channel}}",
        "channel_name": { "app": "app", "email": "e-mail", "sms": "SMS" },
        "locked": "Always on, for your security",
        "daily": "Daily e-mail summary",
        "daily_hint": "Everything that happened, at 18:00",
        "weekly": "Weekly report",
        "weekly_hint": "Key statistics, on Monday at 07:30",
        "group": { "school": "School life", "discipline": "Discipline", "finance": "Finance", "communication": "Communication", "system": "System", "other": "Other", "family": "School follow-up", "services": "Services", "stages": "Internships" }
      },
      "event": {
        "absences_to_justify": "Absences to justify",
        "attendance_alert": "Attendance alert",
        "exams_without_marks": "Exams without marks",
        "class_average_drop": "A class average is dropping",
        "sanction_proposed": "Sanction proposed by a teacher",
        "exit_request": "Exit request from a parent",
        "payment_received": "Payment received",
        "instalment_overdue": "Overdue instalment",
        "cash_not_closed": "Cash desk not closed",
        "new_message": "New message",
        "announcement_low_read": "Announcement little read",
        "new_device": "Sign-in from a new device",
        "timetable_generated": "Timetable generated",
        "application_received": "New admission request",
        "document_requested": "Document request",
        "formation_assigned": "Training assigned",
        "document_ready": "Document ready",
        "meal_absent": "Canteen absence",
        "bus_absent": "Bus absence",
        "service_update": "Service change",
        "stage_update": "Internship update",
        "absence": "Absence",
        "late": "Late arrival",
        "grade": "New grade",
        "report_card": "Report card available",
        "instalment_due": "Upcoming instalment",
        "sanction": "Sanction",
        "homework": "Homework",
        "announcement": "School announcement"
      },
      "event_hint": {
        "absences_to_justify": "every morning at 09:00",
        "attendance_alert": "a student reaches the absence threshold",
        "exams_without_marks": "after 7 days",
        "class_average_drop": "more than one point",
        "sanction_proposed": "to approve",
        "payment_received": "grouped by hour",
        "instalment_overdue": "more than 30 days",
        "cash_not_closed": "at 18:00",
        "announcement_low_read": "under 60 % after 48 h",
        "new_device": "security, always sent"
      }
    }
  },
  "admissions": {
    "title": "Admissions",
    "subtitle": "Campaign {{label}} · {{count}} applications · {{new}} new to process",
    "campaign": "Campaign",
    "campaign_closed": "{{label}} (closed)",
    "form_button": "Form",
    "link_button": "Public link & QR",
    "new_button": "New application",
    "archive": "Online admissions are switched off for this school: the files stay readable, nothing can be changed.",
    "search": "Search applications",
    "search_placeholder": "Name, parent, tracking number…",
    "all_levels": "All levels",
    "siblings": "Siblings",
    "tabs": { "pipeline": "Pipeline", "list": "List", "tests": "Tests & interviews", "capacity": "Capacity & sources" },
    "state": { "new": "New application", "incomplete": "Incomplete file", "test": "Test / interview scheduled", "accepted": "Accepted", "waitlist": "Waiting list", "refused": "Refused", "enrolled": "Enrolled" },
    "source": { "web": "Public link / site", "sibling": "Sibling", "social": "Facebook / Instagram", "open_day": "Open day", "desk": "At the desk", "phone": "Phone", "word_of_mouth": "Word of mouth", "poster": "Poster" },
    "relation": { "mother": "Mother", "father": "Father", "guardian": "Guardian" },
    "channel": { "sms": "SMS", "email": "E-mail", "app": "App", "whatsapp": "WhatsApp" },
    "subject": { "math": "Maths", "french": "French", "arabic": "Arabic", "english": "English", "physics": "Physics" },
    "kpi": {
      "received": "Applications received",
      "weekly": "Applications per week",
      "received_vs": "{{gap}} vs last year at the same date ({{last}})",
      "incomplete": "Incomplete files",
      "most_missing": "Most missing: {{kind}} ({{count}})",
      "nothing_missing": "No document missing",
      "remind": "Remind the {{count}}",
      "tests": "Tests & interviews",
      "this_week": "this week",
      "next": "Next: {{when}} · {{name}}",
      "no_next": "Nothing scheduled",
      "see_schedule": "See the schedule",
      "places": "{{level}} places left",
      "places_none": "Places left",
      "of": "of {{places}}",
      "places_hint": "{{requests}} requests · tension {{tension}} %",
      "places_hint_unlimited": "{{requests}} requests · no limit",
      "places_hint_full": "{{requests}} requests · full",
      "unlimited": "unlimited"
    },
    "pipeline": {
      "hint": "Drag a card to change its state",
      "empty": "No card in this filter",
      "more": "+ {{count}} more · see the list",
      "select": "Select {{name}}",
      "actions": "Actions for {{name}}",
      "open": "Open the file",
      "move_to": "Move to {{state}}",
      "to_check": "To check",
      "sibling": "Sibling",
      "staff": "Staff",
      "mid_year": "Mid-year"
    },
    "bulk": { "convoke": "Convoke", "remind": "Remind", "change_state": "Change state", "export": "Export" },
    "list": {
      "all_states": "All states",
      "chip": { "new": "New", "incomplete": "Incomplete", "test": "Test scheduled", "accepted": "Accepted", "waitlist": "Waiting", "refused": "Refused", "enrolled": "Enrolled" },
      "sort": "Sort",
      "sort_recent": "Sort: most recent",
      "sort_name": "Sort: name",
      "sort_score": "Sort: test score",
      "sort_level": "Sort: level",
      "excel": "Excel",
      "col": { "candidate": "Candidate", "level": "Level", "state": "State", "file": "File", "test": "Test", "source": "Source", "received": "Received", "open": "Open" },
      "open": "Open the file of {{name}}",
      "empty": "No application matches.",
      "clear": "Clear the filters"
    },
    "tests": {
      "upcoming": "Upcoming sessions",
      "new_session": "New session",
      "empty": "No session planned.",
      "session": "{{kind}} · {{level}}",
      "kind": { "written": "Written test", "interview": "Interviews", "both": "Test + interview" },
      "booked": "{{booked}} convoked / {{places}} places",
      "sheet": "Attendance sheet",
      "slots": "Interview slots",
      "slot_free": "{{time}} · free",
      "reminder_note": "Automatic reminder the evening before at 18:00 by SMS to the convoked families.",
      "results": "Results and ranking",
      "session_pick": "Session",
      "threshold": "Admission threshold",
      "mean_label": "Mean {{mean}}",
      "candidates": "Candidates",
      "mean": "Mean",
      "last_year": "last year: {{mean}}",
      "admissible": "Admissible",
      "admissible_pct": "{{pct}} % of the candidates",
      "ranking": "Ranking and decisions",
      "col": { "rank": "Rank", "candidate": "Candidate", "average": "Average", "interview": "Interview", "decision": "Decision" },
      "interview": { "favorable": "Favorable", "reserved": "Reserved" },
      "decision": { "accept": "Accept", "waitlist": "Waitlist", "refuse": "Refuse" },
      "decision_for": "Decision for {{name}}"
    },
    "capacity": {
      "title": "Capacity and demand by level · {{label}}",
      "hint": "Places open to new students",
      "places": "Places",
      "requests": "Requests",
      "accepted": "Accepted",
      "enrolled": "of which enrolled",
      "tension": "tension {{pct}} %",
      "unlimited": "unlimited",
      "full": "full"
    },
    "sources": { "title": "Where the applications come from", "total": "applications" },
    "cumulative": { "title": "Applications since the opening", "this_year": "This year", "last_year": "Last year" },
    "funnel": {
      "title": "Conversion",
      "average": "Average response time: {{days}} days",
      "received": "Applications",
      "complete": "Complete file",
      "tested": "Test taken",
      "accepted": "Accepted",
      "enrolled": "Enrolled",
      "loss": "Main loss: between “{{from}}” and “{{to}}”."
    },
    "drawer": {
      "title": "Candidate file",
      "state": "Application state",
      "sibling": "Sibling detected",
      "sibling_text": "{{children}} already enrolled · same guardian ({{parent}}). Existing family account, sibling discount proposed.",
      "staff_child": "Staff child",
      "staff_discount": "Discount to apply after enrolment",
      "child": "Child",
      "born": "Born on",
      "school": "Current school",
      "average": "Last year's average",
      "services": "Canteen · transport",
      "cantine": "Canteen",
      "transport": "Transport",
      "guardians": "Guardians",
      "documents": "Documents",
      "validated": "{{ok}}/{{required}} validated",
      "kb": "KB",
      "not_sent": "Not sent yet",
      "missing": "Missing",
      "doc_validated": "Validated",
      "doc_refused": "Refused · {{reason}}",
      "view": "View {{name}}",
      "validate": "Validate {{name}}",
      "refuse_for": "Refuse {{name}}",
      "request": "Request {{name}}",
      "request_short": "Request",
      "refuse_title": "Refuse a document",
      "reason": "Reason",
      "reason_hint": "The family receives this reason and is invited to send the document again.",
      "reason_needed": "Give the reason: the family receives it.",
      "refuse_doc": "Refuse",
      "test": "Entrance test and interview",
      "not_convoked": "Not yet convoked",
      "not_convoked_incomplete": "Not yet convoked · incomplete file",
      "convoke": "Convoke",
      "no_slot": "No slot yet",
      "convocation_sent": "Convocation sent",
      "convocation_not_sent": "Convocation not sent",
      "reschedule": "Reschedule",
      "mark": "{{subject}} /20",
      "save_marks": "Save marks",
      "marks_all": "Enter all {{count}} marks",
      "marks_range": "Marks are between 0 and {{max}}.",
      "average_label": "Average",
      "rank": "Rank {{rank}} · threshold {{threshold}}",
      "interview": "Interview",
      "fees": "Fee proposal",
      "fees_annual": "Tuition for the year",
      "no_discount": "No discount",
      "fees_note": "Registration fee {{fee}} at enrolment · payment by bank transfer (proof to upload) or at the cash desk, no online payment.",
      "fees_none": "This level has no fee plan yet.",
      "notes": "Internal notes",
      "note_label": "Add a note (visible to the team only)",
      "system": "System",
      "messages": "Messages sent",
      "remind": "Remind",
      "refuse": "Refuse",
      "accept": "Accept",
      "enrol": "Enrol",
      "student_file": "Student file"
    },
    "enrol": {
      "title": "Enrol {{name}}",
      "intro": "What will be created or updated in one click:",
      "row": { "student": "Student file", "account": "Student account", "family": "Family account", "fees": "Fee plan", "file": "Administrative file", "welcome": "Welcome message" },
      "new": "new",
      "existing": "existing",
      "class": "Class",
      "places_left_one": "{{count}} place left",
      "places_left_other": "{{count}} places left",
      "class_needed": "Choose the class.",
      "account_hint": "Login created · temporary password sent to the guardians.",
      "family_existing": "Added to the family of {{name}} · same parent space.",
      "family_new": "Invitation by SMS and e-mail to activate the parent space.",
      "fees": "Registration {{registration}} + tuition {{annual}} in {{count}} instalment(s)",
      "fees_none": "No fee plan for this level: the fees are skipped.",
      "file_hint": "Validated documents ({{count}}) stay on the archived application {{number}}.",
      "confirm": "Confirm the enrolment"
    },
    "new": {
      "title": "New application (desk)",
      "first_name": "Child's first name",
      "last_name": "Last name",
      "level": "Requested level",
      "level_needed": "No level is available.",
      "intake": "Intake",
      "intake_rentree": "Next school year",
      "intake_mid_year": "During the year",
      "intake_mid_year_hint": "Transfers and arrivals",
      "guardian": "Guardian",
      "guardian_placeholder": "First and last name",
      "phone": "Phone",
      "source": "Source",
      "send_link": "Send the link to complete the file online",
      "name_needed": "Enter the child's first and last name.",
      "submit": "Create the application"
    },
    "remind": {
      "title": "Remind {{count}} families",
      "title_one": "Remind {{name}}",
      "recipients": "Recipients",
      "others": "+ {{count}} other files",
      "channels": "Channels",
      "sms": "SMS",
      "email": "E-mail",
      "template": "Template",
      "templates": { "missing_documents": "Missing documents", "convocation": "Convocation reminder", "decision": "Decision available", "free": "Free message" },
      "body": "Message",
      "send": "Send",
      "channel_needed": "Choose at least one channel.",
      "body_needed": "Write the message to send."
    },
    "convoke": {
      "title": "Convoke {{count}} candidates",
      "title_one": "Convoke {{name}}",
      "title_pick": "Convoke a candidate",
      "candidate": "Candidate",
      "candidate_needed": "Choose the candidate.",
      "session": "Session",
      "session_needed": "Create a session first.",
      "free_places_one": "{{count}} place left",
      "free_places_other": "{{count}} places left",
      "slot": "Slot",
      "email": "E-mail with the convocation",
      "reminder": "Automatic reminder the evening before at 18:00",
      "send": "Send the convocation"
    },
    "print": {
      "poster_title": "Pre-registration {{label}}",
      "poster_lead": "Register your child online in 10 minutes.",
      "poster_scan": "Scan the code with your phone",
      "poster_none": "No campaign found for this poster.",
      "sheet_none": "No session found.",
      "sheet_title": "Attendance sheet",
      "sheet_subtitle": "{{kind}} · {{level}} · {{date}} · {{start}}–{{end}}",
      "sheet_rooms": "Rooms: {{rooms}}",
      "col_n": "No.",
      "col_name": "Candidate",
      "col_signature": "Signature"
    },
    "reschedule": { "title": "Reschedule {{name}}", "submit": "Reschedule", "slot_needed": "Choose a free slot.", "none": "No interview session with slots is planned.", "slots": "Free slots" },
    "session": {
      "title": "New session",
      "kind": "Type",
      "date": "Date",
      "start": "Start",
      "end": "End",
      "rooms": "Rooms",
      "rooms_hint": "Separated by commas",
      "places": "Places",
      "threshold": "Admission threshold / {{max}}",
      "interviewer": "Interviewer",
      "supervisors": "Supervisors",
      "slot_minutes": "Minutes per interview",
      "subjects": "Subjects and coefficient",
      "coefficient": "Coefficient",
      "date_needed": "Choose the date.",
      "places_needed": "Enter the number of places.",
      "threshold_needed": "The threshold is between 0 and {{max}}.",
      "subjects_needed": "Choose at least one subject with a coefficient above 0.",
      "submit": "Create"
    },
    "link": {
      "title": "Public pre-registration link",
      "share": "Link to share",
      "copy": "Copy the link",
      "copied": "Link copied",
      "copy_failed": "Could not copy the link",
      "qr_label": "QR code of the pre-registration form",
      "png": "QR (PNG)",
      "png_failed": "Could not create the image",
      "poster": "A4 poster",
      "whatsapp": "WhatsApp",
      "open": "Open the form",
      "stats": "Scanned {{scans}} times · {{count}} applications from this link",
      "opening": "Opening",
      "is_open": "Open",
      "is_closed": "Closed",
      "opens_on": "Opens on",
      "closes_on": "Closes on",
      "closes_hint": "The form closes by itself after this date.",
      "mid_year": "Applications during the year",
      "mid_year_hint": "Transfers and arrivals for {{label}}",
      "levels": "Levels offered",
      "level_open": "{{name}} open",
      "level_n": "Level {{id}}",
      "places": "Places · {{name}}",
      "places_invalid": "Places must be whole numbers.",
      "save": "Save"
    },
    "form": {
      "title": "Pre-registration form",
      "tabs": { "fields": "Fields", "documents": "Requested documents", "messages": "Messages" },
      "rule": { "required": "Required", "optional": "Optional", "hidden": "Hidden" },
      "always_required": "Always required",
      "field": {
        "child_name": "Child's first and last name (FR and AR)",
        "birth": "Date and place of birth",
        "level": "Requested level",
        "guardians": "Guardians: name, phone, e-mail",
        "guardian_cin": "Guardian's ID card number",
        "previous_school": "Current school and class",
        "previous_average": "Last year's average",
        "health": "Allergies and health",
        "services": "Canteen / transport need",
        "source": "How did you hear about us?"
      },
      "documents_hint": "Same choice as the fields: a required document blocks the form until it is added.",
      "confirmation": "Confirmation message (SMS and screen)",
      "welcome": "Welcome text of the form",
      "variables": "Variable: {{variables}}",
      "preview": "Preview",
      "publish": "Publish"
    },
    "errors": {
      "wrong_state": "This application cannot move to that state.",
      "slot_taken": "This slot is already taken.",
      "session_full": "This session is full.",
      "marks_incomplete": "Enter the marks of every subject.",
      "mark_out_of_range": "A mark is outside the allowed range.",
      "not_accepted": "Only an accepted application can be enrolled.",
      "no_class_for_year": "This year has no class to enrol into. Create the classes of the year first.",
      "class_full": "This class is full.",
      "no_plan": "This level has no fee plan: the student is enrolled without fees.",
      "phone_invalid": "This phone number is not valid.",
      "campaign_closed": "The campaign is closed."
    },
    "toast": {
      "moved": "{{name}}: {{state}}",
      "bulk_moved_one": "{{count}} application moved to {{state}}",
      "bulk_moved_other": "{{count}} applications moved to {{state}}",
      "exported": "Selection exported",
      "exported_list": "List of applications exported",
      "created": "Application {{number}} created for {{name}}",
      "reminded_one": "Reminder sent to {{count}} family",
      "reminded_other": "Reminder sent to {{count}} families",
      "remind_failed_one": "{{count}} message failed",
      "remind_failed_other": "{{count}} messages failed",
      "convoked_one": "{{count}} convocation sent",
      "convoked_other": "{{count}} convocations sent",
      "doc_validated": "{{name}} validated",
      "doc_refused": "Document refused · the family is invited to send it again",
      "requested": "Request sent to {{name}} by SMS",
      "rescheduled": "Interview rescheduled · the family is warned by SMS",
      "session_created": "Session created · convoke the candidates from the pipeline",
      "enrolled": "{{name}} enrolled · student file, access and fee plan created",
      "marks_saved": "Marks saved · average {{average}}",
      "link_saved": "Link settings saved",
      "form_published": "Form published · visible on the public link"
    }
  },
  "documents": {
    "title": "Official documents",
    "subtitle": "{{date}} · {{pending}} request(s) to process, {{urgent}} urgent · register up to no. {{last}} · {{total}} documents since the start of the year",
    "year": "Register year",
    "year_option": "Register {{year}}",
    "verify_page": "Verification page",
    "batch_button": "Bulk generation",
    "new_button": "New document",
    "archive": "Official documents are switched off for this school: the register and the requests can still be read, but nothing can be done.",
    "urgent": "urgent",
    "copies_pill": "×{{n}}",
    "tabs": { "requests": "Requests", "register": "Register", "templates": "Templates" },
    "kpi": {
      "pending": "Pending requests",
      "pending_hint": "{{urgent}} urgent · {{to_sign}} to sign · {{ready}} ready to hand over",
      "delay": "Average processing time",
      "days": "d",
      "delay_vs": "{{gap}} d vs last year",
      "delivered": "Delivered in {{month}}",
      "delivered_hint": "{{total}} since the start of the year · {{cards}} of them cards",
      "scans": "QR verifications",
      "scans_none": "No scan of a cancelled document",
      "scans_cancelled": "Scan of a cancelled document ({{number}}, on {{date}})",
      "see_register": "See the register"
    },
    "kind": {
      "cs": "Enrolment certificate",
      "ai": "Registration attestation",
      "ap": "Attendance attestation",
      "rn": "Transcript",
      "bu": "Report card (duplicate)",
      "ca": "Student card (QR)",
      "st": "Internship attestation",
      "ct": "Work certificate"
    },
    "language": { "fr": "FR", "ar": "AR", "bilingual": "Bilingual" },
    "channel": { "parent": "Parent space", "student": "Student space", "teacher": "Teacher space", "desk": "Front desk", "staff": "Staff" },
    "status": { "new": "New", "to_sign": "To sign", "ready": "Ready", "delivered": "Handed over", "refused": "Refused" },
    "group": { "all": "All types", "certificates": "Certificates", "attestations": "Attestations", "records": "Transcripts & report cards", "cards": "Cards", "staff": "Staff" },
    "action": { "approve": "Approve", "sign": "Sign", "deliver": "Hand over", "for": "{{action}}: {{name}}" },
    "requests": {
      "title": "Request queue",
      "segment": "Filter the requests",
      "todo": "To process",
      "ready": "Ready",
      "all": "All",
      "search": "Search a request",
      "search_placeholder": "Name, class, type…",
      "empty": "Nothing to process in this filter.",
      "see_all": "See all requests",
      "col": { "document": "Document · for", "by": "Requested by", "reason": "Reason", "state": "State", "action": "Action" }
    },
    "bulk": { "approve": "Approve and generate", "sign": "Sign", "print": "Print" },
    "to_sign": { "title": "To sign", "all": "Sign all", "empty": "Everything is signed.", "preview": "Preview: {{name}}" },
    "by_kind": { "title": "Delivered by type", "hint": "This year, with last year's mark at the same date", "empty": "No document delivered." },
    "delay": { "title": "Processing time", "hint": "days, weekly average", "empty": "Nothing measured yet." },
    "drawer": {
      "request": "Request",
      "by": "Requested by",
      "on": "On",
      "reason": "Reason",
      "tracking": "Tracking",
      "step": { "requested": "Requested", "generated": "Generated and numbered", "signed": "Signed", "delivered": "Handed over" },
      "number": "No. {{number}}",
      "awaiting_approval": "waiting for approval",
      "signed_detail": "electronic signature",
      "delivered_detail": "at the desk · PDF in the requester's space",
      "no_preview": "The preview of the document appears once it is approved.",
      "refuse": "Refuse",
      "pdf": "PDF"
    },
    "refuse": { "title": "Refuse the request", "reason": "Reason for the refusal", "hint": "The reason is sent to the requester.", "reason_needed": "Give the reason for the refusal", "submit": "Refuse the request" },
    "sign": {
      "title": "Sign",
      "title_many": "Sign {{n}} documents",
      "pin": "Signing code ({{digits}} digits)",
      "pin_needed": "Enter your {{digits}}-digit code",
      "registered": "signature and stamp on file",
      "not_registered": "signature or stamp missing",
      "submit": "Sign"
    },
    "new": {
      "title": "New document",
      "submit": "Generate",
      "kind": "Document",
      "for": "For",
      "change": "Change",
      "search_student": "Search a student…",
      "search_staff": "Search a staff member…",
      "results": "Results",
      "no_match": "Nobody matches.",
      "person_needed": "Choose the person concerned",
      "language": "Language",
      "copies": "Copies",
      "copies_range": "Between 1 and {{max}} copies",
      "reason": "Reason (optional, printed if ticked)",
      "reason_placeholder": "e.g. scholarship file",
      "print_reason": "Print the reason on the document",
      "sign_now": "Sign right away (I am a signatory)",
      "who": "Trainee from",
      "who_staff": "Staff",
      "who_external": "External trainee",
      "extra": { "du": "From", "au": "To", "period": "Period", "nom_complet": "Full name", "etablissement_origine": "Home institution", "service": "Department", "tuteur": "Tutor", "duplicate": "Duplicate" },
      "period_n": "Period {{n}}",
      "duplicate_fee": "Duplicate fee: {{fee}} · payable at the desk",
      "extra_invalid": "{{field}} is missing or invalid"
    },
    "batch": {
      "title": "Bulk generation",
      "close": "Close",
      "kind": "Document",
      "kind_ca": "Student card with QR",
      "kind_cs": "Enrolment certificate",
      "kind_ai": "Registration attestation",
      "kind_bu": "Report card",
      "period": "Report card period",
      "period_n": "Period {{n}}",
      "period_needed": "Choose the report card period",
      "for": "For",
      "scope_class": "A class",
      "scope_level": "A level",
      "scope_school": "The whole school",
      "target_class": "Class",
      "target_level": "Level",
      "target_needed": "Choose the class or the level",
      "option": "{{name}} [{{n}} students]",
      "format": "Format",
      "format_card": "PVC card (CR80)",
      "format_sheet": "A4 · 8 per page",
      "start_card": "Generate {{n}} cards",
      "start_doc": "Generate {{n}} documents",
      "range": "Numbers {{first}} → {{last}} · automatic signature and stamp",
      "no_photo": "{{n}} student(s) without a photo: {{names}}. Their card will come out with their initials.",
      "ask_photos": "Ask for the photos",
      "progress": "Generation progress",
      "running": "Generating… {{done}} / {{total}} ({{percent}}%)",
      "ready_card": "{{n}} cards ready · entered in the register",
      "ready_doc": "{{n}} documents ready · entered in the register",
      "failed": "The generation failed. Nothing was entered in the register.",
      "download": "Download the PDF"
    },
    "register": {
      "title": "Register of issued documents",
      "export": "Export (CSV)",
      "print": "Print the register",
      "rule": "Continuous yearly numbering. A number is never deleted or reused: a cancelled document stays in the register and its QR shows \"cancelled\".",
      "search": "Search the register",
      "search_placeholder": "No., name, type…",
      "filter": { "all": "All", "valid": "Valid", "cancelled": "Cancelled" },
      "file": "documents-register",
      "empty": "No document in this filter.",
      "col": { "number": "No.", "date": "Issued on", "document": "Document · beneficiary", "language": "Language", "signed_by": "Signed by", "scans": "QR scans", "status": "Status", "actions": "Actions" },
      "status": { "valid": "Valid", "cancelled": "Cancelled", "replaced": "Replaced" },
      "tip_cancelled": "Cancelled on {{date}} · {{reason}}",
      "tip_replaced": "Replaced by {{number}}",
      "view": "View {{number}}",
      "copy": "Certified copy of {{number}}",
      "cancel": "Cancel {{number}}"
    },
    "cancel_reason": {
      "error": "Error in the information",
      "replaced": "Replaced by a new document",
      "left": "Student left the school",
      "lost": "Document lost or stolen"
    },
    "cancel": {
      "title": "Cancel the document",
      "back": "Back",
      "submit": "Cancel the document",
      "reason": "Reason (kept in the register)",
      "replaced_by": "Replaced by",
      "replaced_by_hint": "Optional: the document that takes its place.",
      "note": "The number stays in the register. The QR will show \"cancelled\" from now on."
    },
    "templates": {
      "title": "Templates",
      "new": "New template",
      "language": "Preview language",
      "data": "Preview data",
      "variables": "Variables",
      "yasmine": "Yasmine",
      "title_fr": "Title (FR)",
      "title_ar": "Title (AR)",
      "body_fr": "Text (FR)",
      "body_ar": "Text (AR)",
      "layout": "Layout",
      "toggle": {
        "header": "School header",
        "register_number": "Register number",
        "qr": "Verification QR",
        "stamp": "Stamp",
        "signature": "Director's signature",
        "copy_watermark": "\"COPY\" watermark on duplicates"
      },
      "readonly": "Changes unavailable: documents are switched off or you lack the right.",
      "position": "Position of the signature and the stamp",
      "position_left": "Left",
      "position_center": "Centre",
      "position_right": "Right",
      "signatory": "Signatory",
      "validation": "Validation",
      "validation_auto": "Automatic",
      "validation_approval": "Approval",
      "validation_hint_auto": "Automatic: every request is generated as soon as it arrives.",
      "validation_hint_approval": "Approval: every request goes through the queue before it is generated.",
      "insert": "Variables (click to insert)",
      "save": "Save",
      "saved": "Template saved · version {{version}}",
      "number_pending": "given at generation"
    },
    "verify": {
      "title": "Public verification page",
      "intro": "What a bank, a consulate or an employer sees when they scan the QR of the document. No marks or sensitive data: only authenticity.",
      "state": "State of the document",
      "state_valid": "Valid",
      "state_cancelled": "Cancelled",
      "state_unknown": "Unknown",
      "heading": "Document verification",
      "valid_title": "Authentic document",
      "valid_text": "issued and signed by the school",
      "cancelled_title": "Cancelled document",
      "cancelled_text": "on {{date}}",
      "unknown_title": "Code not found",
      "unknown_text": "check the code or contact the school",
      "row_number": "No.",
      "row_type": "Type",
      "row_beneficiary": "Beneficiary",
      "row_issued": "Issued on",
      "row_signed_by": "Signed by",
      "sample_number": "2026/1270",
      "sample_type": "Enrolment certificate",
      "sample_beneficiary": "Lina B•••••",
      "sample_signed_by": "Sami Idrissi, Director",
      "checked": "Checked on {{when}}",
      "copy": "Copy the link",
      "copied": "Link copied",
      "close": "Close"
    },
    "paper": { "of": "Document {{number}}", "qr": "Verification QR code of the document" },
    "card": { "of": "Student card of {{name}}" },
    "my": {
      "title": "My documents",
      "hint": "The documents you asked the school for. Once one is ready, open it to print it or save it as a PDF.",
      "hint_parent": "The documents asked for you and your children. Once one is ready, open it to print it or save it as a PDF. To ask for one, use the child's page.",
      "request_button": "Request a document",
      "empty": "No document requested yet.",
      "open": "Open {{kind}}",
      "open_button": "Open",
      "request": {
        "title": "Request a document",
        "hint": "The school office is told. You are notified when the document is ready.",
        "for": "For {{name}}. The school office is told, and you are notified when the document is ready.",
        "reason": "Reason (optional)",
        "period_invalid": "Give the period, from the first day to the last.",
        "submit": "Send the request"
      }
    },
    "print": { "none": "Document not found.", "none_batch": "No document in this batch." },
    "toast": {
      "generated": "{{kind}} generated · No. {{number}}",
      "approved": "{{kind}} approved",
      "bulk_generated": "{{n}} documents generated · to sign",
      "delivered": "{{kind}} handed over",
      "signed": "Document signed · requester notified (space + SMS)",
      "signed_many": "{{n}} documents signed · requesters notified",
      "refused": "Request refused · reason sent to the requester",
      "cancelled": "{{number}} cancelled · the QR now shows \"cancelled\"",
      "copied": "Certified copy generated (COPY watermark)",
      "issued_signed": "{{kind}} generated and signed · No. {{number}}",
      "requested": "{{kind}} requested"
    },
    "errors": {
      "kind_not_allowed": "This type of document is not available for this person.",
      "extra_invalid": "A detail of this document is missing or invalid.",
      "not_signatory": "You are not the signatory of this template.",
      "pin_invalid": "Wrong signing code.",
      "pin_not_set": "You have not set a signing code yet.",
      "not_approved": "Approve the selected requests first",
      "already_cancelled": "This document is already cancelled.",
      "wrong_state": "This request changed state meanwhile: refresh the list.",
      "beneficiary_invalid": "This person cannot receive this document.",
      "no_report_card": "No report card generated for this period.",
      "file_type": "File format refused.",
      "file_too_large": "File too large."
    }
  },
  "services_settings": {
    "tab": "Services",
    "cantine": {
      "title": "Cantine · prices and times",
      "sub": "The monthly formulas, the unit meal, when the count is frozen and when absentees' families are told.",
      "saved": "Cantine settings saved",
      "price_5d": "Monthly subscription, 5 days (TND)",
      "price_3d": "Monthly subscription, 3 days (TND)",
      "price_unit": "Unit meal (TND)",
      "cutoff": "Reservation cut-off",
      "cutoff_hint": "After this time the day's count is frozen: only walk-in meals can be added.",
      "absence_notice_at": "Absence notice sent at",
      "extra_meals": "Extra meals prepared beyond the count",
      "extra_meals_hint": "Walk-in meals are accepted up to this many, minus the ones already served."
    },
    "cantine_services": {
      "title": "Lunch services",
      "sub": "Each service has its start time and the levels that eat in it. A pupil eats at the service of their level.",
      "name": "Name",
      "name_of": "Name of service {{n}}",
      "start": "Start",
      "start_of": "Start of service {{n}}",
      "levels": "Levels",
      "level_of": "{{level}} · service {{n}}",
      "remove": "Remove service {{n}}",
      "add": "Add a service",
      "empty": "No lunch service yet.",
      "invalid": "Every service needs a name, a start time and at least one level.",
      "saved": "Lunch services saved"
    },
    "transport": {
      "title": "Transport · prices",
      "sub": "The monthly price of a circuit and when expiring papers of a bus are flagged.",
      "saved": "Transport settings saved",
      "price_round_trip": "Round trip, per month (TND)",
      "price_one_way": "One way, per month (TND)",
      "expiry_warning_days": "Warn this many days before a licence, inspection or insurance expires"
    },
    "document_settings": {
      "title": "Official documents · header",
      "sub": "What the papers print under the school's name.",
      "ministry_fr": "Ministry (French)",
      "ministry_ar": "Ministry (Arabic)",
      "approval_number": "Approval number",
      "city": "City",
      "phone": "School phone (shown on the verification page)",
      "default_language": "Language of a new document",
      "saved": "Document header saved"
    },
    "documents": {
      "title": "Official documents · fees",
      "sub": "What the school charges for a document.",
      "saved": "Document fees saved",
      "card_duplicate_fee": "Fee for a duplicate student card (TND)"
    },
    "admissions": {
      "title": "Admissions · tests",
      "sub": "The threshold a candidate must reach.",
      "saved": "Admissions settings saved",
      "pass_mark": "Pass mark of a test (out of 20)"
    },
    "signatory": {
      "title": "My signature",
      "sub": "You are a signatory: set your signing code, and the images of your signature and stamp printed on the papers you sign.",
      "pin_set": "A code is set. To replace it, enter the current one and a new one.",
      "old_pin": "Current code",
      "new_pin": "New signing code ({{digits}} digits)",
      "pin_not_set": "No code set yet",
      "pin_save": "Set the code",
      "pin_saved": "Signing code saved",
      "pin_invalid": "The code must be {{digits}} digits.",
      "signature": "Signature (PNG or JPG, 1 MB at most)",
      "stamp": "Stamp (PNG or JPG, 1 MB at most)",
      "on_file": "On file",
      "missing": "Missing",
      "file_refused": "Use a PNG or JPG of 1 MB at most.",
      "image_saved": "Image saved"
    }
  },
  "formations": {
    "title": "Trainings and workshops",
    "subtitle": "{{trainings}} trainings in progress · {{workshops}} workshops this month · {{participants}} participants",
    "subtitle_next": "next session {{date}} {{start}} ({{title}}, {{room}})",
    "export": "Export",
    "export_menu": { "catalogue": "Catalogue (CSV)", "sheets": "Attendance sheets (PDF)", "attestations": "Participation certificates", "vouchers": "Payment vouchers (students)" },
    "new_atelier": "New workshop",
    "create_training": "Create a training",
    "catalogue": "Catalogue",
    "view": "View",
    "view_cards": "Cards",
    "view_list": "List",
    "tabs": { "all": "All", "formations": "Trainings", "ateliers": "Workshops", "ended": "Ended" },
    "search": "Title, trainer, subject…",
    "search_label": "Search a training",
    "filter": { "vacataire": "Freelance", "teacher": "Teachers", "student": "Students", "fee": "With participation" },
    "sort": "Sort",
    "sorts": { "next": "Next session", "participants": "Participants", "paid": "Paid to the trainer" },
    "empty": "No training matches",
    "ended_pill": "Ended",
    "open": "Open",
    "open_named": "Open {{title}}",
    "redo": "Redo this year",
    "col": { "formation": "Training", "trainer": "Trainer", "sessions": "Sessions", "participants": "Participants", "room": "Room", "rate": "Rate", "paid": "Paid", "fee": "Participation" },
    "rate_h": "{{rate}} TND/h",
    "free": "Free",
    "collected_short": "{{amount}} collected",
    "card": {
      "next": "next: {{date}}",
      "sessions": "Sessions",
      "participants": "Participants",
      "participants_presence": "Participants · attendance {{pct}}",
      "paid": "Paid to the trainer",
      "fee": "Optional participation {{fee}} · {{collected}} collected"
    },
    "kind": { "formation": "Training", "atelier": "Workshop" },
    "trainer_kind": { "vacataire": "Freelance", "teacher": "Teacher", "student": "Student" },
    "kpi": {
      "in_progress": "Trainings in progress",
      "in_progress_sub": "{{done}} of {{total}} sessions held",
      "ateliers": "Workshops this month",
      "ateliers_sub": "{{done}} held · next {{title}} {{date}}",
      "ateliers_sub_none": "{{done}} held",
      "participants": "Participants",
      "presence": "average attendance {{pct}} %",
      "presence_series": "Average attendance",
      "paid": "Paid to trainers",
      "paid_sub_one": "{{hours}} h taught · {{count}} student trainer",
      "paid_sub_other": "{{hours}} h taught · {{count}} student trainers",
      "revenue": "Revenue",
      "revenue_sub": "optional participation · of {{billable}} · {{to_collect}} to collect"
    },
    "week": { "title": "This week", "none": "No session this week", "session_of": "session {{index}}/{{count}}", "atelier": "workshop", "tomorrow": "tomorrow" },
    "trainers": {
      "title": "Trainers",
      "hours": "hours taught",
      "taught": "taught",
      "note": "Freelance trainers and teachers are paid with the payroll (« Training » line). Student trainers receive a payment voucher."
    },
    "chart": {
      "title": "Trainer cost and revenue per training",
      "planned": "Planned cost at the end",
      "collected": "Participations collected",
      "paid": "Paid to the trainer",
      "note": "The families' participation is optional: it does not always cover the trainers' cost."
    },
    "dialog": {
      "title": { "formation": "Create a training", "atelier": "Create a workshop" },
      "edit": { "formation": "Edit the training", "atelier": "Edit the workshop" },
      "create": { "formation": "Create the training and notify", "atelier": "Create the workshop and notify" },
      "save": "Save",
      "force": "Force",
      "type": "Type",
      "type_formation": "Training · series of sessions",
      "type_atelier": "Workshop · single session",
      "s_subject": "Subject and trainer",
      "f_title": "Title",
      "f_subject": "Subject",
      "f_trainer": "Trainer",
      "f_rate": "Hourly rate (TND/h)",
      "default_rate": "{{label}} · default training rate {{rate}} TND/h",
      "minor": "Minor: parents' agreement requested at creation",
      "s_planning": "Planning",
      "f_day": "Day",
      "f_date": "Date",
      "f_start": "Start time",
      "f_duration": "Duration of a session",
      "f_count": "Number of sessions",
      "f_from": "Starting on",
      "f_room": "Room",
      "room_places": "{{room}} ({{places}} places)",
      "no_conflict": "No conflict",
      "conflicts_one": "{{count}} conflict with the timetable",
      "conflicts_other": "{{count}} conflicts with the timetable",
      "check_pending": "The timetable is checked once the trainer is chosen.",
      "free_slot": "Suggest a free slot",
      "blocked_hint": "Resolve the conflicts or suggest a free slot",
      "s_audience": "Audience",
      "f_open_to": "Open to",
      "a_levels": "Levels",
      "a_classes": "Classes",
      "a_school": "Everyone",
      "a_school_hint": "Open to every student of the school, first come first served",
      "f_capacity": "Capacity (places)",
      "s_fee": "Participation of the participants (optional)",
      "f_fee_on": "Ask for a participation",
      "f_fee_amount": "Amount (TND)",
      "fee_hint": "TND per participant · paid at the desk or by transfer with proof",
      "cost": "Estimated trainer cost",
      "cost_sub_one": "{{count}} session × {{duration}} × {{rate}} TND/h",
      "cost_sub_other": "{{count}} sessions × {{duration}} × {{rate}} TND/h",
      "by_payroll": "added to payroll",
      "by_voucher": "payment voucher (student)",
      "revenue": "Estimated revenue if paid",
      "revenue_sub": "{{capacity}} places × {{fee}} TND",
      "revenue_none": "no participation asked",
      "title_needed": "Give it a title.",
      "trainer_needed": "Choose the trainer.",
      "rate_needed": "Enter the hourly rate.",
      "sessions_range": "A training has between {{min}} and {{max}} sessions.",
      "fee_needed": "Enter the amount of the participation.",
      "incomplete": "Fill in the trainer, the rate, the capacity and the dates.",
      "slot_needs_trainer": "Choose the trainer and the rate first."
    },
    "conflict": {
      "trainer_teaching": "{{trainer}} teaches {{class}} on {{when}} (timetable)",
      "student_trainer_in_class": "{{trainer}} has class on {{when}}",
      "room_busy": "{{room}} is used by a lesson on {{when}}",
      "room_busy_formation": "{{room}} is already used by « {{title}} » ({{when}})",
      "trainer_busy_formation": "{{trainer}} already leads « {{title}} » ({{when}})",
      "room_too_small": "{{room}} has only {{seats}} places for {{capacity}} participants",
      "audience_in_class": "The chosen audience has class at this time ({{when}})"
    },
    "errors": {
      "formation_full": "The training is full.",
      "not_in_audience": "This student is not in the audience of the training.",
      "desk_closed": "The cash desk is closed: open it to collect.",
      "already_done": "This session already has its roll call.",
      "conflicts": "The planning has conflicts: resolve them or suggest a free slot.",
      "no_free_slot": "No free slot: change the room or the trainer",
      "trainer_not_payable": "This person belongs to the administration and cannot be paid as a trainer.",
      "atelier_single_date": "A workshop has a single date.",
      "capacity_below_participants": "The capacity cannot be lower than the number of participants already enrolled.",
      "audience_empty": "Pick at least one level or class for the audience.",
      "no_charge": "This participant has no fee to collect.",
      "already_paid": "This participation is already paid.",
      "session_in_future": "This session has not taken place yet: it has no roll call.",
      "enrolment_invalid": "This enrolment is not valid."
    },
    "drawer": {
      "title": "Training details",
      "sub_formation": "Training · {{n}} sessions · {{day}} {{start}} · {{duration}}",
      "sub_atelier": "Workshop · {{date}} {{start}} · {{duration}}",
      "trainer_line": "{{label}} · {{rate}} TND/h",
      "t_sessions": "Sessions",
      "t_participants": "Participants",
      "t_presence": "Attendance",
      "t_paid": "Paid to the trainer",
      "sessions": "Sessions and roll call",
      "session_pay": "{{duration}} × {{rate}} TND/h = {{amount}} · roll call validated",
      "status": { "cancelled": "Cancelled" },
      "moved_from": "postponed from {{date}}",
      "next_room": "next session · {{room}}",
      "upcoming": "upcoming",
      "show_absent": "Show absentees of session {{index}}",
      "absent": "Absent: {{names}}",
      "no_absent": "No absentee",
      "roll": "Roll call",
      "roll_for": "Roll call for session {{index}}",
      "postpone": "Postpone",
      "postpone_for": "Postpone session {{index}}",
      "participants": "Participants",
      "enrolled": "{{n}} enrolled",
      "fee_optional": "participation {{fee}} TND, optional",
      "add": "Add",
      "add_label": "Add a participant",
      "paid": "Paid",
      "collect": "Collect",
      "collect_from": "Collect from {{name}}",
      "others": "and {{n}} others · full list",
      "pay": "Trainer pay",
      "pay_left": "{{amount}} still to pay",
      "collected": "Collected participations",
      "collected_sub": "{{paid}} / {{total}} paid · {{amount}} to collect",
      "sheet": "Attendance sheet",
      "attestations": "Attestations",
      "message": "Message",
      "edit": "Edit"
    },
    "roll": { "title": "Roll call · session {{index}}", "save": "Save the roll call", "count": "{{present}} of {{total}} present" },
    "postpone": { "title": "Postpone session {{index}}", "hint": "The participants and the trainer are told.", "date": "New date", "start": "New start time", "save": "Postpone", "date_needed": "Choose the new date." },
    "add": { "title": "Add participants", "hint": "Open to {{audience}}. {{free}} places left.", "search": "Search a student", "none": "No student of the audience to add.", "save": "Add", "pick_needed": "Tick at least one student." },
    "message": {
      "title": "Message · {{title}}",
      "body": "Message",
      "send": "Send",
      "body_needed": "Write the message.",
      "channel_needed": "Choose at least one channel."
    },
    "toast": {
      "created": "« {{title}} » created · {{trainer}} and the audience are told",
      "updated": "« {{title}} » updated",
      "rolled": "Roll call saved · {{present}} of {{total}} present",
      "postponed": "Session {{index}} postponed: the participants and the trainer are told",
      "enrolled": "{{n}} added to the participants",
      "collected": "{{fee}} collected at the desk · receipt {{receipt}}",
      "messaged": "Message sent to {{n}} people",
      "messaged_cost": "Message sent to {{n}} people · SMS cost {{cost}}",
      "exported": "Catalogue exported"
    },
    "print": {
      "sheet_title": "Attendance sheet",
      "sheet_none": "No attendance sheet to print.",
      "col_n": "No.",
      "col_name": "Name",
      "col_class": "Class",
      "session_n": "S{{n}}",
      "attest_title": "Certificate of participation",
      "attest_body": "{{student}} attended {{attended}} of {{total}} sessions of « {{title}} », led by {{trainer}}, {{duration}} in all.",
      "attest_period": "Sessions from {{from}} to {{to}}",
      "signature": "The head of the establishment",
      "attest_none": "No participant to certify.",
      "voucher_title": "Payment voucher",
      "voucher_month": "Month of {{month}}",
      "col_date": "Date",
      "col_formation": "Training",
      "col_duration": "Duration",
      "col_rate": "Rate",
      "col_amount": "Amount",
      "total": "Total",
      "received_by": "Received by (name and signature):",
      "vouchers_none": "No student trainer was due a voucher this month.",
      "pick_sheet": "Attendance sheet of…",
      "pick_attestations": "Attestations of…",
      "pick_label": "Training",
      "open": "Open"
    }
  },
  "cantine": {
    "title": "Canteen",
    "subtitle_meals": "{{total}} meals at noon",
    "subtitle_closed": "reservations closed at {{cutoff}}",
    "subtitle_open": "reservations open until {{cutoff}}",
    "subtitle_severe": "{{n}} severe allergies to serve separately",
    "week_select": "Week",
    "week_of": "Week of {{date}}",
    "kitchen_sheet": "Kitchen sheet",
    "subscribe_cta": "Enrol a student",
    "vegetarian": "Vegetarian",
    "payments": "Payments",
    "tabs": { "today": "Today", "menus": "Menus", "enrolments": "Enrolments", "stats": "Statistics" },
    "kpi": {
      "meals": "Meals today",
      "meals_sub": "{{subscribers}} subscribers + {{unit}} single meals",
      "vs": "{{delta}} vs last {{day}}",
      "enrolled": "Students enrolled",
      "enrolled_pct": "{{pct}} % of students",
      "enrolled_sub": "{{subs}} subscriptions · {{unit}} single meals",
      "attendance": "Lunch attendance (yesterday)",
      "attendance_sub": "{{served}} served / {{reserved}} reserved · {{wasted}} not eaten",
      "billed": "Billed in {{month}}",
      "collected": "collected {{pct}} %",
      "see_payments": "see Payments"
    },
    "course": { "starter": "Starter", "main": "Main", "side": "Alternative", "dessert": "Dessert" },
    "diet": { "standard": "Standard", "vegetarian": "Vegetarian", "gluten_free": "Gluten-free", "lactose_free": "Lactose-free", "nut_free": "Peanut / nut-free", "diabetic": "Diabetic" },
    "allergen": { "gluten": "Gluten", "milk": "Milk", "eggs": "Eggs", "peanuts": "Peanuts", "nuts": "Tree nuts", "fish": "Fish", "crustaceans": "Crustaceans", "sesame": "Sesame", "celery": "Celery" },
    "severity": { "mild": "mild", "moderate": "moderate", "severe": "severe" },
    "formula": {
      "label": "Formula",
      "d5": "5 days",
      "d3": "3 days",
      "unit": "Single meals",
      "long": { "d5": "5-day subscription", "d3": "3-day subscription", "unit": "Single meals" }
    },
    "payment": {
      "meals_due_one": "{{count}} meal",
      "meals_due_other": "{{count}} meals"
    },
    "charge": { "paid": "Paid", "partial": "Partly paid", "due": "To pay", "late": "Overdue", "pending": "Pending", "proof": "Proof to check", "credited": "Credited" },
    "today": {
      "kitchen_title": "For the kitchen · {{date}}",
      "frozen": "count frozen at {{cutoff}}",
      "open_until": "reservations open until {{cutoff}}",
      "no_cutoff": "no cut-off",
      "no_allergen": "no major allergen",
      "warning": "{{dish}} contains {{allergens}}: plan replacement meals for {{students}}.",
      "diets": "Diets",
      "by_service": "By service",
      "allergies": "Allergies and diets",
      "severe_count": "{{n}} severe",
      "concerned_today": "concerned today",
      "service_list": "Service list",
      "rollcall": "Lunch roll call",
      "service": "Service",
      "count_line": "{{present}} present · {{absent}} absent · {{expected}} expected",
      "all_present": "All present",
      "walk_in": "Meal without reservation",
      "present": "present",
      "absent": "absent",
      "absent_reserved": "absent · reserved",
      "unit": "single meal",
      "subscriber": "subscriber",
      "help": "Tap a student: present → absent → not marked.",
      "help_absent": "An absent student with a reservation is reported to the parents at {{time}}; the meal stays due under the rules."
    },
    "menus": {
      "title": "Menu of the week",
      "week": "Week",
      "published_on": "published on {{date}}",
      "duplicate": "Duplicate",
      "publish": "Publish",
      "today": "today",
      "help": "Click a dish to edit it. Students allergic to an ingredient of the day are flagged automatically on the kitchen sheet.",
      "edit": "Edit the dish",
      "save": "Save",
      "dish": "Dish",
      "allergens": "Allergens",
      "concerns": "Affects {{list}}: plan a replacement dish.",
      "saved": "Dish updated · the families will see the change",
      "published": "Menu published: the families are notified",
      "duplicated": "Week of {{date}} created from this one"
    },
    "subscribe": {
      "title": "Enrol in the canteen",
      "submit": "Enrol",
      "formula_price": "{{label}} · {{price}}",
      "days": "Days",
      "pick_three": "Pick 3 days",
      "diet": "Diet",
      "allergies": "Allergies",
      "severity": "Severity",
      "note": "Remark",
      "from": "From",
      "fee_month": "Line added to the family account: {{amount}} / month from {{month}}",
      "fee_unit": "Each meal reserved (the day before, before {{cutoff}}) adds {{amount}} to the family account",
      "done": "{{name}} enrolled in the canteen · the family is notified"
    },
    "walkin": {
      "title": "Meal without reservation",
      "add": "Add",
      "pick": "Choose a student first.",
      "info": "{{amount}} added to the family account.",
      "done": "Single meal added · {{amount}} on the family account · kitchen margin left: {{margin}}"
    },
    "drawer": {
      "title": "Canteen card",
      "service": "service {{service}}",
      "formula_note": "A change of formula applies from the next month.",
      "no_subscription": "No formula recorded.",
      "health": "Health",
      "none_declared": "none declared",
      "pai": "PAI signed on {{date}} · emergency kit at the infirmary",
      "calendar": "Month calendar",
      "legend": "Legend",
      "legend_served": "Served",
      "legend_absent": "Absent (reserved)",
      "legend_none": "No reservation",
      "legend_future": "Upcoming",
      "account": "Family account",
      "generated": "line generated on {{date}}",
      "pay_note": "Payment by transfer (proof in the parent area) or at the cashier.",
      "unsubscribe": "Unsubscribe",
      "save": "Save",
      "saved": "Canteen card saved",
      "ended": "Unsubscription scheduled for {{date}} · the family is notified",
      "end_title": "Unsubscribe {{name}}?",
      "end_body": "The unsubscription takes effect on {{date}}, the end of the current month."
    },
    "enrol": {
      "billing": "Billing on the family accounts",
      "subs_month": "Subscriptions · {{month}}",
      "subs_sub": "{{n5}} × {{p5}} (5 days) + {{n3}} × {{p3}} (3 days)",
      "unit_month": "Single meals · {{month}}",
      "unit_sub": "{{n}} meals × {{price}}",
      "lines_next": "Lines for {{month}}",
      "auto": "generated automatically ·",
      "generate_now": "generate now",
      "generated": "{{n}} lines of {{month}} generated on the family accounts",
      "pay_note": "Families pay by transfer (proof uploaded in the parent area) or at the cashier. No online payment.",
      "students": "Students enrolled",
      "excel": "Excel",
      "exported": "Enrolled students exported",
      "search": "Search a student",
      "search_placeholder": "Student or class…",
      "filter": { "all": "All", "subscribers": "Subscribers", "unit": "Single meals", "diet": "Diet / allergy", "unpaid": "Unpaid" },
      "empty": "No student enrolled",
      "col": { "student": "Student", "formula": "Formula", "days": "Days", "diet": "Diet", "payment": "Payment", "open": "Open" },
      "open": "Open the card of {{name}}",
      "per_meal": "{{price}} / meal",
      "per_month": "{{price}} / month",
      "bulk_formula": "Change formula",
      "bulk_remind": "Payment reminder",
      "remind_send": "Send",
      "apply": "Apply",
      "formula_changed": "Formula changed from {{date}}",
      "reminded": "Reminder sent to the families"
    },
    "stats": {
      "meals": "Meals reserved and served · last weeks",
      "served": "Served",
      "wasted": "Not eaten",
      "meals_note": "A column is the meals reserved that day.",
      "billed": "Billed and collected",
      "billed_bar": "Billed",
      "collected_bar": "Collected",
      "collected_pct": "Collected: {{pct}} % of this month",
      "formulas": "Formulas",
      "students": "students",
      "waste": "Non-consumption rate: {{rate}}"
    },
    "print": {
      "none": "No sheet to print",
      "kitchen_title": "Kitchen sheet",
      "total": "{{total}} meals · {{subscribers}} subscribers + {{unit}} single meals",
      "col_course": "Course",
      "col_dish": "Dish",
      "col_allergens": "Allergens",
      "diets": "Diets",
      "apart": "Students to serve apart",
      "list_none": "No student to flag",
      "list_title": "Allergies list for the service staff",
      "col_student": "Student",
      "col_class": "Class",
      "col_severity": "Severity",
      "col_note": "Remark"
    },
    "errors": {
      "after_cutoff": "Reservations are closed for today: add it as a meal without reservation.",
      "no_year_for_month": "Create the school year that contains {{month}} first.",
      "already_reserved": "This student already has a meal for this day.",
      "already_subscribed": "This student already has a subscription.",
      "price_unavailable": "The single-meal price is switched off.",
      "walk_in_not_today": "A meal without reservation can only be added for today.",
      "date_past": "A meal cannot be reserved for a past date.",
      "date_future": "The roll call cannot be taken for a future day.",
      "days_invalid": "The 3-day formula needs exactly 3 different days, Monday to Friday.",
      "month_past": "This month is over: its billing can no longer be generated.",
      "starts_on_locked": "The start of a subscription that has begun cannot be moved.",
      "severity_required": "Give a severity for the declared allergies.",
      "subscription_invalid": "Subscription not found.",
      "channels_invalid": "Reminders go by app and/or SMS.",
      "month_invalid": "Invalid month: next month at the latest.",
      "week_start_invalid": "A menu week starts on a Monday.",
      "dish_duplicate": "Two dishes for the same day and course.",
      "dish_date_invalid": "A dish must fall between Monday and Friday of the week.",
      "menu_empty": "No dishes to publish or duplicate.",
      "menu_exists": "The target week already has dishes.",
      "service_invalid": "Lunch service not found.",
      "level_invalid": "This level does not belong to the school.",
      "level_taken": "This level is already in another service.",
      "desk_closed": "The cash desk is closed: open it to collect.",
      "no_current_year": "There is no current school year: create one first."
    }
  },
  "services": {
    "charge": {
      "cantine_sub": "Canteen · {{month}} · {{formula}}",
      "cantine_unit_one": "Canteen · {{month}} · {{count}} single meal",
      "cantine_unit_other": "Canteen · {{month}} · {{count}} single meals",
      "transport": "Transport · {{month}} · {{trips}}",
      "formation": "Training · {{title}}",
      "document": "{{kind}} · duplicate"
    },
    "payment": {
      "paid": "Paid",
      "due": "To pay",
      "proof": "Proof to check",
      "late": "Overdue",
      "credited": "Credited",
      "method": {
        "cash": "Cash",
        "transfer": "Transfer",
        "cheque": "Cheque",
        "card": "Card"
      }
    }
  },
  "transport": {
    "title": "School transport",
    "subtitle": "{{date}} · {{routes}} routes · {{buses}} vehicles · {{students}} students",
    "route_label": "Route {{number}} · {{name}}",
    "route_chip": "R{{number}}",
    "seats_free_one": "{{count}} seat",
    "seats_free_other": "{{count}} seats",
    "trips": {
      "round": "Round trip",
      "morning": "Morning",
      "evening": "Evening"
    },
    "trips_price": "{{label}} · {{price}}",
    "payments": "Payments",
    "period": {
      "morning": "Morning",
      "evening": "Evening"
    },
    "period_short": {
      "morning": "morning",
      "evening": "evening"
    },
    "state": {
      "service": "In service",
      "maintenance": "Maintenance"
    },
    "channel": {
      "sms": "SMS",
      "app": "App",
      "email": "E-mail"
    },
    "report_kind": {
      "no_bus": "no bus",
      "other_stop": "other stop"
    },
    "day": {
      "label": "Day",
      "today": "Today · {{date}}",
      "tomorrow": "Tomorrow · {{date}}"
    },
    "tabs": {
      "today": "Today",
      "routes": "Routes & stops",
      "fleet": "Fleet",
      "pupils": "Students"
    },
    "kpi": {
      "transported": "Students transported",
      "of_seats": "of {{seats}} seats",
      "transported_sub_one": "{{pct}} % · {{count}} route full · {{waiting}} waiting",
      "transported_sub_other": "{{pct}} % · {{count}} routes full · {{waiting}} waiting",
      "round": "Morning round",
      "round_evening": "Evening round",
      "round_sub": "buses arrived · average delay {{avg}} min",
      "round_sub_worst": "buses arrived · average delay {{avg}} min · {{bus}} +{{delay}} min ({{remark}})",
      "absent": "Absent at pick-up",
      "notified": "{{notified}}/{{absent}} families notified",
      "billed": "Billed in {{month}}",
      "billed_sub": "{{round}} × {{roundPrice}} round trip + {{one}} × {{onePrice}} one way",
      "billed_sub_plain": "{{round}} round trips + {{one}} one-way"
    },
    "today": {
      "runs": "Runs",
      "period": "Round",
      "planned": "planned",
      "on_time": "on time",
      "late": "+{{n}} min",
      "run_done": "{{driver}} · departed {{departed}} · arrived {{arrived}} (planned {{planned}})",
      "run_planned": "{{driver}} · planned arrival {{planned}}",
      "on_board": "on board",
      "expected_one": "{{count}} expected",
      "expected_other": "{{count}} expected",
      "no_runs": "No run for this round.",
      "no_absences": "Nobody is absent at pick-up.",
      "no_reports": "No report from the families.",
      "log": "Log run",
      "log_aria": "Log the run of {{bus}}",
      "absent": "Absent at pick-up",
      "notify_all_one": "Notify the family",
      "notify_all_other": "Notify the {{count}}",
      "notified_one": "{{count}} family notified",
      "notified_other": "{{count}} families notified",
      "notify_one": "Notify",
      "notify_one_aria": "Notify the family of {{name}}",
      "reports": "Reported by families",
      "add_report": "Add a report"
    },
    "report": {
      "title": "Add a report",
      "date": "Date",
      "kind": "Kind of report",
      "route": "Route",
      "stop": "Stop",
      "note": "Note",
      "submit": "Add",
      "pick_student": "Choose a student.",
      "pick_stop": "Choose the route and the stop.",
      "done": "Report added for {{name}}"
    },
    "run": {
      "title": "Run {{bus}} · {{period}}",
      "departure": "Departure",
      "arrival": "Arrival",
      "absent": "Absent",
      "absent_hint": "Tick the expected students who did not board (planned arrival {{planned}}).",
      "absent_aria": "Absent: {{name}}",
      "reason": "Reason (optional)",
      "reason_aria": "Reason for {{name}}",
      "remark": "Remark",
      "save": "Save",
      "times_needed": "Enter the departure and arrival times.",
      "done": "Run of {{bus}} logged"
    },
    "routes": {
      "plan": "Route plan",
      "plan_hint": "Schematic plan, no external map service. Click a stop to see its students.",
      "schematic": "Schematic plan of route {{number}}",
      "stop_aria": "Stop {{n}}: {{name}}",
      "stop_info_one": "{{name}} · {{morning}} · {{evening}} · {{count}} student",
      "stop_info_other": "{{name}} · {{morning}} · {{evening}} · {{count}} students",
      "print": "Print the route sheet",
      "seats_pill": "{{assigned}}/{{seats}} seats",
      "waiting": "{{count}} waiting",
      "morning_pill": "morning {{from}} → {{to}}",
      "evening_pill": "evening {{from}} → {{to}}",
      "stop_name": "Stop name {{n}}",
      "morning_time": "Morning time {{n}}",
      "evening_time": "Evening time {{n}}",
      "move_up": "Move up: {{name}}",
      "move_down": "Move down: {{name}}",
      "remove": "Remove: {{name}}",
      "add_stop": "Stop",
      "save": "Save",
      "saved": "Route saved",
      "name_every_stop": "Name every stop and give both times.",
      "new": "New route",
      "edit": "Edit route",
      "empty": "No route yet",
      "fill": "Fill by route",
      "stop_times_one": "morning {{morning}} · evening {{evening}} · {{count}} student",
      "stop_times_other": "morning {{morning}} · evening {{evening}} · {{count}} students"
    },
    "route_form": {
      "title_new": "New route",
      "title_edit": "Edit route {{number}}",
      "number": "Number",
      "colour": "Colour",
      "name": "Name",
      "morning_start": "Morning departure",
      "morning_arrival": "Arrival at school",
      "evening_departure": "Evening departure",
      "evening_last": "Last drop-off",
      "save": "Save",
      "required": "Fill in the number, the name and the four times."
    },
    "fleet": {
      "title": "Vehicles and drivers",
      "add": "Vehicle",
      "edit": "Edit {{bus}}",
      "col": {
        "vehicle": "Vehicle",
        "route": "Route",
        "driver": "Driver",
        "attendant": "Attendant",
        "inspection": "Technical inspection",
        "insurance": "Insurance",
        "state": "State",
        "edit": "Edit"
      },
      "model_seats_one": "{{model}} · {{count}} seat",
      "model_seats_other": "{{model}} · {{count}} seats",
      "licence": "Licence",
      "back_on": "back on {{date}}",
      "expiry_note": "Documents are flagged {{days}} days before they expire."
    },
    "bus": {
      "new": "New vehicle",
      "label": "Label",
      "plate": "Plate",
      "model": "Model",
      "seats": "Seats",
      "driver": "Driver",
      "driver_phone": "Driver phone",
      "licence": "Licence valid until",
      "attendant": "Attendant",
      "inspection": "Technical inspection",
      "insurance": "Insurance",
      "route": "Route",
      "reserve": "Reserve",
      "state": "State",
      "reason": "Reason",
      "back_on": "Back in service on",
      "save": "Save",
      "saved": "Vehicle saved",
      "required": "Fill in the label, the plate and the number of seats."
    },
    "assign": {
      "title": "Assign a student",
      "route": "Route",
      "stop": "Stop",
      "bus": "Bus",
      "any_bus": "Any bus",
      "trips": "Trips",
      "from": "Starting on",
      "submit": "Assign",
      "pick_student": "Choose a student.",
      "pick_route": "Choose a route and a stop.",
      "route_option": "Route {{number}} · {{name}} · {{hint}}",
      "stop_option": "{{name}} ({{morning}} · {{evening}})",
      "full": "full · waiting list",
      "full_note": "This route is full: the pupil goes on the waiting list and is not billed until a seat is free.",
      "fee": "{{amount}} / month added to the family account · payment by transfer (proof) or at the cash desk.",
      "done": "{{name}} assigned to route {{number}} · the family is notified",
      "done_waiting": "{{name}} put on the waiting list of route {{number}}"
    },
    "pupils": {
      "title": "Students transported",
      "excel": "Excel",
      "search": "Search a student",
      "search_placeholder": "Student, class, stop…",
      "col": {
        "student": "Student",
        "route": "Route · stop",
        "trips": "Trips",
        "fee": "Fee / month",
        "pickups": "Authorised pick-up",
        "payment": "Payment",
        "open": "Open"
      },
      "route_stop": "R{{number}} · {{stop}}",
      "waiting": "waiting list",
      "people_one": "{{count}} person",
      "people_other": "{{count}} people",
      "open": "Open the transport of {{name}}",
      "empty": "No student transported",
      "exported": "Export done",
      "notify": "Notify",
      "change_route": "Change route",
      "apply": "Apply",
      "route_changed": "Route change scheduled"
    },
    "drawer": {
      "title": "Student's transport",
      "assignment": "Assignment",
      "times": "Times",
      "morning_pickup": "Morning pick-up {{time}}",
      "evening_dropoff": "Evening drop-off {{time}}",
      "bus": "Bus {{bus}} · {{driver}}",
      "pickups": "People allowed to collect the child",
      "remove_pickup": "Remove {{name}}",
      "pickup_name": "Name of the person",
      "pickup_relation": "Relation",
      "add_pickup": "Add",
      "name_needed": "Enter the name of the person.",
      "pickup_added": "Person added",
      "absences": "Bus absences",
      "account": "Charges on the family account",
      "charge_label": "Transport · {{month}} · {{trips}}",
      "family_told": "family told at {{time}}",
      "generated": "line generated on {{date}}",
      "pay_note": "Payment by transfer (proof in the parent space) or at the cash desk.",
      "withdraw": "Remove from transport",
      "save": "Save",
      "saved": "Student's transport saved",
      "end_title": "Remove {{name}} from transport?",
      "end_body": "The assignment ends on {{date}} and the family is notified.",
      "ended": "Removal scheduled for {{date}} · the family is notified"
    },
    "notify": {
      "title": "Notify the families",
      "recipients": "Recipients",
      "route_option_one": "Route {{number}} · {{name}} · {{count}} family",
      "route_option_other": "Route {{number}} · {{name}} · {{count}} families",
      "bus_option": "Bus {{bus}} only",
      "all_option_one": "All routes · {{count}} family",
      "all_option_other": "All routes · {{count}} families",
      "chosen_one": "The family of the {{count}} selected student will be notified.",
      "chosen_other": "The families of the {{count}} selected students will be notified.",
      "template": "Template",
      "templates": {
        "delay": "Bus delay",
        "schedule": "Schedule change",
        "replacement": "Replacement bus",
        "free": "Free message"
      },
      "delay": "Delay (min)",
      "message": "Message",
      "preview": "Preview",
      "body": {
        "delay": "{{school}}: bus {{bus}} (route {{circuit}}) is running about {{delay}} min late. Thank you for your understanding.",
        "schedule": "{{school}}: the schedule of route {{circuit}} has changed. Check the new times in your space.",
        "replacement": "{{school}}: bus {{bus}} (route {{circuit}}) is replaced today by another vehicle. Same stops and times."
      },
      "send": "Send",
      "sent_one": "Message sent to {{count}} family · SMS cost {{cost}}",
      "sent_other": "Message sent to {{count}} families · SMS cost {{cost}}",
      "channel_needed": "Choose at least one channel.",
      "body_needed": "Write the message."
    },
    "errors": {
      "route_full": "This route is full: the student goes on the waiting list.",
      "stop_not_on_route": "This stop is not on this route.",
      "bus_not_on_route": "This bus is not assigned to this route.",
      "run_logged": "This run is already logged.",
      "route_number_taken": "This route number is already used.",
      "times_invalid": "The stop times are not valid: they must go in order.",
      "stop_invalid": "This stop does not exist.",
      "stop_in_use": "This stop is used by pupils: it cannot be removed.",
      "bus_label_taken": "This vehicle label is already used.",
      "stop_required": "Choose a stop on the route.",
      "already_assigned": "This student already has a transport subscription.",
      "assignment_ended": "This subscription has ended.",
      "assignment_invalid": "Subscription not found.",
      "date_future": "A run cannot be logged for a future day.",
      "bus_no_route": "This bus is in the reserve: it has no route.",
      "bus_not_in_service": "This bus is not in service.",
      "student_not_expected": "This student is not expected on the bus this day.",
      "not_assigned": "This student has no transport subscription.",
      "no_recipient": "There is no parent to notify for this student.",
      "student_invalid": "Student not found.",
      "desk_closed": "The cash desk is closed: open it to collect.",
      "no_current_year": "There is no current school year: create one first."
    },
    "print": {
      "title": "Route sheet",
      "none": "This route sheet cannot be shown",
      "morning": "Morning {{from}} → {{to}}",
      "evening": "Evening {{from}} → {{to}}",
      "col_n": "#",
      "col_stop": "Stop",
      "col_morning": "Morning",
      "col_evening": "Evening",
      "col_students": "Students"
    }
  },
  "stages": {
    "page": {
      "title": "Internships & final projects",
      "year": "School year",
      "archived": "archived",
      "archive_year": "Archived year {{year}}: the records can be read, nothing can be changed.",
      "archive_feature": "Internships are switched off for this school: the files stay readable, nothing can be changed.",
      "summary_active_one": "{{count}} active internship",
      "summary_active_other": "{{count}} active internships",
      "summary_conventions_one": "{{count}} convention to sign",
      "summary_conventions_other": "{{count}} conventions to sign",
      "summary_week_one": "defence week of {{date}} with {{count}} conflict",
      "summary_week_other": "defence week of {{date}} with {{count}} conflicts",
      "export": "Export",
      "export_menu": { "followup": "Follow-up (Excel)", "conventions": "Signed conventions (ZIP)", "planning": "Defence planning (PDF)", "companies": "Statistics by company" },
      "plan": "Plan defences",
      "new": "New internship",
      "tabs": { "suivi": "Follow-up", "companies": "Companies", "supervision": "Supervision", "planner": "Defences", "rules": "Rules" },
      "toast": { "exported": "Export ready", "reminded_one": "Reminder sent to {{count}} signatory waiting", "reminded_other": "Reminder sent to {{count}} signatories waiting" },
      "unavailable_title": "Internships are for universities",
      "unavailable_body": "This school is not a university: there are no internships to follow here.",
      "forbidden_title": "You may not view the internships",
      "forbidden_body": "Ask the head of the school for the right to view internships."
    },
    "kpi": {
      "by_type": "Internships by type",
      "types": "Types",
      "active": "Internships in progress",
      "delta_up": "▲ {{delta}} vs {{year}}",
      "delta_down": "▼ {{delta}} vs {{year}}",
      "conventions": "Conventions to sign",
      "conventions_split": "{{company}} at the company · {{director}} at the director",
      "remind": "Remind",
      "reports": "Reports submitted",
      "reports_of": "/ {{expected}} expected",
      "reports_week": "{{count}} this week",
      "reports_late": "{{count}} late",
      "defences": "Defences scheduled",
      "defences_window": "{{from}} to {{to}}",
      "defences_none": "no defence this week",
      "conflicts_one": "{{count}} conflict",
      "conflicts_other": "{{count}} conflicts",
      "no_conflict": "no conflict",
      "at_cap": "Supervisors at cap",
      "eligible": "/ {{eligible}} eligible",
      "none_at_cap": "None at the cap"
    },
    "board": {
      "title": "Internship follow-up",
      "shown_one": "{{count}} file shown of {{total}}",
      "shown_other": "{{count}} files shown of {{total}}",
      "view": "View",
      "view_board": "Board",
      "view_list": "List",
      "search": "Search an internship",
      "search_placeholder": "Student, subject, company…",
      "pathway": "Pathway",
      "all_pathways": "All pathways",
      "supervisor": "Supervisor",
      "all_supervisors": "All supervisors",
      "no_supervisor": "No supervisor",
      "company": "Company",
      "all_companies": "All companies",
      "clear": "Clear",
      "type": "Type",
      "all": "All",
      "alerts": "Alerts",
      "empty": "No file matches.",
      "clear_filters": "Clear filters",
      "none": "No files",
      "pair": "pair",
      "entrepreneurial": "Entrepreneurial project",
      "to_assign": "To assign",
      "col": { "students": "Student(s)", "type": "Type", "subject": "Subject", "company": "Company", "supervisor": "Supervisor", "step": "Step", "deadline": "Deadline", "alerts": "Alerts" },
      "select_all": "Select all",
      "select": "Select {{name}}",
      "more": "Show more",
      "archive_note": "Files closed more than 30 days ago are in the archive.",
      "bulk_remind": "Remind",
      "bulk_supervisor": "Change supervisor",
      "export_list": "Export the filtered list"
    },
    "record": {
      "stepper": "Lifecycle",
      "pair": "Pair",
      "solo": "Solo",
      "advance": "Move to: {{state}}",
      "archived": "Archived",
      "remind": "Remind",
      "more": "More actions",
      "loading": "Internship file",
      "edit": "Edit",
      "save": "Save",
      "tabs": { "dossier": "File", "convention": "Convention & documents", "followup": "Follow-up & evaluation", "defence": "Defence & mark", "history": "History" },
      "menu": {
        "convention": "Generate the convention",
        "convention_print": "Print the convention",
        "letter": "Assignment letter",
        "attestation": "Internship certificate template",
        "followup": "Follow-up sheet",
        "interrupt": "Interrupt the internship",
        "abandon": "Justified withdrawal"
      },
      "toast": {
        "advanced": "Step: {{state}}",
        "reminded": "Reminder sent to the students and the supervisor",
        "saved": "Changes saved",
        "generated": "Convention generated",
        "signed": "Signature recorded",
        "uploaded": "File uploaded · version {{version}}",
        "meeting": "Meeting added",
        "eval_emailed": "Link sent to {{name}}",
        "eval_renewed": "Link renewed",
        "copied": "Link copied",
        "ended": "Internship ended"
      },
      "missing": {
        "student": "student",
        "company": "company",
        "supervisor": "supervisor",
        "director": "director",
        "followup": "Follow-up meetings",
        "visit": "Company visit",
        "report": "Report",
        "attestation": "Internship certificate",
        "non_plagiarism": "Non-plagiarism statement",
        "fee_receipt": "Deposit fee receipt",
        "similarity": "Similarity report",
        "evaluation": "Company evaluation",
        "party_of": "{{party}} ({{name}})"
      },
      "validator": { "supervisor": "supervisor", "coordinator": "coordinator", "department_head": "department head", "master_committee": "master's committee" },
      "contract": { "permanent": "Permanent", "vacataire": "Visiting", "flat": "Flat fee" },
      "nature": { "company": "Company project", "research": "Applied research", "case_study": "Case study", "business_plan": "Business plan" },
      "lang": { "fr": "French", "en": "English", "ar": "Arabic" },
      "kind": {
        "report": "Report",
        "specs": "Specifications",
        "convention_scan": "Signed convention (scan)",
        "insurance": "Insurance certificate",
        "attestation": "Internship certificate",
        "non_plagiarism": "Non-plagiarism statement",
        "fee_receipt": "Deposit fee receipt",
        "final_version": "Final version",
        "other": "Other"
      },
      "form": { "onsite": "In person", "video": "Video call", "company_visit": "Company visit", "mid_review": "Mid-term evaluation" },
      "criteria": { "learning": "Learning", "autonomy": "Autonomy", "analysis": "Analysis", "organisation": "Organisation", "communication": "Communication", "contribution": "Contribution" },
      "level": { "excellent": "Excellent", "very_good": "Very good", "good": "Good", "fair": "Fair", "insufficient": "Insufficient" },
      "dossier": {
        "students_one": "Student",
        "students_other": "Students",
        "cin": "ID ••••{{last4}}",
        "student_record": "Student record",
        "add_pair": "Add a pair",
        "pair_title": "Add a second student",
        "pair_add": "Add",
        "company_title": "Change the host organisation",
        "stage": "Internship",
        "type": "Type",
        "period": "Period",
        "volume": "Volume",
        "hours_week": "{{hours}} h / week",
        "credits": "Credits",
        "credits_value_one": "{{count}} credit",
        "credits_value_other": "{{count}} credits",
        "nature": "Nature",
        "language": "Language",
        "hours": "Hours / week",
        "duration_warning": "The duration is outside {{min}} to {{max}} weeks.",
        "host": "Host organisation",
        "company": "Company",
        "tutor": "Tutor",
        "rating": "Host rating",
        "rating_none": "Not rated",
        "rating_n": "{{count}} / 5",
        "write_tutor": "Write to the tutor",
        "change": "Change",
        "no_company": "Entrepreneurial project, no host organisation.",
        "attach": "Attach a company",
        "supervision": "Academic supervision",
        "assign": "Assign",
        "assign_one": "Assign a supervisor",
        "load": "Load this year",
        "co_supervisor": "Co-supervisor",
        "none": "None",
        "add": "Add",
        "no_supervisor": "No supervisor. The subject cannot be validated.",
        "subject": "Subject and specifications",
        "validate": "Validate the subject",
        "validated": "Validated on {{date}} · {{validator}}",
        "title_label": "Title",
        "problem": "Problem statement",
        "no_problem": "No problem statement yet.",
        "keywords": "Keywords",
        "keywords_hint": "Up to {{max}}, separated by commas",
        "specs": "Specifications v{{version}}"
      },
      "conv": {
        "title": "Tripartite convention",
        "status": { "none": "Not generated", "signing": "Signing", "signed": "Signed", "terminated": "Terminated" },
        "empty": "The convention is generated once the subject, the supervisor and the company are set.",
        "generate": "Generate the convention",
        "party": { "student": "Student", "company": "Host organisation (stamp)", "supervisor": "Academic supervisor", "director": "School director" },
        "signed_on": "Signed on {{date}}",
        "signature_date": "Signature date, {{name}}",
        "record": "Record the signature",
        "record_title": "Record this signature?",
        "record_body": "The signature of {{name}} is recorded on {{date}}.",
        "record_confirm": "Record",
        "remind": "Remind",
        "insurance": "Liability insurance certificate",
        "insurance_received": "received",
        "insurance_required": "required before signature",
        "originals": "{{originals}} originals · clauses {{version}} · allowance {{amount}}",
        "no_allowance": "none"
      },
      "deposit": { "title": "Deposit", "complete": "Complete", "review": "In review", "closed": "Not open yet", "note": "The deposit opens at the end of the internship. An incomplete file cannot be submitted." },
      "checklist": {
        "followup": "Follow-up meetings",
        "visit": "Company visit",
        "report": "Report",
        "attestation": "Internship certificate",
        "non_plagiarism": "Non-plagiarism statement",
        "fee_receipt": "Deposit fee receipt",
        "similarity": "Similarity report under {{max}} %",
        "evaluation": "Company evaluation"
      },
      "attach": {
        "title": "Attachments",
        "upload": "Upload a file",
        "none": "No file yet.",
        "meta": "v{{version}} · {{date}} · {{by}}",
        "pages_one": "{{count}} page",
        "pages_other": "{{count}} pages",
        "version": "v{{version}}",
        "versions_of": "Versions of {{name}}",
        "version_item": "v{{version}} · {{date}}",
        "version_score": "similarity {{score}} %",
        "preview": "Preview {{name}}",
        "download": "Download {{name}}",
        "similarity": "Similarity {{score}} %",
        "gauge": "Similarity {{score}} % (limit {{max}} %)",
        "limit": "limit {{max}} %"
      },
      "upload": {
        "title": "Upload a file",
        "kind": "Kind",
        "file": "File",
        "file_hint": "PDF, Word, PNG or JPG · {{max}} MB at most",
        "file_needed": "Choose a file.",
        "reject_type": "This file type is not accepted.",
        "reject_size": "This file is over {{max}} MB.",
        "similarity": "Similarity (%)",
        "tool": "Tool",
        "pages": "Pages",
        "note": "Note",
        "submit": "Upload"
      },
      "followup": {
        "journal": "Follow-up journal",
        "add": "Meeting",
        "opens": "The journal opens once the convention is signed.",
        "none": "No meeting yet.",
        "student_signed": "Student signed",
        "signature_requested": "Student signature requested",
        "supervisor_signed": "Supervisor signed",
        "mark": "{{mark}} / 20",
        "remove": "Remove the meeting of {{date}}",
        "remove_title": "Remove this meeting?",
        "remove_body": "The meeting of {{date}} leaves the journal.",
        "remove_confirm": "Remove",
        "mid": "Mid-term evaluation",
        "mid_due": "Due on {{date}}",
        "mid_done": "Done",
        "mid_done_mark": "Done · {{mark}} / 20",
        "mid_todo": "To do",
        "evaluation": "Evaluation by the company",
        "no_company": "No host organisation: evaluated by the jury only.",
        "status": { "none": "Not sent", "sent": "Link sent", "received": "Received on {{date}}", "expired": "Link expired" },
        "intro": "The tutor fills in the form from a personal link, without an account.",
        "copy": "Copy",
        "resend": "Resend",
        "send": "Send the link",
        "valid_until": "Valid until {{date}}",
        "auto": "Sent automatically before the end of the internship.",
        "auto_days": "Reception required {{days}} days before the defence.",
        "appreciation": "Overall appreciation",
        "quote": "“{{comment}}” · {{name}}"
      },
      "meeting": {
        "title": "New follow-up meeting",
        "date": "Date",
        "form": "Form",
        "notes": "Activities and progress",
        "mark": "Mark (/20)",
        "student_signed": "The student has signed",
        "submit": "Add"
      },
      "end": {
        "title_interrupted": "Interrupt the internship",
        "title_abandoned": "Justified withdrawal",
        "hint": "The convention is terminated. This cannot be undone.",
        "note": "Justification",
        "note_needed": "Give the justification.",
        "confirm": "Confirm"
      },
      "history": { "title": "History", "none": "No move yet." }
    },
    "new": {
      "title": "New internship",
      "type": "Type",
      "pathway": "Pathway and level",
      "pathway_none": "Pick a student",
      "student": "Student",
      "pair": "Pair",
      "pair_ok": "allowed for this type",
      "pair_locked": "not allowed (rules)",
      "second": "Second student",
      "company": "Host organisation (directory)",
      "company_hint": "Leave empty for an entrepreneurial project",
      "company_unknown": "Choose a company from the list, or empty the field.",
      "tutor": "Professional tutor",
      "tutor_after": "Choose the company first",
      "tutor_none": "—",
      "tutor_new": "+ New tutor",
      "tutor_name": "Tutor name",
      "tutor_title": "Position",
      "tutor_phone": "Phone",
      "tutor_email": "E-mail",
      "tutor_add": "Add the tutor",
      "tutor_name_needed": "Give the tutor's name.",
      "subject": "Subject",
      "start": "Start",
      "end": "End",
      "supervisor": "Academic supervisor (optional)",
      "supervisor_later": "Later",
      "option": "{{name}} · {{load}}/{{cap}}",
      "option_cap": "{{name}} · {{load}}/{{cap}} · cap",
      "note": "The tripartite convention is generated once the supervisor and the company are chosen. Liability insurance is required before signature.",
      "submit": "Create the file",
      "created": "Internship created · {{names}}"
    },
    "supervisor": {
      "title": "Assign an academic supervisor",
      "group": "Teachers",
      "role": "Role",
      "role_supervisor": "Supervisor",
      "role_co_supervisor": "Co-supervisor",
      "legend": "Load = the year's final projects and theses · pay follows each teacher's contract",
      "override": "With dispensation",
      "override_hint": "The director's dispensation: assign past the cap",
      "load": "Load {{load}} / {{cap}}",
      "cap_reached": "cap reached",
      "calc": {
        "included": "included in the flat fee ({{position}}/{{projects}})",
        "no_rate": "no rate set",
        "hourly": "{{hours}} h × {{rate}}",
        "students_one": "{{count}} student × {{rate}}",
        "students_other": "{{count}} students × {{rate}}"
      },
      "assign": "Assign",
      "pick": "Choose a supervisor.",
      "assigned": "{{name}} assigned · notification sent",
      "bulk_for_one": "{{count}} file",
      "bulk_for_other": "{{count}} files",
      "bulk_done_one": "{{count}} file assigned to {{name}}",
      "bulk_done_other": "{{count}} files assigned to {{name}}"
    },
    "types": {
      "initiation": { "short": "Initiation", "long": "Initiation internship" },
      "perfectionnement": { "short": "Advanced", "long": "Advanced internship" },
      "pfe_licence": { "short": "Bachelor PFE", "long": "Bachelor PFE" },
      "pfe_ingenieur": { "short": "Engineering PFE", "long": "Engineering PFE" },
      "master": { "short": "Master thesis", "long": "Master's thesis" }
    },
    "states": {
      "search": { "label": "Search", "tip": "Draft, looking for a host, request filed" },
      "subject_validated": { "label": "Subject validated", "tip": "Subject validated by the supervisor and the coordinator (or the master's committee)" },
      "convention": { "label": "Convention", "tip": "Tripartite convention generated, signatures under way" },
      "in_progress": { "label": "In progress", "tip": "Convention signed, internship under way, regular follow-up" },
      "deposit": { "label": "Deposit", "tip": "Deposit window, report submitted, plagiarism check" },
      "authorized": { "label": "Authorized", "tip": "Defence authorized by the supervisor, company evaluation received, jury planned" },
      "defended": { "label": "Defended", "tip": "Defence held, mark entered, minutes to sign" },
      "corrections": { "label": "Corrections", "tip": "Validated subject to corrections" },
      "closed": { "label": "Closed", "tip": "Validated, final version archived, supervision payable" },
      "interrupted": { "label": "Interrupted", "tip": "The internship was interrupted" },
      "abandoned": { "label": "Abandoned", "tip": "Abandoned with a justification" },
      "not_validated": { "label": "Not validated", "tip": "The jury did not validate the work" }
    },
    "alerts": {
      "convention": "Convention unsigned",
      "late": "Late deposit",
      "similarity": "Plagiarism over threshold",
      "no_supervisor": "No supervisor",
      "followup": "Follow-up overdue",
      "corrections": "Corrections",
      "pill": {
        "convention": "Convention unsigned",
        "late": "Late deposit",
        "similarity": "Plagiarism {{score}} % > {{max}} %",
        "no_supervisor": "No supervisor",
        "followup": "No meeting for {{days}} d",
        "corrections": "Corrections D-{{days_left}}"
      }
    },
    "deadline": {
      "deposit": "Due {{date}}",
      "deposit_late": "Due {{date}} · {{days}} d late",
      "corrections": "Corrections before {{date}}",
      "start": "Convention before {{date}}",
      "end": "End {{date}}",
      "defence": "Defence {{day}} · {{time}}",
      "defence_no_time": "Defence {{day}}",
      "pv": "Minutes to sign"
    },
    "companies": {
      "title": "Host organisation directory",
      "import": "Import",
      "add": "Add a company",
      "search": "Search a company",
      "search_ph": "Company name, tax number, city…",
      "all_sectors": "All sectors",
      "sort": "Sort",
      "sort_name": "Sort: name",
      "sort_interns": "Sort: interns",
      "sort_rating": "Sort: rating",
      "col": { "name": "Company", "tax_id": "Tax number", "sector": "Sector", "city": "City", "tutors": "Tutors", "interns": "Interns", "rating": "Rating", "framework": "Framework agreement", "actions": "Actions" },
      "active_one": "{{count}} internship in progress",
      "active_other": "{{count}} internships in progress",
      "interns_chart": "Interns per year: {{values}}",
      "framework": { "signed": "Since {{year}}", "internal": "Internal", "none": "None", "negotiating": "Negotiating" },
      "empty": "No company found.",
      "edit": "Edit {{name}}",
      "toast": { "added": "Company added to the directory", "updated": "Company updated", "contact_added": "Contact added" },
      "dialog": {
        "add": "Add a company",
        "edit": "Edit · {{name}}",
        "name": "Company name",
        "tax_id": "Tax number",
        "sector": "Sector",
        "city": "Governorate · city",
        "legal_rep": "Legal representative",
        "phone": "Phone",
        "email": "E-mail",
        "address": "Address",
        "tutor_name": "Tutor name",
        "tutor_title": "Tutor title",
        "tutor_phone": "Tutor phone",
        "tutor_legend": "Main tutor (internship supervisor)",
        "framework": "Framework agreement",
        "since": "Signed since (year)",
        "status": "Status",
        "partner": "Partner",
        "blacklisted": "Blacklist (no longer offered)",
        "fw": { "none": "None", "signed": "Signed", "negotiating": "Negotiating", "internal": "Internal" },
        "save": "Save"
      },
      "drawer": {
        "tax": "Tax no. {{id}}",
        "blacklisted": "Blacklisted",
        "tile_interns": "Interns hosted",
        "tile_rating": "Average rating",
        "tile_rating_by": "by our supervisors",
        "contacts": "Contacts and tutors",
        "contact_add": "Contact",
        "write": "Write to {{name}}",
        "per_year": "Interns per year",
        "this_year": "Interns this year",
        "none_this_year": "None this year.",
        "blacklist": "Blacklist",
        "edit": "Edit",
        "new_internship": "New internship here",
        "contact_title": "New contact",
        "contact_name": "Name",
        "contact_job": "Title",
        "contact_phone": "Phone",
        "contact_email": "E-mail",
        "contact_tutor": "Tutor",
        "contact_submit": "Add"
      }
    },
    "supervision": {
      "load": {
        "title": "Supervision load",
        "sub": "Final projects and theses, counted by project",
        "chart": "Supervision load",
        "ok": "under 75 %",
        "warn": "75 % and over",
        "full": "cap reached",
        "short": "summer internships (not counted)",
        "cap": "cap",
        "vacataire_note": "Visiting-teacher cap: {{cap}} projects a year (rule enabled). An assignment beyond it needs the director's dispensation.",
        "empty": "No supervision this year."
      },
      "scale": {
        "title": "Scale by contract",
        "edit": "Edit scale",
        "permanent": "Permanent",
        "visiting": "Visiting",
        "flat": "Flat contract",
        "by_student": "Per student",
        "by_project": "Per project",
        "by_hour": "Per hour",
        "flat_pill": "Flat",
        "pfe": "Final project / thesis",
        "short": "Summer internship",
        "jury": "Jury (president, reporter)",
        "hours": "{{hours}} h × hourly rate",
        "cap": "Cap",
        "cap_value": "{{cap}} projects / year",
        "flat_line": "Final project supervision (up to {{projects}})",
        "flat_value": "Set for each teacher",
        "trigger_assignment": "Payable once supervision starts",
        "trigger_defence": "Payable after the defence",
        "trigger_archive": "Payable after archiving",
        "note": "{{trigger}} (rule “payment trigger”). No legal amount published: values specific to the school."
      },
      "dialog": {
        "title": "Supervision scale",
        "pfe": "Final project / thesis ({{currency}})",
        "short": "Summer internship ({{currency}})",
        "jury": "Jury, per defence ({{currency}})",
        "count": "Counted per",
        "count_student": "Student",
        "count_project": "Project",
        "hours_pfe": "Hours · final project",
        "hours_short": "Hours · summer internship",
        "hours_jury": "Hours · jury",
        "flat_projects": "Flat covers up to (projects)",
        "trigger": "Payment trigger",
        "trigger_assignment": "When supervision starts",
        "trigger_defence": "After the defence",
        "trigger_archive": "After archiving",
        "save": "Save and recalculate",
        "saved": "Scale saved, amounts recalculated",
        "number": "Enter a number"
      },
      "pay": {
        "title": "Supervision pay",
        "statements": "Statements",
        "send": "Send to Payroll",
        "col": { "teacher": "Teacher", "contract": "Contract", "pfe": "Final projects", "short": "Internships", "juries": "Juries", "calc": "Calculation", "due": "Due to date", "forecast": "Forecast", "status": "Status" },
        "contract": { "permanent": "Permanent", "vacataire": "Visiting", "flat": "Flat" },
        "status": { "to_send": "To send", "sent": "Sent · {{month}}", "none": "—" },
        "total_one": "Total · {{count}} supervisor",
        "total_other": "Total · {{count}} supervisors",
        "calc": { "term": "{{count}} × {{rate}}", "hourly": "{{hours}} h × {{rate}} {{currency}}", "hourly_no_rate": "{{hours}} h · no hourly rate", "flat": "flat {{amount}}", "none": "—" }
      },
      "send": {
        "title": "Send to Payroll",
        "lead": "The amounts due to date become “Supervision” lines in the {{month}} payroll.",
        "month": "Payroll month",
        "total": "Total",
        "none": "Nothing to send.",
        "submit": "Send",
        "done_one": "{{count}} line added to the payroll",
        "done_other": "{{count}} lines added to the payroll",
        "skipped": "Not sent",
        "skipped_reason": { "no_payslip": "no payslip in this month's payroll", "month_not_buildable": "this month's payroll cannot be built yet" },
        "held": "Validated payslips: {{names}}."
      }
    },
    "rules": {
      "title": "Internship and final project rules",
      "hint": "Every rule exists everywhere; switch it on and adjust its value. The default stays visible.",
      "groups": "Rule groups",
      "common": "Common to all",
      "modified_none": "No customised rule",
      "modified_one": "{{count}} customised rule",
      "modified_other": "{{count}} customised rules",
      "reset_all": "Reset all",
      "reset_title": "Reset every rule?",
      "reset_body_one": "{{count}} customised rule goes back to its default value.",
      "reset_body_other": "{{count}} customised rules go back to their default values.",
      "reset_done": "Every rule is back to its default",
      "save": "Save",
      "saved": "Rules saved · applied to new files",
      "read_only": "You can read the rules but not change them.",
      "source_tbc": "to be confirmed",
      "choice": {
        "pay_trigger": { "assignment": "When supervision starts", "defence": "After the defence", "archive": "After archiving" },
        "pay_count": { "student": "Per student", "project": "Per project" },
        "subject_validator": { "supervisor": "Supervisor", "coordinator": "Teaching coordinator", "department_head": "Head of department", "master_committee": "Master's committee" }
      },
      "weights": { "label": "Grading grid", "hint": "Supervisor · reporter · presentation · bonus (total 100 %)", "supervisor": "Supervisor", "reporter": "Reporter", "presentation": "Presentation", "bonus": "Bonus", "total": "Total {{total}} %", "total_bad": "Total {{total}} % · must be 100" },
      "label": {
        "cap_permanent": "Supervision cap · permanent teachers",
        "cap_vacataire": "Supervision cap · visiting teachers",
        "in_app_signature": "Signatures recorded in the app",
        "originals": "Paper originals of the convention",
        "followup_alert_days": "Follow-up reminder",
        "company_visit": "Company visit required",
        "evaluation_link_days": "Evaluation link validity",
        "evaluation_send_days": "Evaluation link sent",
        "grade_cap": "Mark above the cap needs a justification",
        "defence_minutes": "Length of a defence",
        "pay_trigger": "Supervision pay triggered",
        "final_archive": "Digital archive of the final version",
        "min_weeks": "Minimum duration",
        "max_weeks": "Maximum duration",
        "credits": "ECTS credits",
        "pair_allowed": "Pair allowed",
        "convention_required": "Tripartite convention required",
        "insurance_required": "Liability insurance required",
        "defence_required": "Defence required",
        "jury_min": "Minimum jury",
        "similarity_max": "Similarity threshold (plagiarism)",
        "deposit_days": "Deposit deadline",
        "pages_max": "Maximum report pages",
        "corrections_days": "Corrections period",
        "evaluation_days": "Company evaluation required",
        "subject_validator": "Subject validated by",
        "extension_months": "Maximum extension",
        "mid_review": "Mid-term evaluation"
      },
      "hint_of": {
        "cap_permanent": "Final projects a year, counted by project",
        "cap_vacataire": "Beyond it, the director's dispensation",
        "in_app_signature": "Otherwise the scanned signed copy is also required",
        "originals": "School, company, student",
        "followup_alert_days": "Alert if no meeting has been signed for",
        "company_visit": "At least one visit by the supervisor",
        "evaluation_link_days": "Personal link of the tutor, no account",
        "evaluation_send_days": "Days before the end of the internship",
        "grade_cap": "Report of the president and evidence required",
        "defence_minutes": "Presentation, questions and deliberation",
        "pay_trigger": "Line sent to Payroll",
        "final_archive": "Confidentiality option for sensitive projects",
        "min_weeks": "In weeks, from the start to the end of the internship",
        "max_weeks": "Beyond it, an amendment to the convention",
        "credits": "Credits granted when the internship is validated",
        "pair_allowed": "Two students on one subject, one mark for both",
        "convention_required": "Student, host company and school",
        "insurance_required": "Certificate attached before signing",
        "defence_required": "Otherwise graded on the report and the company's form",
        "jury_min": "President, reporter, supervisor; the supervisor must attend",
        "similarity_max": "Above it, the deposit is blocked and the report goes back for correction",
        "deposit_days": "Days after the end; later, the file becomes late",
        "pages_max": "Annexes excluded",
        "corrections_days": "After “validated subject to corrections”, approved by the president",
        "evaluation_days": "Link without account sent to the tutor",
        "subject_validator": "Who approves the subject before the convention",
        "extension_months": "To finish and defend the project",
        "mid_review": "Formal meeting with the supervisor"
      }
    },
    "planner": {
      "title": "Planning · week of {{date}}",
      "prev": "Previous week",
      "next": "Next week",
      "days": "Day",
      "day_conflict": "Conflict",
      "hint": "Drag a defence, or click it then click a cell.",
      "auto": "Auto-placement",
      "convocations": "Convocations",
      "publish": "Publish the planning",
      "lunch": "Lunch break · {{from}} – {{to}}",
      "move_here": "Move here: {{room}}, {{time}}",
      "provisional": "provisional",
      "missing": "Missing member",
      "legend": "Legend",
      "conflicts": {
        "title": "Conflicts of the day",
        "none": "No conflict this day.",
        "move": "Move",
        "add_reporter": "Add a reporter",
        "room_busy": "Room booked twice",
        "room_busy_text": "{{room}} at {{time}}: {{students}}",
        "teacher_busy": "Teacher in two juries",
        "teacher_busy_text": "{{teacher}} in two juries at {{time}} ({{roles}})",
        "quorum": "Quorum not reached",
        "quorum_text": "Incomplete jury for {{students}}: {{count}} / {{min}} members",
        "quorum_text_supervisor": "Incomplete jury for {{students}}: {{count}} / {{min}} members (supervisor missing)"
      },
      "selection": {
        "title": "Selection",
        "empty": "Click a defence to see its jury and move it.",
        "cancel": "Cancel",
        "move_hint": "Click a cell to move this defence.",
        "place_hint": "Click a cell to plan this defence.",
        "to_designate": "To be named",
        "open": "Open the file"
      },
      "unscheduled": { "title": "To schedule", "none": "Every authorized internship has its defence.", "supervisor": "Supervisor: {{name}}" },
      "toast": {
        "moved": "Moved to {{time}}, {{room}} · convocations updated",
        "moved_conflict": "Moved · still in conflict",
        "planned": "Defence planned at {{time}}, {{room}}",
        "published_one": "Planning published · {{count}} defence, students and juries notified",
        "published_other": "Planning published · {{count}} defences, students and juries notified",
        "auto": "Auto-placement: {{moved}} moved, {{remaining}} left to fix",
        "convocations_one": "Convocations sent to {{count}} person",
        "convocations_other": "Convocations sent to {{count}} people"
      }
    },
    "defence": {
      "jury_title": "Jury",
      "roles": { "president": "President", "reporter": "Reporter", "supervisor": "Supervisor", "member": "Member", "invited": "Invited", "forfait": "Flat fee" },
      "invited_name": "Invited (name)",
      "invited_hint": "The company tutor, who sits without a vote.",
      "add_member": "Add a member",
      "member_n": "Member {{n}}",
      "remove_member": "Remove",
      "save_jury": "Save the jury",
      "jury_saved": "Jury saved",
      "jury_reason": {
        "duplicate_teacher": "the same teacher sits twice",
        "role_count": "a seat is held more than once",
        "external_needs_name": "an invited guest needs a name"
      },
      "not_authorized": {
        "title": "Defence not yet authorized",
        "deposit": "Complete deposit",
        "similarity": "Similarity under {{max}} %",
        "evaluation": "Company evaluation received",
        "authorization": "Supervisor's authorization"
      },
      "card": {
        "title": "Defence",
        "date": "Date",
        "room": "Room",
        "duration": "Duration",
        "minutes": "{{count}} min",
        "change": "Change",
        "complete": "Complete jury · {{min}} members minimum · supervisor present",
        "empty": "No defence is scheduled yet. Plan it in the Defences tab.",
        "report_only": "Graded on the report: no defence for this type."
      },
      "components": { "supervisor": "Supervisor", "reporter": "Reporter", "presentation": "Oral presentation", "bonus": "Bonus" },
      "mention": { "tres_bien": "Very good", "bien": "Good", "assez_bien": "Fairly good", "passable": "Pass" },
      "grid": {
        "title": "Grading grid",
        "weights": "weights: {{type}} rules",
        "component": "Component",
        "weight": "Weight",
        "mark": "Mark",
        "supervisor": "Supervisor · attendance, delivery, autonomy",
        "reporter": "Reporter · content, writing, contribution",
        "presentation": "Oral presentation and answers",
        "bonus": "Bonus · patent, deployment, article",
        "final": "Final mark",
        "out_of": "/ 20",
        "decision": "Jury decision",
        "decisions": { "validated": "Validated", "corrections": "Validated subject to corrections", "not_validated": "Not validated" },
        "justification": "Justification",
        "justification_note": "Mark above {{cap}}: a justification report from the president and the evidence are required (rule on).",
        "corrections_due": "Corrections due before {{date}} ({{days}} days) · approval by the president",
        "save": "Save",
        "saved": "Grade saved",
        "minutes": "Generate the minutes"
      }
    },
    "print": {
      "unknown": "This paper does not exist.",
      "pv_none": "The minutes need a recorded grade.",
      "place_date": "{{city}}, {{date}}",
      "convention": {
        "title": "Internship agreement",
        "between": "Between the undersigned:",
        "party_school": "The university {{school}}, represented by {{director}}, {{title}}.",
        "party_company": "The host company {{company}}, represented by {{tutor}}.",
        "party_students": "The student(s) {{students}} ({{level}}).",
        "legal_rep": "its legal representative",
        "article_subject": "Purpose: the student(s) carry out an internship on the subject «{{title}}», from {{from}} to {{to}}, {{hours}} hours a week.",
        "article_subject_no_hours": "Purpose: the student(s) carry out an internship on the subject «{{title}}», from {{from}} to {{to}}.",
        "article_supervision": "Supervision: the academic supervisor is {{supervisor}}; the professional tutor is {{tutor}}.",
        "article_allowance": "Allowance: the company pays a monthly allowance of {{amount}}.",
        "article_no_allowance": "Allowance: no allowance is planned.",
        "article_insurance": "Insurance: the student stays covered by civil liability insurance for the whole internship and the way to and from the company.",
        "article_confidentiality": "Confidentiality: the student keeps confidential the information of the company learnt during the internship.",
        "article_evaluation": "Evaluation: the company tutor evaluates the student at the end; the university validates the internship with a report and a defence.",
        "article_termination": "Termination: any party may end the agreement by written notice, the university being informed at once.",
        "copies_one": "Done in {{count}} copy",
        "copies_other": "Done in {{count}} copies",
        "signatures": "Signatures",
        "signature": "Signature",
        "signed_on": "Signed on {{date}}",
        "party": { "student": "Student", "company": "Host company", "supervisor": "Academic supervisor", "director": "Director" }
      },
      "letter": {
        "title": "Assignment letter",
        "to": "To {{supervisor}}",
        "body": "We have the pleasure to appoint you academic supervisor of the {{type}} of {{students}} ({{level}}) on the subject «{{title}}», carried out at {{company}} from {{from}} to {{to}}.",
        "no_company": "an entrepreneurial project",
        "at_company": "at {{name}}",
        "duties": "You follow the work during the internship, validate the report before the deposit and sit on the defence jury.",
        "closing": "Yours faithfully,"
      },
      "attestation": {
        "title": "Internship certificate",
        "to_fill": "Template to be completed, signed and stamped by the host company",
        "legal_rep": "its legal representative",
        "body": "The company {{company}}, represented by {{tutor}}, certifies that {{students}} ({{level}}) did an internship in its premises from {{from}} to {{to}} on the subject «{{title}}».",
        "activities": "Activities carried out:",
        "remarks": "Remarks of the company:",
        "done_at": "Done at ______________, on ______________",
        "signature": "Signature and stamp of the company"
      },
      "followup": {
        "title": "Follow-up sheet",
        "supervised_by": "supervised by {{name}}",
        "col_date": "Date",
        "col_form": "Form",
        "col_notes": "Activities and notes",
        "col_student": "Student",
        "col_supervisor": "Supervisor",
        "forms": { "onsite": "On site", "video": "Video call", "company_visit": "Company visit", "mid_review": "Mid-term evaluation" },
        "midterm_mark": "Mid-term evaluation · {{mark}} / 20",
        "signed": "Signed"
      },
      "pv": {
        "title": "Defence minutes",
        "held": "Defence held on {{date}} at {{time}}, room {{room}}.",
        "jury": "Jury",
        "col_role": "Role",
        "col_name": "Name",
        "total": "Final mark:",
        "mention": "Honours: {{mention}}",
        "decision": "Decision: {{decision}}",
        "justification": "Justification: {{text}}",
        "corrections": "Corrections due before {{date}}",
        "signatures": "Signatures"
      },
      "planning": { "title": "Defence planning · week of {{date}}", "none": "No defence is planned this week.", "col_time": "Time" },
      "statements": {
        "title": "Supervision statement",
        "none": "No supervision or jury pay this year.",
        "col_subject": "Students and subject",
        "col_kind": "Kind",
        "col_quantity": "Quantity",
        "col_rate": "Rate",
        "col_amount": "Amount",
        "kinds": { "encadrement": "Supervision", "jury": "Jury" },
        "units": { "student_one": "{{count}} student", "student_other": "{{count}} students", "project_one": "{{count}} project", "project_other": "{{count}} projects", "hour_one": "{{count}} hour", "hour_other": "{{count}} hours" },
        "no_rate": "No rate",
        "total": "Total",
        "received_by": "Received by the teacher, signature:"
      }
    },
    "errors": {
      "pair_not_allowed": "This type of internship is done alone.",
      "student_busy": "{{student}} already has an internship of this type this year.",
      "tutor_not_of_company": "This tutor does not belong to the chosen company.",
      "company_blacklisted": "This company is on the blacklist: it cannot take a new internship.",
      "dates_invalid": "The end date must come after the start date.",
      "no_current_year": "There is no current school year.",
      "supervisor_at_cap": "This supervisor is at the cap ({{load}} of {{cap}} projects).",
      "override_forbidden": "Only a user holding the director's dispensation can go past the cap.",
      "convention_locked": "A signature is recorded: the company, tutor, students and dates can no longer change.",
      "no_company": "This internship has no host company.",
      "party_invalid": "This party does not sign this convention.",
      "already_signed": "This party has already signed.",
      "no_convention": "No convention has been generated yet.",
      "state_moved": "The internship has moved on: signatures can no longer be recorded or undone.",
      "state_final": "This internship is closed: it can no longer be changed.",
      "supervisor_mismatch": "The supervisor's seat on the jury must be the internship's own supervisor.",
      "upload_invalid": "This file cannot be accepted (PDF, Word, PNG or JPG, 20 MB at most).",
      "similarity_invalid": "The similarity score must be between 0 and 100.",
      "mark_invalid": "A mark only exists for the mid-term evaluation, between 0 and 20.",
      "no_tutor": "There is no tutor with an e-mail address to send the link to.",
      "evaluation_received": "The company has already sent its evaluation.",
      "evaluation_closed": "This evaluation is closed.",
      "scores_invalid": "Every criterion needs a level of the scale.",
      "no_scans": "No signed convention has been scanned yet.",
      "same_teacher": "The supervisor and the co-supervisor must be two different teachers.",
      "run_validated": "This month's payroll is validated: the lines cannot be added.",
      "nothing_to_send": "There is nothing to send to payroll.",
      "not_authorized": "The defence is not authorized yet.",
      "defence_exists": "A defence is already planned for this internship.",
      "room_invalid": "This room cannot host a defence.",
      "defence_published": "A published defence cannot be removed.",
      "jury_invalid": "This jury is not valid ({{reason}}).",
      "conflicts_one": "Cannot publish: {{count}} conflict to resolve.",
      "conflicts_other": "Cannot publish: {{count}} conflicts to resolve.",
      "nothing_published": "No defence of this week is published yet.",
      "weights_invalid": "The four weights of the grid must add up to 100 %.",
      "marks_invalid": "The mark ({{component}}) must be between 0 and {{max}}.",
      "not_gradable": "This internship cannot be graded yet.",
      "justification_required": "A mark above the cap needs a justification.",
      "name_required": "The company needs a name.",
      "tax_id_taken": "Another company already has this tax number.",
      "contact_in_use": "This contact is the tutor of an internship: it cannot be removed.",
      "state_final": "This internship is closed or ended: it cannot move any more.",
      "defence_held": "The defence has taken place: the jury's decision settles this internship, it can no longer be ended.",
      "no_title": "Give the subject a title before validating it.",
      "no_supervisor": "Assign an academic supervisor first.",
      "convention_unsigned": "Signatures are missing: {{missing}}.",
      "insurance_missing": "The insurance certificate is missing.",
      "scan_missing": "The scanned signed copy of the convention is missing.",
      "deposit_incomplete": "The deposit is incomplete: {{missing}}.",
      "similarity_over": "The similarity score ({{score}} %) is over the limit ({{max}} %).",
      "evaluation_missing": "The company evaluation has not been received.",
      "defence_not_scheduled": "No defence is scheduled.",
      "jury_incomplete": "The jury is incomplete ({{count}} teachers of {{min}}).",
      "supervisor_missing": "The supervisor must sit on the jury.",
      "not_graded": "The jury's decision has not been recorded.",
      "final_version_missing": "The final version of the report is missing."
    }
  },
  "public_pages": {
    "evaluation": {
      "title": "Intern evaluation",
      "heading": "Evaluation of the intern",
      "intro": "You received this personal link as the company tutor. Rate each criterion, no account is needed.",
      "interns": "Intern(s)",
      "subject": "Subject",
      "company": "Company",
      "period": "Period",
      "period_range": "{{from}} to {{to}}",
      "criteria": { "learning": "Learning", "autonomy": "Autonomy", "analysis": "Analysis", "organisation": "Organisation", "communication": "Communication", "contribution": "Contribution" },
      "levels": { "excellent": "Excellent", "very_good": "Very good", "good": "Good", "fair": "Fair", "insufficient": "Insufficient" },
      "appreciation": "Overall appreciation",
      "comment": "Observations",
      "name": "Your name",
      "title_field": "Your title",
      "valid_until": "This link is valid until {{date}}.",
      "send": "Send the evaluation",
      "thanks_title": "Thank you, your evaluation has been received",
      "thanks_body": "The school has been informed. You can close this page.",
      "received_title": "Evaluation already received",
      "received_body": "This internship has already been evaluated through this link.",
      "expired_title": "This link has expired",
      "expired_body": "Ask the school to send you a new link.",
      "not_found_title": "Link not found",
      "not_found_body": "Check the link in your e-mail or contact the school."
    },
    "shell": {
      "language": "Language",
      "footer": "© {{year}} {{school}} · powered by ALLcarta ·",
      "personal_data": "Personal data",
      "close": "Close"
    },
    "preinscription": {
      "title": "Pre-registration {{campaign}} · {{school}}",
      "heading": "Online pre-registration",
      "season": "School year {{campaign}}",
      "season_until": "School year {{campaign}} · applications open until {{date}}",
      "intro": "10 minutes are enough. Have the birth certificate, last year's report cards and an ID photo ready. We get back to you within 5 working days.",
      "chip_free": "No online payment",
      "chip_draft": "Draft saved automatically",
      "chip_sms": "Follow-up by SMS",
      "test_on": "{{date}}",
      "closed_title": "Pre-registrations are closed",
      "closed_body": "No application campaign is open for this school at the moment. Contact the school for more information.",
      "steps_label": "Steps",
      "steps": { "student": "Student", "guardians": "Guardians", "previous": "Previous schooling", "documents": "Documents", "summary": "Summary" },
      "step_of": "Step {{n}} of 5",
      "prev": "Previous",
      "next": "Next",
      "send": "Send the application",
      "draft_saved": "Draft saved",
      "draft_saving": "Saving…",
      "draft_now": "Draft saved just now",
      "fix_red": "Complete the fields in red",
      "required": "This field is required",
      "consent_data": "I accept the processing of my child's personal data for the study of the application, in accordance with Organic Law no. 2004-63 on the protection of personal data.",
      "student": {
        "title": "The student",
        "hint": "As it appears on the birth certificate.",
        "first_name": "First name",
        "first_name_ph": "e.g. Ilyes",
        "first_name_required": "The first name is required",
        "last_name": "Last name",
        "last_name_ph": "e.g. Ben Salah",
        "last_name_required": "The last name is required",
        "first_name_ar": "First name in Arabic",
        "last_name_ar": "Last name in Arabic",
        "birth_date": "Date of birth",
        "birth_date_required": "The date of birth is required",
        "birth_place": "Place of birth",
        "birth_place_ph": "e.g. Tunis",
        "sex": "Sex",
        "sex_m": "Boy",
        "sex_f": "Girl",
        "nationality": "Nationality",
        "nationality_tn": "Tunisian",
        "nationality_dz": "Algerian",
        "nationality_ly": "Libyan",
        "nationality_fr": "French",
        "nationality_other": "Other",
        "level": "Requested level",
        "level_choose": "Choose…",
        "level_required": "Choose a level",
        "level_full": "full",
        "intake": "School year",
        "mid_year": "During the year",
        "services": "Services wanted",
        "cantine": "Canteen",
        "cantine_hint": "monthly subscription or per meal",
        "transport": "School transport",
        "transport_hint": "{{n}} routes: {{routes}}",
        "health": "Allergies or health needs (optional)",
        "health_ph": "e.g. peanut allergy, asthma…",
        "health_hint": "Used only by the infirmary and the canteen."
      },
      "guardians": {
        "title": "The guardians",
        "hint": "We will send the tracking number and the convocations to this number.",
        "g1": "Guardian 1",
        "g2": "Guardian 2",
        "relation": "Relationship to the child",
        "mother": "Mother",
        "father": "Father",
        "guardian": "Guardian",
        "name": "Full name",
        "name_ph": "e.g. Salma Ben Salah",
        "name2_ph": "e.g. Karim Ben Salah",
        "name_required": "Required",
        "cin": "National ID (CIN)",
        "cin_ph": "8 digits",
        "cin_invalid": "The CIN has 8 digits",
        "phone": "Phone",
        "phone_ph": "98 123 456",
        "phone_required": "The phone number is required",
        "phone_invalid": "This phone number is not valid",
        "whatsapp": "Same number on WhatsApp",
        "email": "E-mail",
        "email_ph": "name@example.tn",
        "profession": "Profession",
        "profession_ph": "e.g. engineer",
        "language": "Message language",
        "add_g2": "Add a second guardian",
        "remove": "Remove",
        "governorate": "Governorate",
        "governorate_tunis": "Tunis",
        "governorate_ariana": "Ariana",
        "governorate_ben_arous": "Ben Arous",
        "governorate_manouba": "La Manouba",
        "governorate_nabeul": "Nabeul",
        "city": "City",
        "city_ph": "e.g. La Marsa",
        "address": "Address",
        "address_ph": "Street, number, postal code",
        "sibling": "A brother or sister already attends our school",
        "sibling_name": "First and last name",
        "sibling_name_ph": "e.g. Yasmine Ben Salah",
        "sibling_class": "Class",
        "sibling_class_ph": "e.g. 7 A",
        "sibling_hint": "We will link the application to your existing family account (sibling discount according to the school rules)."
      },
      "previous": {
        "title": "Previous schooling",
        "hint": "The current school and last year's results.",
        "school": "Current school",
        "school_ph": "e.g. Les Jasmins primary school",
        "type": "Type",
        "type_public": "Public",
        "type_private": "Private",
        "type_foreign": "Foreign",
        "city": "City",
        "city_ph": "e.g. La Marsa",
        "class": "Current class",
        "class_6p": "6th year of primary school",
        "class_7": "7th year of basic education",
        "class_8": "8th year of basic education",
        "class_9": "9th year of basic education",
        "class_s1": "1st year of secondary school",
        "average": "Annual average {{year}}",
        "average_ph": "e.g. 16.20",
        "average_hint": "/20",
        "average_invalid": "Enter a number between 0 and 20",
        "repeated": "Has the student repeated a year?",
        "no": "No",
        "yes": "Yes",
        "language": "Foreign language studied",
        "language_en": "English",
        "language_de": "German",
        "language_it": "Italian",
        "language_es": "Spanish",
        "source": "How did you hear about us?",
        "source_website": "Website",
        "source_social": "Facebook / Instagram",
        "source_family": "Family or friends",
        "source_open_day": "Open day",
        "source_poster": "Poster",
        "message": "A word for the management (optional)",
        "message_ph": "Special needs, motivation…"
      },
      "summary": {
        "title": "Summary",
        "hint": "Check before sending.",
        "edit": "Edit",
        "student": "Student",
        "name": "Name",
        "born": "Born on",
        "level": "Requested level",
        "services": "Services",
        "guardians": "Guardians",
        "guardian_1": "Guardian 1",
        "phone": "Phone",
        "siblings": "Siblings",
        "sibling_yes": "yes, already at our school",
        "sibling_no": "no",
        "documents": "Documents",
        "sent": "Sent",
        "mandatory": "Required",
        "complete": "complete",
        "incomplete": "incomplete",
        "fees": "Fees",
        "fees_free": "No online payment and the application is free.",
        "fees_after": "No online payment and the application is free. After acceptance: registration fee {{registration}}, then tuition {{annual}} in {{n}} instalments, by bank transfer (with proof to upload) or at the school's cash desk.",
        "consent_accuracy": "I certify that the information provided is accurate.",
        "consent_marketing": "I accept to receive news from the school (optional).",
        "read_policy": "Read the policy"
      },
      "aside": {
        "prepare": "To prepare",
        "already": "Already applied?",
        "already_hint": "Enter your tracking number and phone number: we send the tracking link again by SMS.",
        "number": "Tracking number",
        "phone": "Phone",
        "resend": "Send the link again",
        "resent": "If this number matches, the tracking link has been sent again by SMS.",
        "format": "Expected format: {{example}}",
        "help": "Need help?"
      }
    },
    "documents": {
      "title": "The documents",
      "hint": "PDF, JPG or PNG · 5 MB maximum · on a phone, you can take a photo.",
      "required": "required",
      "optional": "optional",
      "file_hint": "PDF, JPG or PNG",
      "block": "Add the {{n}} required documents to continue.",
      "block_single": "Add the required document to continue.",
      "type_error": "This file type is not accepted (PDF, JPG or PNG only)",
      "size_error": "This file is larger than 5 MB",
      "later": "Optional documents can be added later from the tracking link received by SMS.",
      "kind_birth_certificate": "Birth certificate",
      "kind_report_cards": "Report cards {{year}} (3 terms)",
      "kind_school_certificate": "School certificate {{year}}",
      "kind_photo": "ID photo",
      "kind_vaccination": "Vaccination record",
      "kind_medical_certificate": "Medical certificate",
      "kind_custody": "Custody judgment (if applicable)"
    },
    "confirmation": {
      "sent": "Application sent",
      "number_label": "Your tracking number",
      "copy": "Copy the number",
      "copied": "Number copied",
      "sms_line": "A confirmation SMS was sent to {{phone}} · keep this number to follow the application.",
      "next_title": "What's next?",
      "receipt": "Download the receipt",
      "track": "Track my application",
      "another": "Application for another child"
    },
    "timeline": {
      "received": { "title": "Application received", "detail": "Today · confirmation by SMS" },
      "verification": { "title": "File check", "detail": "Within 5 working days. If a document is missing, we let you know by SMS/WhatsApp." },
      "test": { "title": "Entrance test and/or interview", "detail": "Convocation by SMS and e-mail with the date and the room." },
      "decision": { "title": "Decision", "detail": "Accepted, waiting list or refused, visible on the tracking link." },
      "enrolment": { "title": "Final enrolment", "detail": "Opening of your family space, then the registration fee by transfer (proof) or at the cash desk." }
    },
    "receipt": {
      "title": "Pre-registration receipt",
      "none": "No receipt found for this application.",
      "row_number": "Tracking number",
      "row_child": "Student",
      "row_level": "Requested level",
      "row_campaign": "School year",
      "row_phone": "Phone",
      "row_date": "Sent on",
      "note": "Keep this receipt. It is not a registration: the school contacts you after checking the file.",
      "qr": "QR code of the tracking page",
      "qr_hint": "Scan it to follow the application."
    },
    "tracking": {
      "title": "Track your application",
      "level_line": "{{level}} · school year {{campaign}}",
      "received": "Application received",
      "verification": "File check",
      "verification_done": "File complete",
      "test": "Test and/or interview",
      "decision": "Decision",
      "decision_accepted": "Accepted",
      "decision_waitlist": "Waiting list",
      "decision_refused": "Refused",
      "enrolment": "Final enrolment",
      "on": "on {{date}}",
      "before": "expected before {{date}}",
      "documents": "Documents",
      "doc_validated": "Validated",
      "doc_pending": "Being checked",
      "doc_refused": "Refused: send it again",
      "doc_missing": "Missing",
      "add_doc": "Add a document",
      "doc": "Document",
      "file": "File",
      "send": "Send",
      "uploaded": "Document sent",
      "not_found_title": "Tracking link not found",
      "not_found_body": "Check the link you received by SMS, or ask for it again from the pre-registration page."
    },
    "verify": {
      "title": "Document verification",
      "contact": "Contact: {{phone}} · checked on {{date}} at {{time}}",
      "checked": "Checked on {{date}} at {{time}}"
    },
    "errors": {
      "campaign_closed": "Pre-registrations are closed for this campaign.",
      "level_closed": "This level is full.",
      "consent_required": "Both required consents must be ticked.",
      "field_required": "A required field is missing ({{attr}}).",
      "document_required": "A required document is missing ({{attr}}).",
      "file_type": "This file type is not accepted. Use PDF, JPG or PNG.",
      "file_too_large": "This file is larger than 5 MB.",
      "phone_invalid": "This phone number is not valid.",
      "data_invalid": "The application could not be read. Reload the page and try again.",
      "field_invalid": "A field is not valid ({{attr}}).",
      "document_kind": "This document is not asked for by this campaign.",
      "document_locked": "This document was already validated: it can no longer be replaced.",
      "uploads_closed": "Sending documents is closed for this application.",
      "throttled": "Too many requests. Try again in a while.",
      "not_found": "Not found."
    }
  },
  "pedagogy": {
    "calendar": { "more_one": "+{{count}} more", "more_other": "+{{count}} more", "empty": "Nothing this month." },
    "chart": { "value": "Value", "count": "Count", "previous": "Previous", "reference": "Reference", "state": "State", "min": "Min.", "q1": "1st quartile", "median": "Median", "q3": "3rd quartile", "max": "Max.", "mean": "Mean" },
    "strip": { "P": "Present", "A": "Absent", "L": "Late", "none": "No lesson" },
    "attendance": {
      "mine": {
        "title": "My attendance",
        "no_period": "The school year has no period yet.",
        "empty": "No roll call yet",
        "empty_hint": "Attendance appears here once the teachers have taken the first roll call.",
        "summary": "{{period}} · {{rate}} % attendance",
        "summary_todo_one": "{{count}} to justify",
        "summary_todo_other": "{{count}} to justify",
        "banner_what": "{{kind}} on {{date}} ({{subject}}, {{time}}) to justify.",
        "banner_student": "Your parents have until {{date}} to send a reason from their space.",
        "banner_parent": "Send a reason before {{date}}.",
        "kind_absence": "Absence",
        "kind_late": "Late arrival",
        "remind": "Remind my parents",
        "reminded": "Reminder sent",
        "reminded_toast": "Reminder sent to your parents",
        "rate": "Attendance rate",
        "vs_class": "{{delta}} pts vs the class ({{rate}} %)",
        "absences": "Absences",
        "hours_missed": "{{hours}} h of lessons missed",
        "lates": "Late arrivals",
        "late_total": "{{minutes}} min in total",
        "justified": "Justified",
        "to_justify": "To justify",
        "justified_absence": "Justified absence",
        "unjustified_absence": "To justify",
        "upcoming": "Upcoming",
        "heatmap": "{{period}}, day by day",
        "heatmap_range": "{{from}} → {{to}}",
        "class_rate": "class {{rate}} %",
        "streak": "Streak without absence",
        "days_n_one": "{{count}} day",
        "days_n_other": "{{count}} days",
        "record": "record {{count}}",
        "by_subject": "By subject",
        "missed_hours": "{{hours}} h missed",
        "missed_none": "no hour missed",
        "late_count": "Late arrivals: {{count}}",
        "lates_note": "Late arrivals do not lower the rate, they are counted apart.",
        "events": "Absences and late arrivals",
        "filter_all": "All",
        "filter_absence": "Absences",
        "filter_late": "Late arrivals",
        "filter_todo": "To justify",
        "nothing": "Nothing to report here.",
        "pill_absence": "Absence · {{duration}}",
        "pill_late": "Late · {{minutes}} min",
        "reason_wait": "Reason awaited from your parents",
        "reason_wait_parent": "Reason awaited",
        "st_todo": "To justify",
        "st_refused": "Refused · send again",
        "st_pending": "Sent · awaiting review",
        "st_justified": "Justified",
        "expired": "Deadline passed",
        "justify_of": "Justify the absence of {{date}}",
        "justify_selection": "Justify the selection",
        "justify_pick": "Select {{what}}",
        "export": "Export"
      },
      "staff": {
        "soon": "Available soon",
        "subtitle": "{{date}} · {{called}} of {{total}} roll calls made · rate of the day {{rate}} %",
        "forbidden_title": "You cannot see the attendance board",
        "forbidden_body": "Ask the school office for the right to view roll calls.",
        "subtitle_no_rate": "{{date}} · {{called}} of {{total}} roll calls made",
        "pending": {
          "title": "Justifications to review",
          "empty": "No justification is waiting for a decision.",
          "sent_by": "sent by {{name}} on {{date}}",
          "sent_on": "sent on {{date}}",
          "open_document": "Open the document {{name}}",
          "accept": "Accept",
          "accept_of": "Accept the justification of {{name}}",
          "refuse": "Refuse",
          "refuse_of": "Refuse the justification of {{name}}",
          "refuse_title": "Refuse the justification",
          "refuse_reason": "Reason for the refusal",
          "refuse_hint": "The parents will read it.",
          "accepted": "Justification of {{name}} accepted.",
          "refused": "Justification of {{name}} refused. The parents were told."
        },
        "period": "Period",
        "today": "Today",
        "yesterday": "Yesterday",
        "export": {
          "title": "Export",
          "absences": "Unjustified absences of the day (CSV)",
          "monthly": "Monthly report (PDF)",
          "register": "Roll call register (PDF)",
          "file": "unjustified-absences",
          "done": "Export ready",
          "col": { "date": "Date", "student": "Student", "class": "Class", "lesson": "Lesson", "status": "Status", "minutes_late": "Minutes late" }
        },
        "kpi": {
          "rate": "Rate today",
          "rate_vs": "{{delta}} pt vs last week",
          "rate_series": "Attendance rate of the last school days",
          "absences": "Absences",
          "absences_hint": "{{students}} students · {{full}} for the whole day",
          "lates": "Lates",
          "lates_hint": "average {{minutes}} min",
          "unjustified": "Not justified",
          "unjustified_hint": "to process today"
        },
        "live": {
          "title": "Live roll calls",
          "ring": "Roll calls made",
          "slot": "Lesson {{start}} – {{end}}",
          "updated": "updated at {{time}}",
          "legend": "amber: roll calls not made yet",
          "show": "Show",
          "all": "All",
          "todo": "Not done",
          "done": "Done",
          "remind_all": "Remind everyone",
          "none": "No lesson is running now",
          "all_called": "All roll calls are made.",
          "present_of": "{{present}}/{{students}} present",
          "abs_one": "{{count}} abs.",
          "abs_other": "{{count}} abs.",
          "not_made": "Roll call not made · {{minutes}} min",
          "not_made_plain": "Roll call not made",
          "remind": "Remind",
          "remind_of": "Remind {{teacher}} ({{class}})",
          "reminded": "Reminded at {{time}}",
          "reminded_toast": "{{teacher}} was reminded about the roll call of {{class}}.",
          "remind_all_done_one": "{{count}} teacher reminded",
          "remind_all_done_other": "{{count}} teachers reminded",
          "received": "Roll call of {{class}} received: {{present}}/{{students}} present"
        },
        "watch": {
          "title": "Students to watch",
          "rule": "{{absences}}+ absences in {{days}} days",
          "empty": "No student to watch.",
          "strip_of": "Last days of {{name}}",
          "abs_one": "{{count}} abs.",
          "abs_other": "{{count}} abs.",
          "contact_of": "Contact the parents of {{name}}",
          "contact_all": "Contact all the parents",
          "subject": "Absences of {{name}}",
          "subject_many": "Repeated absences",
          "body": "Hello, {{name}} has {{absences}} recorded absences recently, {{unjustified}} of them not justified. Could we talk about it?",
          "body_many": "Hello, we would like to talk about the recent absences of {{names}}."
        },
        "unjustified": {
          "title": "Absences to justify",
          "col": { "student": "Student", "lesson": "Lesson", "status": "Status", "action": "Action" },
          "class": "Class",
          "all_classes": "All classes",
          "absent": "Absent",
          "late": "Late · {{minutes}} min",
          "read": "read",
          "no_contact": "No contact yet",
          "justify": "Justify",
          "justify_of": "Justify {{name}} ({{lesson}})",
          "remind": "Remind the parents",
          "empty_title": "Everything is justified for today",
          "empty_body": "New absences will arrive here as soon as the roll is called.",
          "remind_subject": "Absence to justify",
          "remind_body": "Hello, your child's absence has not been justified yet. Please send us the reason or a supporting document."
        },
        "channels": { "sms": "SMS", "email": "Email", "app": "App", "call": "Call" },
        "trends": {
          "title": "Trends",
          "week": "By week",
          "class": "By class",
          "heat": "Day × hour",
          "week_label": "Weekly attendance rate",
          "threshold": "Alert threshold {{pct}} %",
          "this_year": "This year",
          "last_year": "Last year",
          "class_hint": "Click a bar to open the class.",
          "class_label": "Attendance by class",
          "mean": "Average {{pct}} %",
          "heat_label": "Absences by day and hour"
        }
      },
      "justify": {
        "title": "Justify the absence",
        "title_many_one": "Justify {{count}} absence",
        "title_many_other": "Justify {{count}} absences",
        "who": "Absences to justify",
        "reason": "Reason",
        "reasons": { "maladie": "Illness", "rdv_medical": "Medical appointment", "familiale": "Family reason", "transport": "Transport", "convocation": "Official summons", "autre": "Other" },
        "source": "Source",
        "sources": { "parents": "Call or message from the parents", "certificat": "Medical certificate", "carnet": "Note in the school diary" },
        "document": "Supporting document",
        "attach": "Attach a file (PDF, photo)",
        "remove_document": "Remove the document",
        "document_hint": "PDF or photo, {{max}} MB at most.",
        "document_too_big": "The document is too large ({{max}} MB at most).",
        "document_type": "Attach a PDF or a photo (JPG, PNG).",
        "comment_staff": "Comment (visible to the school office)",
        "comment": "Comment",
        "comment_example": "e.g. two-day certificate, back on Thursday",
        "notify": "Send a confirmation to the parents",
        "submit": "Justify",
        "send": "Send the justification",
        "done_one": "{{count}} absence justified",
        "done_other": "{{count}} absences justified",
        "sent_one": "{{count}} justification sent",
        "sent_other": "{{count}} justifications sent",
        "partial_one": "{{count}} absence justified, the others were refused: {{reason}}",
        "partial_other": "{{count}} absences justified, the others were refused: {{reason}}"
      },
      "contact": { "title": "Contact the parents", "failed": "The parents of some students could not be loaded, so the message was not prepared." },
      "day_state": { "holiday": "No roll call" },
      "exit_pass": {
        "title": "New exit pass",
        "title_list": "Exit passes",
        "new": "New exit pass",
        "new_short": "New",
        "student": "Student",
        "student_hint": "Type a name and choose from the list.",
        "date": "Date",
        "out_time": "Exit time",
        "no_return": "Does not come back today",
        "return_time": "Expected return",
        "reason": "Reason",
        "reasons": { "medical": "Medical appointment", "family": "Family reason", "sport": "Sports competition", "admin": "Administrative procedure", "other": "Other" },
        "picked_up_by": "Picked up by",
        "other_person": "Another authorised person",
        "other_name": "Name of the person",
        "attachment": "Supporting document",
        "attach": "Attach the signed request or the summons",
        "missed": "Missed lessons:",
        "missed_none": "No lesson is missed.",
        "missed_effect": "They will be marked “Authorised” in the roll call, without counting as an absence.",
        "notify": "Tell the teachers concerned and the gatehouse",
        "notify_short": "Tell the teachers",
        "notify_of": "Tell the teachers: {{name}}",
        "submit": "Authorise the exit",
        "send": "Send the request",
        "done_notified": "Exit authorised for {{name}} at {{time}}. The teachers were told.",
        "done": "Exit authorised for {{name}} at {{time}}.",
        "sent": "Request sent. The school office will answer soon.",
        "empty": "No exit pass",
        "slip": "Slip",
        "status": { "requested": "Requested", "approved": "Planned", "refused": "Refused", "out": "Out", "back": "Back" },
        "actions": { "approve": "Approve", "refuse": "Refuse", "out": "Mark as out", "back": "Mark as back" },
        "action_of": "{{action}}: {{name}}",
        "open_attachment": "Open the attachment {{name}}",
        "attachment_joined": "Document attached",
        "no_attachment": "No document",
        "count_today_one": "{{count}} today",
        "count_today_other": "{{count}} today",
        "count_back_one": "{{count}} back",
        "count_back_other": "{{count}} back",
        "count_out_one": "{{count}} out of the school",
        "count_out_other": "{{count}} out of the school"
      },
      "title": "Roll call",
      "forgotten": "Forgotten roll call",
      "timetable": "Timetable",
      "tab": { "call": "Roll call in progress", "history": "History" },
      "lesson": "Lesson",
      "lesson_option": "{{class}} · {{subject}} · {{start}}–{{end}}",
      "lesson_done": "done",
      "no_lessons_title": "No lesson on this day",
      "no_lessons_body": "Your lessons appear here as soon as they are scheduled.",
      "no_students": "No student in this class.",
      "live": "● In progress · {{count}} min left",
      "live_done": "● In progress · roll call done",
      "upcoming": "Starts at {{time}}",
      "ended": "Ended at {{time}}",
      "running_since": "running for {{count}} min",
      "density": "Display",
      "tiles": "Tiles",
      "list": "List",
      "all_present": "Everyone present",
      "hint": "One tap: Present → Absent → Late. Long press or ⋮: Excluded, note.",
      "status": { "unmarked": "To mark", "present": "Present", "absent": "Absent", "late": "Late", "expelled": "Excluded", "excused": "Excused", "locked": "Authorised" },
      "tile": "{{name}}: {{status}}",
      "tile_more": "More options for {{name}}",
      "late_for": "Late · {{count}} min",
      "locked_exit": "{{name}} has an authorised exit ({{when}}): status locked by the school office",
      "read_only": "Roll call validated: tap “Edit” to change it",
      "inactive": "{{name}} (last present on {{date}}) is not listed.",
      "inactive_plain": "{{name}} (inactive) is not listed.",
      "tile_note": "note: {{note}}",
      "opens_at": "The roll call opens at {{time}}.",
      "window_closed": "The edit window has closed: the school office validates this roll call.",
      "window_left": "You can still edit for {{time}}.",
      "leave": { "title": "Discard the unsaved marks?", "body": "The marks you have not validated yet will be lost.", "confirm": "Discard" },
      "menu": { "note": "Add a note…", "record": "View record" },
      "bar": {
        "summary": "Roll call summary",
        "to_mark": "{{count}} to mark",
        "sms": "SMS parents",
        "sms_hint": "Parents of absent students receive an SMS on validation",
        "validate": "Validate the roll call",
        "save": "Save changes",
        "validated": "Validated at {{time}}",
        "modified": "Modified at {{time}}",
        "edit": "Edit"
      },
      "done": {
        "validated": "Roll call validated at {{time}}",
        "modified": "Roll call modified at {{time}}",
        "notified_one": "Parents of {{count}} student notified by SMS.",
        "notified_other": "Parents of {{count}} students notified by SMS.",
        "live": "The school office sees the roll call live."
      },
      "editing": { "title": "Editing in progress", "body": "Validated at {{time}}. Changes are logged in the history.", "cancel": "Cancel" },
      "toast": { "validated": "Roll call validated", "saved": "Changes saved" },
      "late": {
        "title": "Arrival of {{name}}",
        "time": "Arrival time",
        "after": "{{minutes}} min after the start of the lesson",
        "invalid": "The arrival must fall within the lesson.",
        "confirm": "Confirm"
      },
      "note": {
        "title": "Note for {{name}}",
        "label": "Note",
        "hint": "The school office always sees it; parents only if the box below is ticked.",
        "placeholder": "e.g. arrived without equipment",
        "visible": "Visible to parents",
        "save": "Save",
        "quick": { "equipment": "No equipment", "chatting": "Chatting", "participation": "Very good participation", "slip": "Arrived without a slip" }
      },
      "presence": {
        "title": "Attendance of {{class}}",
        "class": "{{class}} in {{subject}}",
        "mine": "My classes",
        "absences": "Absences this month",
        "lates": "Lates this month",
        "vs_prev": "{{delta}} vs previous month"
      },
      "watch": {
        "title": "Repeated absences",
        "empty": "No repeated absences.",
        "absences_one": "{{count}} absence",
        "absences_other": "{{count}} absences",
        "unjustified_one": "{{count}} not justified",
        "unjustified_other": "{{count}} not justified",
        "lates_one": "{{count}} late",
        "lates_other": "{{count}} lates",
        "pattern": "always on {{day}}",
        "notify_of": "Notify the parents of {{name}}",
        "report": "Report to the school office",
        "notify_subject": "Absences of {{name}}",
        "report_subject": "Repeated absences in {{class}}",
        "report_body": "Students concerned: {{names}}."
      },
      "exits": { "title": "Authorised exits today", "from_only": "from {{from}}", "signed_by": "signed by {{by}}" },
      "forgotten_dialog": {
        "title": "Make a forgotten roll call",
        "hint": "Roll calls less than {{hours}} h old are made here. After that, the school office must validate.",
        "hint_plain": "Recent roll calls are made here. After the allowed time, the school office must validate.",
        "lesson": "Lesson",
        "choose": "Choose a lesson",
        "none": "No overdue roll call",
        "option": "{{class}} · {{day}} · {{start}}",
        "close": "Close"
      },
      "history": {
        "classes": "Classes",
        "all": "All",
        "period": "Period",
        "fortnight": "2 weeks",
        "month": "This month",
        "punctual": "{{pct}} % validated within {{minutes}} min",
        "punctual_plain": "{{pct}} % validated on time",
        "export": "Export",
        "file": "roll-calls",
        "col": { "date": "Date", "time": "Time", "class": "Class", "split": "Split", "absent": "Abs.", "late": "Late", "status": "Status", "action": "Action" },
        "split": "{{present}} present · {{absent}} absent · {{late}} late",
        "validated": "Validated at {{time}}",
        "modified": "Modified at {{time}}",
        "validated_late": "Validated at {{time}} (late)",
        "by_staff": "Done by the school office",
        "todo": "Not done",
        "todo_live": "Not done · in progress",
        "do_call": "Do the roll call",
        "empty_title": "No roll call yet",
        "empty_body": "Validated roll calls appear here."
      },
      "drawer": {
        "title": "{{class}} · {{date}}",
        "subtitle": "{{subject}} · {{start}}–{{end}}",
        "present": "Present",
        "absent": "Absent",
        "late": "Late",
        "justified": "justified",
        "unjustified": "not justified",
        "late_at": "{{count}} min late",
        "all_there": "Everyone was there",
        "by_system": "the school",
        "changes": "Changes",
        "change": "{{time}} · {{student}}: {{before}} → {{after}} ({{by}})",
        "edit": "Edit"
      }
    },
    "grades": {
      "mine": {
        "title": "My grades",
        "me": "Me",
        "summary": "{{period}} · average {{average}} · rank {{rank}} of {{size}}",
        "summary_none": "{{period}} · no published mark yet",
        "download": "Download the report card",
        "download_pdf": "Download the PDF",
        "not_started": "{{period}} starts on {{date}}",
        "not_started_hint": "The grades will appear here after the first exam.",
        "back_to": "Back to {{period}}",
        "empty": "No mark published yet",
        "empty_hint": "Marks appear here once the teachers publish them.",
        "no_period": "The school year has no period yet.",
        "general": "General average",
        "since_start": "{{delta}} since the start",
        "honour": "Honour roll",
        "rank": "Rank",
        "class_average": "Class average",
        "vs_class": "{{delta}} vs the class",
        "high_low": "Highest · lowest",
        "last_year": "Same period last year",
        "position": "Position in the class",
        "students": "Students",
        "class": "Class",
        "tab_grades": "Grades",
        "tab_report": "Report card",
        "me_vs_class": "{{who}} vs the class",
        "vs_summary": "Above the class in {{above}} of {{total}} subjects · biggest gap in {{best}} ({{bestGap}}), smallest in {{worst}} ({{worstGap}}).",
        "avg_line": "The dashed line is the general average.",
        "over_time": "Average over time",
        "goal_line": "Goal {{goal}}",
        "detail": "Detail by subject",
        "open_all": "Open all",
        "close_all": "Close all",
        "coef": "coef. {{coef}}",
        "class_short": "class {{average}}",
        "rank_n": "#{{rank}}",
        "to_come": "upcoming",
        "col_mark": "Mark",
        "range_of": "Lowest, highest and mark of {{exam}}",
        "write_to": "Write to {{name}}",
        "goals": "Goals",
        "goals_hint": "Touch a goal to change it. We work out the mark you need at the next exam.",
        "goals_hint_read": "The goals set by the student. We work out the mark needed at the next exam.",
        "on_track": "{{on}} / {{total}} on track",
        "goal_word": "goal",
        "edit_goal": "Change the goal of {{subject}}",
        "goal_input": "Goal for {{subject}}",
        "goal_save": "Save the goal of {{subject}}",
        "goal_saved": "Goal {{subject}}: {{value}}",
        "hint_reached": "Goal reached",
        "hint_no_exam": "No exam planned for now",
        "hint_need": "{{mark}} needed at the {{exam}} (coef. {{coef}}, {{date}})",
        "hint_out": "Out of reach with the {{exam}} alone: aim for {{mark}} instead",
        "hint_gap": "{{gap}} points short of the goal",
        "hint_none": "Set a goal to see the mark needed",
        "send_parents": "Send to my parents",
        "previous": "Previous report cards",
        "previous_none": "No report card has been published yet.",
        "previous_avg": "avg. {{average}}",
        "download_of": "Download the report card of {{label}}",
        "no_current": "There is no provisional report card for this period yet.",
        "quote": "“{{text}}”"
      },
      "exam_name": "{{type}} n°{{number}}",
      "new_exam": "New exam",
      "tab": {
        "todo": "To mark",
        "entry": "Marks entry",
        "stats": "Statistics",
        "avg": "Averages for the {{period}}"
      },
      "sub": {
        "to_finish_one": "{{count}} exam to finish",
        "to_finish_other": "{{count}} exams to finish",
        "papers_one": "{{count}} paper to mark",
        "papers_other": "{{count}} papers to mark",
        "ready_one": "{{count}} ready to publish",
        "ready_other": "{{count}} ready to publish",
        "upcoming_one": "{{count}} exam to come",
        "upcoming_other": "{{count}} exams to come"
      },
      "export": {
        "button": "Export",
        "file": "marks",
        "class": "Class",
        "exam": "Exam",
        "date": "Date",
        "student": "Student",
        "mark": "Mark",
        "status": "Status",
        "comment": "Comment"
      },
      "todo": {
        "papers": "papers",
        "ready": "Ready to publish",
        "late": "Late",
        "in_progress": "In progress",
        "due_by": "By {{date}}",
        "meta": "Taken on {{date}} · coef. {{coefficient}}",
        "provisional_mean": "provisional mean {{mean}}",
        "publish": "Publish",
        "review": "Review",
        "stats": "Statistics",
        "continue": "Continue marking",
        "left_one": "{{count}} paper left",
        "left_other": "{{count}} papers left",
        "nothing": "Nothing to mark right now.",
        "upcoming": "Upcoming",
        "schedule": "Schedule",
        "no_upcoming": "No exam is planned.",
        "chapters": "Ch. {{chapters}}",
        "coefficient": "coef. {{coefficient}}",
        "actions": "Actions for {{exam}}",
        "attach": "Attach the subject",
        "edit": "Edit",
        "remind": "Remind the students",
        "cancel": "Cancel the exam",
        "today": "Today",
        "in_days_one": "in {{count}} day",
        "in_days_other": "in {{count}} days",
        "recent": "Recently published",
        "recent_hint": "visible to students and parents",
        "no_recent": "Nothing published yet.",
        "published_on": "Published on {{date}}",
        "marks_count_one": "{{count}} mark",
        "marks_count_other": "{{count}} marks",
        "pass_rate": "pass rate {{rate}} %",
        "stats_of": "Statistics of {{exam}}",
        "cancel_title": "Cancel this exam?",
        "cancel_body": "The students and their parents are told. An exam that already has marks cannot be cancelled.",
        "reminded": "Students reminded.",
        "cancelled": "Exam cancelled · students and parents told."
      },
      "dialog": {
        "new_title": "New exam",
        "edit_title": "Edit the exam",
        "save": "Save",
        "schedule": "Schedule the exam",
        "classes": "Class(es)",
        "subject": "Subject",
        "type": "Type",
        "number": "Number",
        "coefficient": "Coefficient",
        "date": "Date",
        "time": "Time",
        "duration": "Duration",
        "room": "Room",
        "room_none": "No room",
        "scale": "Scale",
        "scale_of": "Out of {{max}}",
        "chapters": "Chapters",
        "chapters_hint": "Type a chapter, then press Enter to add it.",
        "add_chapter": "Add",
        "remove_chapter": "remove",
        "instructions": "Instructions for the students",
        "instructions_hint": "No calculator, bring a compass and a protractor…",
        "subject_file": "Subject file",
        "subject_file_hint": "Drop the subject here (visible after the exam)",
        "notify": "Notify the students and parents (date, chapters, instructions)",
        "edited": "Exam updated.",
        "created_one": "Exam scheduled.",
        "created_other": "{{count}} exams scheduled.",
        "duration_h": "{{h}} h",
        "duration_hm": "{{h}} h {{m}}",
        "no_subject": "The chosen classes have no subject in common.",
        "bad_number": "The exam number must be a whole number."
      },
      "publish": {
        "title": "Publish the marks?",
        "title_correction": "Publish the correction?",
        "confirm": "Publish",
        "done": "Marks published · {{students}} students and {{parents}} parents told.",
        "summary_marks_one": "{{count}} mark",
        "summary_marks_other": "{{count}} marks",
        "summary_mean": "mean {{mean}}",
        "summary_absent_one": "{{count}} absent",
        "summary_absent_other": "{{count}} absent",
        "missing_one": "{{count}} paper without a mark: it shows as “not marked” until it is entered.",
        "missing_other": "{{count}} papers without a mark: they show as “not marked” until they are entered.",
        "notify_students": "Notify the students",
        "notify_parents": "Notify the parents",
        "show_average": "Show the class average",
        "students_count_one": "{{count}} student",
        "students_count_other": "{{count}} students",
        "window_one": "After publication, a correction stays possible for {{count}} day; it is traced and the families are told.",
        "window_other": "After publication, a correction stays possible for {{count}} days; it is traced and the families are told.",
        "parents_count_one": "{{count}} parent",
        "parents_count_other": "{{count}} parents"
      },
      "entry": {
        "title": "Marks entry",
        "exam": "Exam",
        "saving": "Saving…",
        "saved": "Saved automatically · {{time}}",
        "import": "Import",
        "publish": "Publish to students and parents",
        "republish": "Published · publish a correction",
        "meta_one": "{{exam}} · {{date}} · coef. {{coefficient}} · {{count}} student",
        "meta_other": "{{exam}} · {{date}} · coef. {{coefficient}} · {{count}} students",
        "progress": "{{done}}/{{total}} entered",
        "published_note": "Published. Marks can still be corrected until {{until}}; the families are told when you publish the correction.",
        "published_plain": "Published. Corrections are traced; the families are told when you publish the correction.",
        "no_students": "No student in this class yet.",
        "student": "Student",
        "mark": "Mark /{{max}}",
        "status": "Status",
        "comment": "Comment",
        "mark_of": "Mark of {{name}}",
        "comment_for": "Comment for {{name}}",
        "comment_placeholder": "Add a comment…",
        "abs": "Abs.",
        "disp": "Disp.",
        "abs_title": "Absent: no mark, the student catches up",
        "disp_title": "Exempt: not counted in the average",
        "abs_caps": "ABS",
        "disp_caps": "DISP",
        "hint": {
          "enter": "Enter: next row",
          "shift_enter": "Shift + Enter: previous row",
          "abs": "A: absent",
          "disp": "D: exempt",
          "decimal": "Comma or dot accepted: 12,5 = 12.5",
          "undo": "On an absent or exempt row, use the button to undo"
        },
        "live": "Live",
        "live_count_one": "{{count}} mark",
        "live_count_other": "{{count}} marks",
        "provisional_mean": "Provisional mean",
        "min_max": "Min · Max",
        "legend": "Below {{pass}} in red; {{pass}} and above in blue",
        "scale_title": "Scale",
        "scale_body": "Out of {{max}} · coefficient {{coefficient}}. Absent: no mark, the student catches up. Exempt: not counted in the average.",
        "none": "No exam to enter marks for",
        "state": {
          "planned": "planned",
          "marking": "in progress",
          "ready": "to publish",
          "published": "published",
          "late": "late"
        },
        "closed": "The correction window has closed: the marks can no longer be changed here.",
        "leave_title": "Leave without saving?",
        "leave_body": "Some marks are not valid or were refused. They will be lost; the other marks are saved.",
        "leave_confirm": "Leave",
        "publish_blocked": "Fix or clear the marks that are not valid before publishing.",
        "abs_for": "Abs. {{name}}",
        "disp_for": "Disp. {{name}}",
        "out_of_range_one": "{{count}} mark is invalid (0 to {{max}}, in steps of {{step}}). It will not be saved.",
        "out_of_range_other": "{{count}} marks are invalid (0 to {{max}}, in steps of {{step}}). They will not be saved.",
        "number": "Row number"
      },
      "stats": {
        "distribution": "Distribution of marks",
        "meta": "coef. {{coefficient}} · {{n}} marks out of {{of}} students",
        "absent_one": "{{count}} absent",
        "absent_other": "{{count}} absent",
        "empty": "No marks yet for this exam.",
        "none": "No exam with marks to analyse yet.",
        "figures": "Key figures",
        "mean": "Mean",
        "versus": "{{delta}} vs the other exams",
        "median": "Median",
        "half_above": "half above",
        "min_max": "Min · Max",
        "sd": "standard deviation {{sd}}",
        "pass_rate": "Pass rate",
        "passed_one": "{{count}} student at {{pass}} or above",
        "passed_other": "{{count}} students at {{pass}} or above",
        "below": "Below {{mark}}",
        "to_review": "students to review",
        "class_exams": "The class's exams",
        "coef_short": "coef. {{coefficient}}",
        "legend_mean": "mean",
        "legend_pass": "pass rate %",
        "same_level": "Same exam, same level",
        "box_legend": "Box: middle 50 % (Q1 → Q3) · bar: median · dot: mean · whiskers: min → max",
        "single_class": "You teach only one class at this level, so there is nothing to compare."
      },
      "avg": {
        "title": "Averages",
        "no_class": "You have no class this year.",
        "no_students": "No student in this class yet.",
        "upcoming": "upcoming",
        "student": "Student",
        "coef": "coef. {{coefficient}}",
        "average": "Average",
        "rank": "Rank",
        "file": "averages",
        "class": "Class",
        "meta_one": "{{count}} student · class average {{average}} · {{below}} below {{pass}}",
        "meta_other": "{{count}} students · class average {{average}} · {{below}} below {{pass}}",
        "export": "Export the averages",
        "appreciations": "Appreciations",
        "table": "Averages of {{class}}",
        "footnote": "Average = sum of (mark × coefficient) / sum of the coefficients of the exams taken. Absent and exempt students are not counted. Click a header to sort.",
        "appreciations_title": "Appreciations · {{class}}",
        "appreciations_hint": "One comment per student for the report card of the period.",
        "appreciations_saved": "Appreciations saved.",
        "appreciation_for": "Appreciation for {{name}}",
        "save": "Save"
      }
    },
    "exams": {
      "export": "Export",
      "no_period": "No period is set up yet.",
      "level": "Level",
      "all": "All",
      "teacher_fallback": "The teacher",
      "forbidden_title": "You cannot see the exams and marks",
      "forbidden_body": "Ask the school office for the right to view exams.",
      "entry_title": "Marks entry · {{class}} · {{subject}}",
      "remind": "Remind",
      "reminded_short": "Reminded",
      "reminded_one": "{{teacher}} reminded: {{count}} mark to enter in {{class}} ({{subject}}).",
      "reminded_other": "{{teacher}} reminded: {{count}} marks to enter in {{class}} ({{subject}}).",
      "reminded_late_one": "{{count}} teacher reminded (notification and e-mail).",
      "reminded_late_other": "{{count}} teachers reminded (notification and e-mail).",
      "sub": {
        "entered": "{{pct}} % of marks entered",
        "late_one": "{{count}} late entry",
        "late_other": "{{count}} late entries",
        "no_late": "no late entry"
      },
      "kpi": {
        "month": "Exams this month",
        "month_hint": "{{passed}} held · {{upcoming}} to come",
        "entered": "Marks entered",
        "late": "Late entries",
        "late_hint": "past the entry deadline",
        "average": "General average",
        "vs_previous": "{{delta}} vs previous period",
        "pass": "Pass rate",
        "pts": "{{delta}} pts vs previous period"
      },
      "tab": { "cal": "Calendar", "mk": "Marks entry", "bl": "Report cards", "cc": "Class council", "an": "Analysis" },
      "plan": {
        "button": "Schedule an exam",
        "same_day": "{{class}} already has {{subject}} ({{exam}}) that day. Two exams on the same day are possible but discouraged.",
        "same_day_at": "{{class}} already has {{subject}} ({{exam}}) that day at {{time}}. Two exams on the same day are possible but discouraged.",
        "sunday": "Sunday: there are no lessons."
      },
      "move": { "title": "Move: {{class}} · {{subject}}", "submit": "Move", "done": "{{subject}} for {{class}} moved." },
      "cal": {
        "prev": "Previous month",
        "next": "Next month",
        "today": "Today",
        "legend": "Subjects",
        "hint": "Click an exam for its detail, or a free day to schedule an exam on that date. Red outline: marks are late."
      },
      "status": { "planned": "Upcoming", "marking": "In progress", "ready": "Done", "published": "Done", "late": "Late · D+{{days}}" },
      "drawer": {
        "date": "Date",
        "duration_room": "Duration · room",
        "class_room": "class room",
        "teacher": "Teacher",
        "coefficient": "Coefficient",
        "coefficient_value": "{{coefficient}} in the subject's average",
        "status": "Status",
        "move": "Move",
        "prepare": "Prepare marks entry",
        "open_entry": "Open marks entry",
        "preparation": "Preparation",
        "chapters": "Programme: {{chapters}}",
        "marks_entered": "Marks entered",
        "mean": "Class mean {{mean}}",
        "missing_one": "{{count}} mark missing",
        "missing_other": "{{count}} marks missing"
      },
      "mk": {
        "title": "Marks entry",
        "none": "No marks entry to follow yet.",
        "filter": "Filter",
        "all": "All",
        "late": "Late",
        "partial": "In progress",
        "done": "Done",
        "remind_late": "Remind the late ones",
        "col": { "exam": "Exam", "class": "Class", "teacher": "Teacher", "entered": "Marks entered", "status": "Status", "actions": "Actions" },
        "view": "View {{exam}}",
        "progress": "Progress",
        "entered_chart": "Marks entered",
        "marks_of": "{{entered}} marks out of {{total}}",
        "by_teacher": "By teacher",
        "by_teacher_chart": "Marks entered by teacher"
      },
      "bl": {
        "title": "Report cards",
        "hint": "Generated class by class, then published to students and parents once the councils have met.",
        "none": "No class to show for this period.",
        "generate_all": "Generate all",
        "generate": "Generate",
        "generate_of": "Generate {{class}}",
        "regenerate": "Regenerate",
        "regenerate_of": "Regenerate {{class}}",
        "publish": "Publish",
        "publish_of": "Publish {{class}}",
        "preview_of": "Preview {{class}}",
        "preview": "Report card preview",
        "prev_student": "Previous student",
        "next_student": "Next student",
        "col": { "class": "Class", "students": "Students", "complete": "Complete marks", "average": "Average", "state": "Report cards", "actions": "Actions" },
        "state_published_on": "Published to parents · {{date}}",
        "state_published": "Published to parents",
        "state_generated": "Generated · to publish",
        "state_ready": "Ready to generate",
        "state_missing_one": "{{count}} mark missing",
        "state_missing_other": "{{count}} marks missing",
        "generating_row": "Generating…",
        "generating": "Generating {{done}}/{{total}}",
        "missing_one": "{{class}}: {{count}} mark is missing, the averages will be provisional.",
        "missing_other": "{{class}}: {{count}} marks are missing, the averages will be provisional.",
        "generated_one": "{{count}} report card generated for {{class}}.",
        "generated_other": "{{count}} report cards generated for {{class}}.",
        "nothing": "Everything is already generated.",
        "all_done": "All report cards are generated.",
        "published_one": "{{class}} report cards published · {{count}} parent notified.",
        "published_other": "{{class}} report cards published · {{count}} parents notified."
      },
      "cc": {
        "title": "Class council",
        "hint": "A decision and an appreciation per student, carried onto the report cards.",
        "class": "Class",
        "propose": "Propose from the averages",
        "proposed": "Decisions proposed from the averages and attendance: to confirm at the council.",
        "pv": "Minutes (PV)",
        "save": "Save",
        "saved": "Decisions of the {{class}} council saved · carried onto the report cards.",
        "none": "No student to show for this class and period.",
        "pill": "{{label}} · {{count}}",
        "class_line_one": "Class average {{average}} · {{count}} student",
        "class_line_other": "Class average {{average}} · {{count}} students",
        "col": { "rank": "Rank", "student": "Student", "average": "Average", "absences": "Absences", "decision": "Decision", "appreciation": "Appreciation" },
        "decision_for": "Decision for {{name}}",
        "note_for": "Appreciation for {{name}}",
        "sign_head": "The head teacher",
        "sign_principal": "The principal"
      },
      "an": {
        "all_levels": "All levels",
        "none": "No published marks in this period yet.",
        "note": "Pass rate = share of students whose average reaches the pass mark.",
        "by_subject": "Pass rate by subject",
        "goal": "Goal {{pct}} %",
        "under_goal": "Below the goal: {{subjects}}.",
        "none_under_goal": "Every subject reaches the goal.",
        "by_level": "Average by level",
        "current": "Current period",
        "previous": "Previous period",
        "distribution": "Distribution of averages",
        "students_one": "{{count}} student",
        "students_other": "{{count}} students",
        "mean": "mean {{mean}}",
        "counts": "{{below}} below the pass mark · {{middle}} in between · {{high}} honours",
        "periods": "Averages by level and period"
      }
    },
    "report_cards": {
      "title": "Report card",
      "provisional": "Provisional report card",
      "paper_of": "Report card of {{name}}",
      "school_line": "{{city}} · {{year}}",
      "period_as_of": "{{period}} · as of {{date}}",
      "class_line": "Class {{class}}",
      "born": "born {{date}}",
      "registration": "ID {{number}}",
      "head_teacher": "Head teacher: {{name}}",
      "class_size_one": "Class size: {{count}} student",
      "class_size_other": "Class size: {{count}} students",
      "col": { "subject": "Subject", "coefficient": "Coef.", "marks": "Marks", "average": "Average", "class": "Class", "range": "Min – Max", "appreciation": "Appreciation" },
      "status": { "abs": "Abs.", "disp": "Disp." },
      "overall": "General average",
      "rank": "Rank",
      "rank_of": "{{rank}} of {{size}}",
      "absences": "Absences",
      "absences_detail": "of which {{justified}} justified · {{lates}} late arrivals",
      "council": "Council decision",
      "decision": { "felicitations": "Congratulations", "admis": "Admitted", "avertissement": "Warning", "redouble": "Repeats the year" },
      "dated": "{{city}}, {{date}}",
      "signature": "The principal",
      "none": "There is no report card to print yet.",
      "back": "Back",
      "print": "Print",
      "pv": { "title": "Class council minutes", "none": "This class has no student to list." }
    },
    "homework": {
      "duration_min": "{{m}} min",
      "duration_h": "{{h}} h",
      "duration_hm": "{{h}} h {{m}}",
      "attachment_open_failed": "The file could not be opened.",
      "status": { "open": "In progress", "check": "To check", "done": "Checked" },
      "list": {
        "search": "Search a homework",
        "search_hint": "Search a homework or a subject…",
        "hide_done": "Hide completed homework",
        "subjects": "Subjects",
        "all_subjects": "All",
        "group": { "today": "Today", "week": "This week", "later": "Later", "done": "Done" },
        "none": "No homework matches",
        "none_hint": "Change the subject or clear the search.",
        "reset": "Clear the filters",
        "empty": "No homework",
        "empty_hint": "Nothing to hand in for now."
      },
      "row": {
        "verified": "Checked by the teacher: the result is closed",
        "tick": "Done: {{title}}",
        "open": "See the details: {{title}}",
        "about": "~{{time}}",
        "attachments_one": "{{count}} attachment",
        "attachments_other": "{{count}} attachments",
        "revision": "Exam revision",
        "done_on": "done on {{date}}",
        "done": "done",
        "today": "today"
      },
      "discard": { "title": "Discard what you typed?", "body": "Closing now loses the text you entered.", "confirm": "Discard" },
      "difficulty": {
        "title": "Report a difficulty",
        "for": "{{title}} · {{teacher}} will receive your message.",
        "about": "About “{{title}}”: {{reason}}.",
        "write": "Write to the teacher",
        "more": "Explain in a few words (optional)",
        "more_hint": "e.g. I do not know how to start exercise 14",
        "reason": {
          "comprehension": "I do not understand the instructions",
          "stuck": "I am stuck on a specific exercise",
          "attachment": "The attachment will not open",
          "time": "I will not have time (another homework, an absence…)"
        }
      },
      "drawer": {
        "mark": "Mark as done",
        "unmark": "Put back to do",
        "given": "{{subject}} · given on {{date}}",
        "due": "Due {{date}}",
        "instructions": "Instructions",
        "no_instructions": "No instructions were given.",
        "write": "Write",
        "attachments": "Attachments",
        "no_attachments": "No attachment.",
        "open_file": "Open {{name}}",
        "hand_in": "Hand in my work",
        "meta": "{{subject}} · for {{due}} · given on {{given}}",
        "tab": { "info": "Instructions", "who": "Who did it", "comments": "Comments" },
        "remind": "Remind",
        "reminded_one": "Reminder sent to {{count}} student",
        "reminded_other": "Reminder sent to {{count}} students",
        "verify": "Mark as checked",
        "verified_one": "“{{title}}” checked · {{count}} not done reported to the parents",
        "verified_other": "“{{title}}” checked · {{count}} not done reported to the parents",
        "delete": "Delete",
        "delete_title": "Delete this homework?",
        "delete_body": "The students and the parents will no longer see it.",
        "deleted": "Homework deleted.",
        "postpone": "Postpone",
        "postpone_title": "Postpone the due date",
        "new_due": "New due date",
        "postpone_hint": "The students and the parents are told.",
        "postponed": "Due date moved to {{date}}.",
        "comments_soon": "Comments are not available yet.",
        "who_empty": "No student in this class.",
        "who_filter": "Show",
        "who_all": "All",
        "who_not_done": "Not done",
        "tick_all": "Tick all",
        "did": "done",
        "did_not": "not done"
      },
      "student": {
        "title": "My homework",
        "export": "Add to my calendar",
        "exported_one": "Calendar exported (.ics) · {{count}} homework",
        "exported_other": "Calendar exported (.ics) · {{count}} homework",
        "bravo": "Well done! “{{title}}” moves to Done.",
        "undone": "“{{title}}” is back in your to-do list.",
        "sub": {
          "today_one": "{{count}} due today",
          "today_other": "{{count}} due today",
          "none_today": "Nothing due today",
          "week": "{{count}} this week",
          "on_time": "{{pct}}% on time"
        },
        "load": "Workload of the week",
        "load_hint": "Estimated time per due day · {{total}} min in all",
        "minutes_unit": "min",
        "on_time": "Handed in on time this {{period}}",
        "on_time_detail": "{{done}} of {{total}} · streak of {{streak}}"
      },
      "teacher": {
        "title": "Homework",
        "export": "Export",
        "new": "New homework",
        "kpi": { "open": "In progress", "check": "To check", "done": "Done on average", "repeat": "Repeated misses", "delta": "{{delta}} pts this month" },
        "search_hint": "Search a homework…",
        "status": "Status",
        "segment": { "all": "All", "open": "In progress", "check": "To check", "done": "Checked" },
        "classes": "Classes",
        "group": {
          "past": "Past due",
          "past_sub": "to check",
          "done": "Checked",
          "done_sub": "past weeks",
          "today": "today",
          "tomorrow": "tomorrow",
          "in_days_one": "in {{count}} day",
          "in_days_other": "in {{count}} days"
        },
        "sub": { "open": "{{count}} in progress", "check": "{{count}} to check", "classes_one": "{{count}} class", "classes_other": "{{count}} classes" },
        "empty": "No homework yet",
        "empty_hint": "Give the first one to your classes.",
        "by_class": "Done by class",
        "since": "since {{date}}",
        "goal": "Goal {{pct}}%",
        "by_class_note_one": "School average: {{school}}%. {{classes}} is below the {{goal}}% goal.",
        "by_class_note_other": "School average: {{school}}%. {{classes}} are below the {{goal}}% goal.",
        "by_class_ok": "School average: {{school}}%. Every class reaches the {{goal}}% goal.",
        "repeat": {
          "title": "Often not done",
          "none": "No student often misses homework.",
          "line_one": "{{count}} not done out of {{total}}",
          "line_other": "{{count}} not done out of {{total}}",
          "warn": "Warn the parents of {{name}}",
          "subject": "Homework not done: {{name}}",
          "body_one": "{{name}} has not done {{count}} of the last {{total}} homework assignments.",
          "body_other": "{{name}} has not done {{count}} of the last {{total}} homework assignments."
        },
        "row": { "say_done": "{{pct}}% say they did it", "done_share": "{{pct}}% done" }
      },
      "dialog": {
        "title": "New homework",
        "classes": "Class(es) · one homework per class, same instructions",
        "subject": "Subject",
        "your_subject": "your subject",
        "due": "Due for",
        "lesson_at": "lesson at {{time}}",
        "other_date": "Another date…",
        "date": "Date",
        "name": "Title",
        "name_hint": "e.g. Exercises 16 to 20 p. 42",
        "instructions": "Instructions",
        "instructions_hint": "What the students must do, the estimated time, how to hand it in…",
        "estimate": "Estimated time",
        "hand_in": "Hand-in",
        "notebook": "In the notebook",
        "online": "Online",
        "attachments": "Attachments",
        "drop": "Drop files here or browse",
        "files_hint": "PDF, image, Word · {{max}} MB max per file · {{limit}} files max",
        "remove_file": "Remove {{name}}",
        "revision": "Exam revision",
        "notify": "Warn the parents",
        "notify_hint": "Warn the parents (notification + reminder the day before)",
        "give": "Give the homework",
        "created": "Homework given to {{classes}}",
        "created_parents": "Homework given to {{classes}} · parents warned",
        "err_file_type": "“{{name}}” is not allowed: PDF, image or Word only.",
        "err_file_size": "“{{name}}” is over {{max}} MB.",
        "err_files_count": "No more than {{max}} attachments.",
        "no_subject": "Choose a subject."
      }
    },
    "discipline": {
      "unavailable_title": "Discipline is switched off",
      "unavailable_body": "Your school does not use the discipline module.",
      "forbidden_title": "You cannot see the discipline records",
      "forbidden_body": "Ask the school office for the right to view sanctions.",
      "period": "Period",
      "sub_pending_one": "{{count}} sanction awaits your approval",
      "sub_pending_other": "{{count}} sanctions await your approval",
      "sub_none": "No sanction awaiting approval",
      "sub_count_one": "{{count}} sanction in the period",
      "sub_count_other": "{{count}} sanctions in the period",
      "sub_exits_one": "{{count}} exit pass today",
      "sub_exits_other": "{{count}} exit passes today",
      "export": {
        "button": "Export",
        "csv": "Sanctions (CSV)",
        "pdf": "Sanctions register (PDF)",
        "file": "sanctions",
        "done": "Sanctions exported.",
        "col": { "date": "Date", "student": "Student", "class": "Class", "type": "Type", "duration": "Duration", "reason": "Reason", "description": "Description", "reported_by": "Reported by", "status": "Status" }
      },
      "add": "Add a sanction",
      "kpi": {
        "count": "Sanctions this {{period}}",
        "vs": "{{delta}} vs the previous period",
        "students": "{{learners}} concerned",
        "students_hint": "{{pct}} % of the {{learnersInline}}",
        "exclusions": "Exclusions",
        "exclusions_hint": "{{temp}} temporary · {{def}} permanent",
        "exits": "Exit passes today",
        "exits_hint_one": "{{count}} request pending",
        "exits_hint_other": "{{count}} requests pending",
        "exits_none": "No request pending"
      },
      "tab": { "sanctions": "Sanctions", "stats": "Statistics", "exits": "Exit passes" },
      "queue": {
        "title": "To approve",
        "hint": "Proposed by teachers · the parents are only told after your approval",
        "empty": "Nothing to approve. New proposals will arrive here.",
        "approve": "Approve and notify",
        "edit": "Edit",
        "refuse": "Refuse",
        "of": "{{action}}: {{name}}",
        "proposed_by": "Proposed by {{name}} ({{subject}}) · incident on {{date}}",
        "proposed_by_plain": "Proposed by {{name}} · incident on {{date}}",
        "proposed_anon": "Proposed · incident on {{date}}"
      },
      "history_one": "Sanction no. {{count}} of the year",
      "history_other": "Sanction no. {{count}} of the year",
      "table": {
        "title": "Sanctions",
        "count": "{{shown}} of {{total}}",
        "search": "Student, class, reason…",
        "search_label": "Search a sanction",
        "filter": "Filter by type",
        "all": "All",
        "warnings": "Warnings",
        "detentions": "Detentions",
        "exclusions": "Exclusions",
        "col": { "date": "Date", "student": "Student", "type": "Type", "reason": "Reason", "status": "Status" },
        "by": "by {{name}}",
        "office": "the school office",
        "empty_title": "No sanction in this period",
        "empty_body": "The sanctions given in the period appear here."
      },
      "status": { "proposed": "Proposed", "approved": "Approved", "notified": "Notified", "executed": "Carried out", "awaiting_council": "Awaiting the council", "cancelled": "Cancelled", "refused": "Refused" },
      "row": {
        "renotify": "Notify the parents again",
        "execute": "Mark as carried out",
        "approve_council": "The council confirmed it: approve",
        "letter": "Letter to the parents (PDF)",
        "record": "Student record",
        "cancel": "Cancel the sanction"
      },
      "dialog": {
        "title_add": "Add a sanction",
        "title_propose": "Propose a sanction",
        "title_approve": "Edit the proposal",
        "date": "Date of the incident",
        "type": "Type",
        "type_hint": { "avertissement": "written, on file", "retenue": "detention hours", "exclusion_temp": "1 to 8 days", "exclusion_def": "disciplinary council" },
        "duration": "Duration",
        "duration_retenue": "Length of the detention",
        "duration_exclusion_temp": "Length of the exclusion",
        "duration_none": "—",
        "duration_def": "Permanent",
        "start": "Start",
        "reason": "Reason",
        "reported_by": "Reported by",
        "office": "School office",
        "description": "Description (visible to the parents)",
        "description_placeholder": "What happened, in a few factual sentences…",
        "notify": "Notify the parents",
        "channels": { "sms": "SMS", "email": "E-mail", "app": "Notification" },
        "channels_hint": "The parents’ notification preferences decide which channels are used.",
        "summon": "Invite the parents to a meeting",
        "council_warning": "A permanent exclusion must be pronounced by the disciplinary council. It will be created “Awaiting the council”.",
        "submit_add": "Save the sanction",
        "submit_propose": "Send the proposal",
        "submit_approve": "Approve with these changes"
      },
      "refuse": {
        "title": "Refuse the proposal",
        "message": "Message to the teacher",
        "default": "Thank you for the report. I would rather talk to the student first; I will keep you posted.",
        "submit": "Refuse"
      },
      "approve_council": { "title": "Approve this sanction?", "body": "The parents will be told.", "confirm": "Approve" },
      "cancel": {
        "title": "Cancel this sanction?",
        "body": "The sanction of {{name}} is withdrawn. If the parents were told, they are told that it is cancelled.",
        "confirm": "Cancel the sanction"
      },
      "done": {
        "saved": "{{type}} saved for {{name}}.",
        "saved_notified": "{{type}} saved for {{name}}. The parents were told.",
        "approved": "Sanction approved for {{name}}.",
        "approved_notified": "Sanction approved for {{name}}. The parents were told.",
        "council": "Permanent exclusion saved for {{name}}: awaiting the council.",
        "proposed": "Proposal sent to the school office.",
        "refused": "Proposal refused. {{name}} got your message.",
        "renotified": "The parents of {{name}} were told again.",
        "executed": "Sanction of {{name}} marked as carried out.",
        "cancelled": "Sanction of {{name}} cancelled."
      },
      "stats": {
        "by_month": "Sanctions per month",
        "by_type": "By type",
        "by_class": "By class",
        "by_reason": "By reason",
        "current": "This period",
        "previous": "Previous period",
        "total": "sanctions",
        "avertissement": "Warnings",
        "retenue": "Detentions",
        "exclusion": "Exclusions",
        "empty": "No sanction in this period",
        "empty_body": "The statistics appear as soon as sanctions are given."
      },
      "repeat": {
        "title": "Repeat offenders",
        "hint": "Two sanctions or more in the period",
        "count_one": "{{count}} student",
        "count_other": "{{count}} students",
        "none": "No repeat offender in the period.",
        "record": "Student record: {{name}}",
        "insight_one": "{{count}} of the {{total}} repeat offenders is in {{class}}.",
        "insight_other": "{{count}} of the {{total}} repeat offenders are in {{class}}."
      },
      "exits": {
        "title": "Exit passes",
        "hint": "The lessons missed show as “Authorised” in the roll call, without counting as an absence.",
        "day": "Day"
      }
    },
    "child": {
      "tab": {
        "overview": "Overview",
        "grades": "Grades",
        "attendance": "Attendance",
        "homework": "Homework",
        "discipline": "Discipline",
        "teachers": "Teachers"
      },
      "kpi": {
        "average": "General average",
        "attendance": "Attendance",
        "homework": "Homework done",
        "next_exam": "Next exam",
        "discipline": "Discipline",
        "to_justify_one": "{{count}} absence to justify",
        "to_justify_other": "{{count}} absences to justify",
        "all_justified": "All justified",
        "homework_sub": "{{done}} of {{total}} on time",
        "today": "today",
        "days_left_one": "D-{{count}}",
        "days_left_other": "D-{{count}}",
        "no_sanction": "no sanction",
        "sanctions_one": "{{count}} sanction",
        "sanctions_other": "{{count}} sanctions"
      },
      "today": "Today",
      "week": "This week",
      "week_none": "Nothing due in the coming days.",
      "week_done": "done",
      "week_todo": "to do",
      "week_exam": "exam",
      "subjects": "Subjects vs the class",
      "stable": "stable",
      "latest": "Latest marks",
      "all_grades": "All the grades",
      "latest_none": "No mark to show yet.",
      "head_word": "Word from the head teacher",
      "head_none": "No word from the head teacher yet",
      "homework_hint": "Read only: {{name}} ticks off the homework in their own space.",
      "homework_of": "Homework of {{name}}",
      "homework_filter": "Filter the homework",
      "filter_all": "All",
      "filter_todo": "To do",
      "filter_done": "Done",
      "write_subject": "About {{name}} ({{class}})",
      "menu": {
        "report": "Download the report card",
        "exit": "Request an exit authorisation",
        "contact": "Update my contact details"
      },
      "discipline": {
        "sanctions": "Sanctions",
        "count_one": "{{count}} this year",
        "count_other": "{{count}} this year",
        "none": "No sanction this year",
        "none_hint": "{{name}} has received no warning or exclusion.",
        "hours_one": "{{count}} hour",
        "hours_other": "{{count}} hours",
        "days_one": "{{count}} day",
        "days_other": "{{count}} days",
        "request": "Request",
        "type": {
          "avertissement": "Warning",
          "retenue": "Detention",
          "exclusion_temp": "Temporary exclusion",
          "exclusion_def": "Permanent exclusion"
        },
        "reason": {
          "comportement": "Behaviour",
          "telephone": "Phone",
          "retards": "Lateness",
          "absence": "Absence",
          "tricherie": "Cheating",
          "violence": "Violence",
          "degradation": "Damage"
        },
        "status": {
          "proposed": "Proposed",
          "approved": "Decided",
          "executed": "Carried out",
          "awaiting_council": "Awaiting the council",
          "cancelled": "Cancelled",
          "refused": "Refused"
        }
      },
      "teachers": {
        "none": "No teacher to show yet.",
        "head": "Head teacher",
        "average": "{{who}} {{average}} · class {{classAverage}}",
        "write": "Write"
      }
    },
    "deliberations": {
      "unavailable_title": "Deliberations are for universities",
      "unavailable_body": "This establishment does not hold jury deliberations.",
      "forbidden_title": "You cannot see the deliberations",
      "forbidden_body": "Ask an administrator for the permission to view deliberations.",
      "archive_note": "The Deliberations feature is switched off: you can read the deliberations that exist, nothing can be changed.",
      "sub_students_one": "{{count}} student",
      "sub_students_other": "{{count}} students",
      "sub_review_one": "{{count}} case to review",
      "sub_review_other": "{{count}} cases to review",
      "status": { "draft": "Draft", "locked": "Locked", "published": "Published" },
      "session": { "principale": "Main session", "rattrapage": "Resit session" },
      "decision": { "admis": "Admitted", "admis_rachat": "Admitted by buy-back", "rattrapage": "Resit", "ajourne": "Failed", "exclu": "Excluded" },
      "mention": { "passable": "Pass", "assez_bien": "Fairly good", "bien": "Good", "tres_bien": "Very good", "none": "No honours" },
      "unit_status": { "capitalisee": "earned", "compensee": "compensated", "non_acquise": "not earned", "dispensee": "dispensed", "unknown": "—" },
      "regime": { "continu": "continuous", "mixte": "{{cc}}/{{exam}}", "examen": "exam" },
      "col": {
        "student": "Student",
        "average": "Average",
        "credits": "Credits",
        "credits_n_one": "{{count}} credit",
        "credits_n_other": "{{count}} credits",
        "decision": "Decision",
        "jury": "Jury",
        "jury_tip": "Jury points (max {{max}})",
        "mention": "Honours",
        "unit_toggle": "Show the ECUE of {{code}} {{name}}",
        "coef": "coef. {{coef}} · {{regime}}"
      },
      "matrix": {
        "of_jury": "of which +{{points}} jury",
        "granted": "+{{points}} granted",
        "add_points": "Add jury points",
        "zero_credits": "0 cr.",
        "absences_tip_one": "{{count}} absence in tutorials",
        "absences_tip_other": "{{count}} absences in tutorials",
        "resit_mark": "Resit mark",
        "under_pass": "(under the pass mark)",
        "eliminatory": "(eliminatory)",
        "dispensed": "Disp.",
        "kept": "The main session's decision stands: jury points change nothing"
      },
      "selector": {
        "year": "School year",
        "mention": "Programme",
        "choose_mention": "Choose a programme",
        "level": "Level",
        "choose_level": "Choose a level",
        "semester": "{{period}} {{n}}",
        "session": "Session",
        "jury": "Jury: {{jury}}",
        "pick_title": "Choose a level to open its deliberation",
        "pick_body": "Pick the year, the programme, the level, the semester and the session. The deliberation is created the first time it is opened.",
        "cannot_open": "This deliberation cannot be opened",
        "none_title": "No deliberation yet",
        "none_body": "There is no deliberation for this selection, and you cannot create one.",
        "not_started": "{{year}}: {{period}} {{n}} starts on {{date}}, so there are no marks yet."
      },
      "step": {
        "label": "Steps of the deliberation",
        "marks_done": "Marks complete",
        "marks_todo": "Marks to complete",
        "marks_sub": "{{elements}} ECUE · {{pct}} % entered",
        "marks_none": "no marks expected",
        "rules": "Rules applied",
        "rules_sub": "automatic calculation",
        "jury": "Jury decisions",
        "jury_sub_one": "{{count}} jury adjustment",
        "jury_sub_other": "{{count}} jury adjustments",
        "lock": "Locking",
        "lock_sub": "no more changes",
        "publish": "Publication · minutes",
        "publish_sub": "student space, transcripts"
      },
      "kpi": {
        "admission": "Admission rate",
        "mean": "Class average",
        "credits": "Credits earned (average)",
        "full_one": "{{count}} student at {{total}} / {{total}}",
        "full_other": "{{count}} students at {{total}} / {{total}}",
        "resit": "Resit",
        "resit_hint": "convoked in June · {{count}} by buy-back",
        "failed": "Failed",
        "failed_hint": "repeat or capitalise · {{count}} by buy-back",
        "excluded": "Excluded (absences)",
        "excluded_hint": "limit: more than {{max}} absences in tutorials",
        "excluded_off": "elimination for absences is off",
        "vs": "{{delta}} vs last year",
        "pts": "pts"
      },
      "results": {
        "title": "Results",
        "hint": "Click a course unit for its ECUE, a decision for its reasons",
        "expand_all": "Expand all",
        "collapse_all": "Collapse all",
        "export": "Export",
        "search": "Name or registration number…",
        "search_label": "Search a student",
        "all": "All",
        "group": "Group",
        "all_groups": "All groups",
        "sort": "Sort",
        "sort_average": "Sort: average",
        "sort_name": "Sort: name",
        "sort_credits": "Sort: credits",
        "sort_decision": "Sort: decision",
        "empty": "No student in this deliberation",
        "empty_hint": "The level has no active student in this school year.",
        "select_all": "Select all the students shown",
        "select": "Select {{name}}",
        "open": "Open the detail of {{name}}"
      },
      "banner": {
        "locked": "Deliberation locked by {{name}}: the marks and decisions can no longer change.",
        "published": "Results published on {{date}}: nothing can change any more."
      },
      "bulk": { "releves": "Transcripts", "after_lock": "Transcripts print once the deliberation is locked", "convoke": "Convoke to the resit", "convoke_none": "None of the selected students is convoked to the resit" },
      "menu": { "label": "Minutes and transcripts", "pv": "Deliberation minutes", "releves": "Transcripts", "admitted": "List of admitted students", "rachat": "Buy-back / capitalisation list", "convocations": "Resit convocations" },
      "lock": {
        "button": "Lock",
        "unlock": "Unlock",
        "undone": "Deliberation unlocked",
        "title": "Lock the deliberation",
        "marks_missing_one": "{{count}} mark is still missing",
        "marks_missing_other": "{{count}} marks are still missing",
        "marks_ok": "All the marks are entered ({{count}} ECUE)",
        "marks_none": "No marks are expected in this session",
        "jury_one": "{{count}} jury adjustment recorded in the journal",
        "jury_other": "{{count}} jury adjustments recorded in the journal",
        "edge_some_one": "{{count}} student between {{from}} and {{to}} without a jury decision",
        "edge_some_other": "{{count}} students between {{from}} and {{to}} without a jury decision",
        "edge_none": "No edge case left",
        "after": "After locking: the minutes, the transcripts and the publication become possible",
        "confirm": "Lock",
        "done": "Deliberation locked · minutes ready to print"
      },
      "publish": {
        "button": "Publish",
        "published": "Published",
        "title": "Publish the results",
        "text_one": "{{count}} result will be visible to the students of {{level}} in their student space, where they can print their transcript.",
        "text_other": "{{count}} results will be visible to the students of {{level}} in their student space, where they can print their transcript.",
        "hidden_text_one": "{{count}} result will be published, but the students of {{level}} will not see their results in their student space.",
        "hidden_text_other": "{{count}} results will be published, but the students of {{level}} will not see their results in their student space.",
        "confirm": "Publish",
        "done_one": "Results published · {{count}} transcript",
        "done_other": "Results published · {{count}} transcripts",
        "student_space": "Student space: the transcript and the decision, with the notice in the app",
        "email": "E-mail notification to the students and their parents",
        "sms_rattrapage": "SMS to the students convoked to the resit and their parents",
        "no_sms": "Your establishment has no SMS option.",
        "parents_note": "Each notice goes to the student and to their parents, on the channels switched on.",
        "show_rank": "Show the rank in the student space"
      },
      "jury": {
        "title": "Jury points",
        "for": "{{name}} · {{session}}",
        "for_student": "Jury points for {{name}}",
        "points": "Points granted (max {{max}})",
        "reason": "Reason",
        "reasons": { "assiduite": "Attendance and progress", "social": "Social case", "saisie": "Data-entry error corrected", "collegiale": "Collective decision" },
        "before": "Before",
        "after": "After",
        "decision_by_server": "the decision is worked out when applied",
        "range": "Between 0.01 and {{max}}",
        "note": "Entered in the journal and the minutes with your name.",
        "apply": "Apply",
        "saved": "+{{points}} to {{name}} · {{before}} → {{after}}"
      },
      "why": {
        "open": "Why {{name}} is {{decision}}",
        "result": "{{credits}} / {{total}} credits · {{mention}}",
        "with_mention": "honours: {{mention}}",
        "no_mention": "no honours"
      },
      "reason": {
        "average": "Average {{raw}} / 20",
        "average_jury": "Average {{raw}} + {{jury}} (jury) = {{average}} / 20",
        "all_validated": "All the course units are validated",
        "all_validated_no_compensation": "All the course units are validated, compensation is off",
        "compensation": "Compensation: average at or above the pass mark with no eliminatory mark, the units below it are earned",
        "rachat": "Buy-back: {{credits}} / {{total}} credits (at least {{min_credits}}), average at least {{min_average}} and no eliminatory mark",
        "rachat_no_average": "Buy-back: {{credits}} / {{total}} credits (at least {{min_credits}}) and no eliminatory mark",
        "rachat_impossible": "Buy-back not possible: {{credits}} / {{total}} credits (at least {{min_credits}}), average {{average}} (at least {{min_average}})",
        "rachat_impossible_no_average": "Buy-back not possible: {{credits}} / {{total}} credits (at least {{min_credits}})",
        "below_pass": "Average under the pass mark",
        "eliminatory": "Eliminatory mark (under {{threshold}}): {{list}}",
        "absence_elimination": "Eliminated for more than {{max}} absences in tutorials: {{list}}",
        "rattrapage_convocation": "Convoked to the ECUE not earned: {{list}}",
        "owed_next_year": "To validate next year: {{list}}",
        "rattrapage_best_kept": "Resit session: the better of the two marks is kept for each ECUE",
        "principal_kept": "Decision of the main session kept ({{decision}})"
      },
      "side": {
        "dist": "Distribution of the averages",
        "dist_n_one": "{{count}} student · median {{median}}",
        "dist_n_other": "{{count}} students · median {{median}}",
        "mean": "mean {{mean}}",
        "pass_mark": "pass mark {{line}}",
        "dashed": "dashed line: last year",
        "decisions": "Decisions",
        "vs_last": "vs last year",
        "admitted": "admitted",
        "deltas": "Change in each decision since last year",
        "last_line": "Last year: {{pct}} % admitted, average {{mean}}",
        "ue": "Pass rate by course unit",
        "ue_hint": "Share of the students with a unit average at the pass mark or above, before compensation. The tick is last year."
      },
      "rules": {
        "title": "Applied rules",
        "hint": "Each change recalculates every decision.",
        "frozen": "The rules are frozen since the lock.",
        "decree": "decree of 30/06/2009",
        "note": "The eliminatory mark and the absence limit are the establishment's own (no national text sets them).",
        "changed": "Rule updated · decisions recalculated"
      },
      "journal": {
        "title": "Jury journal",
        "count_one": "{{count}} adjustment",
        "count_other": "{{count}} adjustments",
        "empty": "No jury points in this session",
        "empty_hint": "Use “+” in the Jury column.",
        "entry": "+{{points}} to {{name}}",
        "undone": "Adjustment undone · decision recalculated",
        "undo_of": "Undo the adjustment of {{name}}",
        "edge_title": "Edge cases · {{from}} to {{to}}",
        "edge_none": "No edge case.",
        "edge_line": "{{credits}} / {{total}} credits · {{decision}}",
        "add": "Points",
        "add_for": "Add jury points to {{name}}"
      },
      "drawer": {
        "record": "Student record",
        "jury": "Jury points",
        "releve": "Transcript",
        "ecue": "ECUE",
        "cc": "CC",
        "exam": "Exam",
        "resit": "Resit",
        "absences": "Abs.",
        "mark": "Mark",
        "unit_capitalisee": "{{credits}} credits earned",
        "unit_compensee": "compensated",
        "unit_non_acquise": "to retake"
      },
      "convoke": {
        "loading": "Loading the students",
        "subject": "Convocation to the resit session",
        "failed": "Some students could not be loaded, so the convocation was not prepared.",
        "body": "You are convoked to the resit session of {{level}}, {{period}} {{n}}. Check the ECUE concerned in your student space."
      },
      "csv": {
        "done_one": "List saved · {{count}} student",
        "done_other": "List saved · {{count}} students",
        "col": { "registration": "Registration no.", "student": "Student", "group": "Group", "average": "Average", "credits": "Credits", "decision": "Decision", "mention": "Honours", "earned": "Units earned", "owed": "Units owed", "elements": "ECUE to retake" },
        "file": { "admitted": "admitted", "rachat": "buy-back", "convocations": "resit-convocations" }
      },
      "releve": {
        "paper_of": "Transcript of {{name}}",
        "dispensed": "Dispensed",
        "title": "Transcript",
        "line": "{{level}} · semester {{n}} · {{session}}",
        "rank": "Rank",
        "dated": "Printed on {{date}}",
        "signature": "The president of the jury",
        "none": "There is no transcript to print.",
        "none_mine": "No transcript has been published yet.",
        "download": "Print the transcripts"
      },
      "pv": {
        "title": "Deliberation minutes",
        "line": "{{level}} · semester {{n}} · {{session}} {{year}}",
        "locked": "Locked by {{name}} on {{date}}",
        "decisions": "Decisions",
        "mean_one": "class average {{mean}} · {{count}} student",
        "mean_other": "class average {{mean}} · {{count}} students",
        "none": "There are no minutes to print.",
        "col": { "rank": "Rank", "registration": "Registration no.", "student": "Student", "average": "Average", "credits": "Credits", "decision": "Decision", "mention": "Honours" },
        "journal": "Jury journal",
        "journal_none": "No jury points were granted.",
        "jcol": { "student": "Student", "points": "Points", "reason": "Reason", "change": "Change", "by": "Granted by" },
        "sign_president": "The president of the jury",
        "sign_jury": "The members of the jury"
      }
    },
    "refusal": {
      "principal_not_locked": "Lock the main session first: the resit session follows its results.",
      "no_period": "No period is set up yet: add the periods of the school year first.",
      "no_teacher": "This exam has no teacher to remind.",
      "roll_incomplete": "Some rows of the roll call have no status yet. Complete it before saving.",
      "edit_window_closed_one": "The {{count}}-hour window to edit this roll call has closed.",
      "edit_window_closed_other": "The {{count}}-hour window to edit this roll call has closed.",
      "not_your_lesson": "This is not one of your lessons.",
      "lesson_not_on_date": "This lesson does not take place on that date.",
      "future_lesson": "This lesson has not taken place yet.",
      "already_recorded": "This lesson already has a roll call. Edit it instead.",
      "row_locked": "This person has an approved exit pass, so their status cannot change.",
      "unknown_student": "This person is not in the class.",
      "lesson_has_roll_calls": "This lesson has roll calls, so it cannot be deleted.",
      "already_justified": "This absence is already justified.",
      "nothing_to_justify": "There is no absence to justify.",
      "justify_window_closed_one": "The {{count}} day allowed to justify this absence has passed.",
      "justify_window_closed_other": "The {{count}} days allowed to justify this absence have passed.",
      "document_invalid": "The document is not valid: check its type and size.",
      "reason_required": "A reason is required.",
      "date_in_past": "The date cannot be in the past.",
      "invalid_transition": "This action is not possible in the current status.",
      "class_required": "Choose at least one class.",
      "type_not_for_kind": "This exam type does not exist for your establishment.",
      "period_required": "Choose the period.",
      "date_outside_period": "The date is outside the chosen period.",
      "not_your_class": "You do not teach this class.",
      "coefficient_invalid": "The coefficient is not valid.",
      "exam_has_marks": "This exam has marks, so it cannot be deleted.",
      "mark_out_of_range": "A mark is above the maximum of {{max}}. Nothing was saved.",
      "mark_step": "Marks go by steps of {{step}}.",
      "correction_window_closed_one": "The {{count}} day to correct marks after publication has passed.",
      "correction_window_closed_other": "The {{count}} days to correct marks after publication have passed.",
      "not_your_exam": "This is not one of your exams.",
      "goal_out_of_range": "The goal is out of range.",
      "card_published": "The report cards are published, so the appreciations are locked.",
      "not_generated": "Generate the report cards first.",
      "title_required": "A title is required.",
      "due_in_past": "The due date cannot be in the past.",
      "attachment_invalid": "An attachment is not valid: check its type and size.",
      "duration_required": "A duration is required.",
      "duration_out_of_range": "The duration is out of range.",
      "year_not_started": "This semester has not started, so there are no marks to deliberate yet.",
      "no_units": "No course unit is set up for this level and semester.",
      "jury_points_over_max": "Jury points cannot exceed {{max}}.",
      "deliberation_locked": "The deliberation is locked.",
      "marks_incomplete_one": "{{missing}} mark is still missing, so the deliberation cannot be locked.",
      "marks_incomplete_other": "{{missing}} marks are still missing, so the deliberation cannot be locked.",
      "not_locked": "Lock the deliberation first.",
      "already_published": "Already published.",
      "already_reminded": "The parents were already reminded about this absence.",
      "return_before_out": "The return time must be after the time of leaving.",
      "exam_not_held": "This exam has not taken place yet, so its marks cannot be published.",
      "no_marks": "No mark has been entered yet, so there is nothing to publish.",
      "message_required": "A message is required.",
      "exam_past": "This exam has already taken place, so there is nothing to remind.",
      "homework_verified": "The teacher has checked this homework: it can no longer be changed."
    }
  },
  "dashboard": {
    "common": {
      "greeting": "Hello {{name}}",
      "year": "School year",
      "learners": "pupils",
      "remind": "Send a reminder",
      "window": {
        "label": "Period shown",
        "week": "Week",
        "month": "Month",
        "year": "Year"
      },
      "delta": {
        "this_week": "{{value}} this week",
        "this_month": "{{value}} this month",
        "this_period": "{{value}} this {{period}}",
        "this_year": "{{value}} this year",
        "pt_vs_last_week": "{{value}} pt vs last week",
        "pt_vs_last_month": "{{value}} pt vs last month",
        "pt_vs_last_period": "{{value}} pt vs previous {{period}}",
        "pt_vs_last_year": "{{value}} pt vs last year",
        "pct_vs": "{{value}} % vs {{ref}}",
        "vs": "{{value}} vs {{ref}}"
      },
      "points_one": "{{value}} point",
      "points_other": "{{value}} points",
      "go": {
        "compare": "See the comparison",
        "results": "See the results",
        "attendance": "See attendance",
        "finance": "See finances",
        "teachers": "See the teachers",
        "enrolment": "See enrolment",
        "periods": "See the change by period"
      },
      "export": {
        "label": "Export",
        "png": "Export as PNG",
        "csv": "Export as Excel",
        "link": "Copy the view link",
        "png_done": "Chart exported (PNG)",
        "csv_done": "Data exported (Excel)",
        "link_done": "Link copied: the view keeps your filters",
        "failed": "The export failed."
      }
    },
    "insight": {
      "class_below_level_subject": "{{class}} is {{points}} below the level average in {{subject}}.",
      "class_leads_level": "{{class}} leads {{level}} with an average of {{average}}, {{points}} above the level.",
      "weekday_absences": "{{weekday}} accounts for {{share}} of absences: an absence rate of {{weekday_rate}} against {{other_rate}} on other days.",
      "subject_period_drop": "In {{year}}, {{subject}} lost {{points}} from one period to the next.",
      "subject_period_drop_others": "In {{year}}, {{subject}} lost {{points}} from one period to the next; every other subject improved.",
      "subject_period_drop_except": "In {{year}}, {{subject}} lost {{points}} from one period to the next; every other subject except {{exception}} improved.",
      "level_pass_drop": "{{level}} is down {{points}}: {{class}} has {{below_count}} {{learners}} below the pass mark, {{subject_count}} of them in {{subject}}.",
      "late_peak": "Lates peak at {{slot}} ({{share}} of all lates), mostly in {{classes}}.",
      "best_attendance_class": "{{class}} has held {{rate}} attendance since the start of the year, the best in the school.",
      "recovery_vs_years": "To date, {{rate}} of instalments are collected, against {{last_year}} last year and {{two_years}} two years ago.",
      "recovery_vs_years_last": "To date, {{rate}} of instalments are collected, against {{last_year}} last year.",
      "recovery_vs_years_only": "To date, {{rate}} of instalments are collected.",
      "class_overdue_share": "{{class}} accounts for {{share}} of late payments ({{amount}} out of {{total}}) with {{pupils_share}} of the {{learners}}.",
      "transfer_share_up": "Bank transfers reach {{share}} of payments ({{last_year}} last year): fewer visits to the front desk.",
      "transfer_share_last": "Bank transfers make up {{share}} of payments ({{last_year}} last year).",
      "transfer_share": "Bank transfers make up {{share}} of payments.",
      "teacher_calls_below_goal": "{{teacher}} makes {{pct}} of roll calls on time, {{points}} under the goal.",
      "girls_share_level": "{{level}} has {{pct}} girls, the highest share.",
      "headcount_growth_one": "Headcount grew by {{pct}} over {{count}} year.",
      "headcount_growth_other": "Headcount grew by {{pct}} over {{count}} years."
    },
    "staff": {
      "waiting": {
        "count_one": "{{count}} thing needs your reply",
        "count_other": "{{count}} things need your reply",
        "empty": "All caught up: nothing is waiting for your reply.",
        "unpaid": {
          "title_one": "{{count}} unpaid fee",
          "title_other": "{{count}} unpaid fees",
          "body": "{{amount}} in total.",
          "body_over_one": "{{amount}} in total, {{over}} of them more than {{count}} day late.",
          "body_over_other": "{{amount}} in total, {{over}} of them more than {{count}} days late.",
          "action": "Remind the families",
          "tip_one": "Send a reminder to {{count}} family",
          "tip_other": "Send a reminder to {{count}} families",
          "failed": "The late instalments could not be loaded."
        },
        "absences": {
          "title_one": "{{count}} absence to justify",
          "title_other": "{{count}} absences to justify",
          "body": "Today, in {{classes}}.",
          "action": "See the list",
          "tip": "Open today's absences"
        },
        "marks": {
          "title_one": "{{count}} exam without marks",
          "title_other": "{{count}} exams without marks",
          "body_one": "Held more than {{count}} day ago.",
          "body_other": "Held more than {{count}} days ago.",
          "action": "Remind the teachers",
          "tip": "Notify the teachers concerned",
          "sent_one": "{{count}} reminder sent",
          "sent_other": "{{count}} reminders sent"
        }
      },
      "kpi": {
        "students": "Active {{learners}}",
        "attendance": "Attendance rate",
        "average": "Overall average",
        "collected_week": "Collected this week",
        "collected_month": "Collected in {{month}}",
        "collected_period": "Collected this {{period}}",
        "collected_year": "Collected this year"
      },
      "ref": {
        "week": "last week",
        "month": "last month",
        "period": "previous {{period}}",
        "year": "last year"
      },
      "compare": {
        "title": "Compare",
        "level": "Level",
        "indicator": "Indicator",
        "indicators": {
          "average": "Average",
          "attendance": "Attendance",
          "lates": "Lates",
          "unpaid": "Unpaid"
        },
        "tab_periods": "{{period}} 1 vs 2",
        "tab_years": "Years",
        "tab_subjects": "Subjects",
        "presence_bar": "Attendance %",
        "chart": "Comparison: {{indicator}}",
        "chart_scaled": "Average out of 20 and attendance (in %, drawn on 20)",
        "below": "below the level",
        "scope_school": "This figure covers the whole school, not the chosen level.",
        "empty": "Nothing to compare yet.",
        "note_classes": "Gap vs the level average",
        "note_periods": "Gap vs the year's average",
        "note_years": "Gap vs the current year",
        "note_subjects": "Gap vs the school's average"
      },
      "unit": {
        "class": {
          "compare_subtitle": "Classes of the same level, periods, years",
          "compare_tab": "Classes of the level",
          "compare_hint": "Click a class to open its record.",
          "heatmap_title": "Absences: class × day",
          "watch_title": "Classes to watch",
          "watch_all_one": "See the class",
          "watch_all_other": "See all {{count}} classes",
          "watch_empty": "No class to watch."
        },
        "group": {
          "compare_subtitle": "Groups of the same level, periods, years",
          "compare_tab": "Groups of the level",
          "compare_hint": "Click a group to open its record.",
          "heatmap_title": "Absences: group × day",
          "watch_title": "Groups to watch",
          "watch_all_one": "See the group",
          "watch_all_other": "See all {{count}} groups",
          "watch_empty": "No group to watch."
        }
      },
      "trend": {
        "title": "Attendance by week",
        "previous": "Previous year",
        "empty": "No attendance recorded yet."
      },
      "fees": {
        "title": "Fees of the year",
        "paid": "Paid",
        "overdue": "Unpaid",
        "upcoming": "Upcoming",
        "recovered": "recovered"
      },
      "today": {
        "title": "Today at the school",
        "running": "● {{value}} running",
        "now": "Running",
        "next": "Next",
        "empty": "No lesson right now."
      },
      "heatmap": {
        "insight": "{{weekday}} hold {{share}} of the absences.",
        "empty": "No absence to show."
      },
      "weekdays": {
        "0": "Mondays",
        "1": "Tuesdays",
        "2": "Wednesdays",
        "3": "Thursdays",
        "4": "Fridays",
        "5": "Saturdays"
      },
      "subjects": {
        "title": "Average by subject",
        "empty": "No average yet."
      },
      "watch": {
        "average": "Avg.",
        "attendance": "Attendance",
        "unpaid_one": "{{count}} unpaid",
        "unpaid_other": "{{count}} unpaid",
        "trend": "Average of {{name}}, by week"
      }
    },
    "teacher": {
      "headcount": "{{count}} {{learners}}",
      "extra": {
        "lessons_one": "{{count}} lesson today",
        "lessons_other": "{{count}} lessons today",
        "rolls_one": "{{count}} roll call to do",
        "rolls_other": "{{count}} roll calls to do",
        "papers_one": "{{count}} paper to mark",
        "papers_other": "{{count}} papers to mark"
      },
      "give_homework": "Give homework",
      "new_exam": "New exam",
      "take_roll": "Take attendance",
      "roll_not_done": "Roll call not done",
      "roll_done": "Roll call done",
      "roll_todo": "Roll call to do",
      "no_lessons": "No lessons today.",
      "all_done": "That's all for today.",
      "free_day": "A free day.",
      "day": "My day",
      "week": "Week",
      "now": "Now",
      "upcoming": "Upcoming",
      "lunch": "Lunch break · {{duration}} free",
      "free": "Free period · {{duration}}",
      "homework_due": "Homework due {{date}}: {{title}}",
      "more": "+{{n}} more",
      "nothing_waiting": "Nothing is waiting for you.",
      "hero": {
        "now": "Current lesson",
        "next": "Next lesson",
        "minutes_left_aria_one": "{{count}} minute left",
        "minutes_left_aria_other": "{{count}} minutes left",
        "min_left": "min left",
        "since": "Running for {{minutes}} min",
        "starts_in": "Starts in {{duration}}",
        "homework": "Homework due {{date}}: {{title}} · {{done}}/{{total}} done",
        "exam": "{{exam}} on {{date}}",
        "details": "Lesson details",
        "next_label": "Next:",
        "next_at": "at {{time}}",
        "next_in": "in {{duration}}"
      },
      "drawer": {
        "class": "See the class",
        "timetable": "Timetable",
        "pupils": "Pupils",
        "exits": "Authorised exit: {{names}}",
        "average": "Class average",
        "roll": "Roll call",
        "roll_not_yet": "Not started",
        "homework": "Due {{date}} · {{done}}/{{total}} done"
      },
      "waiting": {
        "roll": "Roll call to do",
        "roll_for": "Take attendance for {{class}}",
        "roll_body": "lesson since {{start}}. The parents of absent pupils are told when you validate.",
        "papers": "Papers to mark",
        "ready": "ready to publish",
        "before": "before {{date}}",
        "more_exams_one": "+{{count}} more exam",
        "more_exams_other": "+{{count}} more exams",
        "continue": "Continue entering marks",
        "check": "Homework to check",
        "verify": "Check homework"
      },
      "kpi": {
        "average": "My classes' average",
        "attendance_in": "Attendance in {{subject}}",
        "attendance_all": "Attendance in my lessons",
        "homework": "Homework done",
        "below_pass": "{{learners}} under {{pass}}",
        "of_total": "of {{total}}",
        "pts": "pts",
        "since_first_exam": "{{value}} since the first exam",
        "curve": "Trend: {{kpi}}"
      },
      "classes": {
        "none": "No class to compare yet.",
        "title": "My classes compared",
        "line_note": "line = the school's average",
        "level": "Level",
        "all": "All my classes",
        "tab_bars": "Average & attendance",
        "tab_trend": "Trend",
        "tab_homework": "Homework done",
        "bars_label": "Average by class",
        "average_series": "Average /20",
        "attendance_label": "Attendance by class",
        "trend_label": "Average trend by class",
        "homework_label": "Homework done by class",
        "homework_note": "Share of homework marked done this period.",
        "school_line": "School {{value}}",
        "school_attendance": "School attendance {{value}} %",
        "school_homework": "School {{value}} %",
        "gap": "Gap to the average",
        "row_attendance": "attendance {{value}} %",
        "falling": "{{class}} has been falling for {{weeks}} weeks ({{points}}).",
        "under": "{{n}} {{learners}} under {{threshold}}.",
        "under_in": "{{n}} {{learners}} under {{threshold}} in {{exam}}.",
        "open": "Open my classes"
      },
      "watch": {
        "title": "{{learners}} to watch",
        "chip_grades": "Grades",
        "chip_absences": "Absences",
        "chip_homework": "Homework",
        "none": "No pupil to watch.",
        "none_filtered": "No pupil for these filters.",
        "marks_drop": "Grades {{value}}",
        "below_pass": "Under {{pass}}",
        "absences_one": "{{count}} absence",
        "absences_other": "{{count}} absences",
        "lates_one": "{{count}} late",
        "lates_other": "{{count}} lates",
        "homework_one": "{{count}} homework missed",
        "homework_other": "{{count}} homework missed",
        "message": "Message to the parents",
        "message_to": "Message to the parents of {{name}}",
        "in_class": "See in the class",
        "average": "Average",
        "class_average": "Class average {{value}}",
        "last_marks_one": "Last mark",
        "last_marks_other": "Last {{count}} marks"
      },
      "exams": {
        "title": "Upcoming exams",
        "all": "See all",
        "none": "No upcoming exam.",
        "coefficient": "coef. {{value}}",
        "in_days": "in {{days}} d"
      },
      "recent": {
        "title": "Recent",
        "none": "Nothing new.",
        "reply": "Reply",
        "deleted": "Deleted account",
        "roll": "Roll call of {{class}} validated · {{present}} present, {{absent}} absent"
      }
    },
    "student": {
      "timetable": "My timetable",
      "report_card": "My report card",
      "see_all": "See all",
      "no_lessons": "No lessons today.",
      "all_done": "That's all for today.",
      "extra": {
        "homework_today_one": "{{count}} homework due today",
        "homework_today_other": "{{count}} homework due today",
        "homework_done": "today's homework done"
      },
      "hero": {
        "now": "Current lesson",
        "next": "Next lesson",
        "open": "{{subject}}: open the timetable",
        "minutes_left_aria_one": "{{count}} minute left",
        "minutes_left_aria_other": "{{count}} minutes left",
        "min_left": "min left",
        "live": "Now",
        "at": "At {{time}}",
        "exam": "{{exam}} {{day}}",
        "next_time": "Next · {{time}}",
        "next_homework": "{{title}} to hand in",
        "day": "My day",
        "progress": "{{done}} of {{total}} lessons done",
        "ends": "classes end at {{time}}",
        "state_done": "done",
        "state_now": "now"
      },
      "exams": {
        "title": "Upcoming exams",
        "none": "No upcoming exam.",
        "countdown": "D-{{days}}",
        "coefficient": "coef. {{value}}"
      },
      "week": {
        "title": "This week",
        "all": "All my homework",
        "today": "today",
        "empty": "Nothing due this week."
      },
      "kpi": {
        "average": "General average",
        "class": "class {{value}}",
        "rank_up_one": "▲ {{count}} place · rank {{rank}} / {{size}}",
        "rank_up_other": "▲ {{count}} places · rank {{rank}} / {{size}}",
        "rank_down_one": "▼ {{count}} place · rank {{rank}} / {{size}}",
        "rank_down_other": "▼ {{count}} places · rank {{rank}} / {{size}}",
        "rank": "Rank {{rank}} / {{size}}",
        "curve": "Evolution of my average",
        "attendance": "Attendance",
        "absences_one": "{{count}} absence",
        "absences_other": "{{count}} absences",
        "lates_one": "{{count}} late",
        "lates_other": "{{count}} lates",
        "to_justify_one": "{{count}} absence to justify",
        "to_justify_other": "{{count}} absences to justify",
        "homework": "Homework done",
        "homework_sub": "{{done}} of {{total}} this {{period}}",
        "streak_one": "Current streak: {{count}} homework handed in on time",
        "streak_other": "Current streak: {{count}} homework handed in on time",
        "goal": "My goal {{period}}",
        "goal_none": "No goal set yet",
        "goal_left_one": "{{value}} point to go",
        "goal_left_other": "{{value}} points to go",
        "goal_reached": "Goal reached"
      },
      "subjects": {
        "title": "My subjects",
        "all": "My grades",
        "none": "No subject yet.",
        "class": "Class {{value}}",
        "last": "{{exam}} {{mark}} · {{date}}"
      },
      "latest": {
        "title": "Latest marks",
        "all": "All my marks",
        "none": "No marks yet."
      }
    },
    "family": {
      "write": "Write to the school",
      "summary": {
        "at_school": "{{name}} is at school",
        "left": "{{name}} left at {{time}}",
        "absent": "{{name}} is absent today",
        "waiting_one": "{{count}} thing awaits your reply",
        "waiting_other": "{{count}} things await your reply",
        "all_done": "everything is up to date"
      },
      "status": {
        "at_school": "At school",
        "since": "arrived at {{time}}",
        "lesson": "in {{subject}} until {{end}}",
        "left": "Left at {{time}}",
        "signed": "authorisation signed by you",
        "absent": "Absent today"
      },
      "chip": {
        "at_school": "At school since {{time}}",
        "left": "Left at {{time}}",
        "absent": "Absent today"
      },
      "child": {
        "record": "View record",
        "average": "Average",
        "attendance": "Attendance",
        "next_exam": "Next exam",
        "rank": "rank {{rank}}/{{size}}",
        "attendance_line": "{{absences}} abs. · {{lates}} lates",
        "exam_title": "{{subject}} · {{type}} no. {{number}}",
        "exam_in": "D-{{days}}",
        "exam_today": "Today",
        "trend": "Average over the period"
      },
      "alert": {
        "to_justify": "Absence on {{date}} to justify",
        "to_justify_count_one": "{{count}} absence to justify",
        "to_justify_count_other": "{{count}} absences to justify",
        "subject_below": "{{subject}} below the pass mark · {{average}} average (class {{class_average}})",
        "subject_below_alone": "{{subject}} below the pass mark · {{average}} average",
        "homework_missed_some": "Assignments not handed in this week",
        "homework_missed_one": "{{count}} assignment not handed in this week",
        "homework_missed_other": "{{count}} assignments not handed in this week"
      },
      "todo": {
        "heading": "To do",
        "waiting_one": "{{count}} waiting",
        "waiting_other": "{{count}} waiting",
        "done": "All done",
        "justify_title": "Justify an absence",
        "justify_action": "Justify",
        "justify_before": "before {{date}}",
        "ack_label": "Acknowledgement requested",
        "ack_action": "Read and confirm"
      },
      "agenda": {
        "title": "Family agenda",
        "child": "Child",
        "both": "Both",
        "all": "Everyone",
        "exam": "{{subject}} · {{type}} no. {{number}}",
        "exit": "Exit authorised · {{reason}}",
        "exit_alone": "Exit authorised",
        "exit_detail": "Out at {{time}}",
        "empty": "Nothing planned for the coming weeks."
      }
    }
  },
  "stats": {
    "title": "Statistics",
    "plan_report": "Schedule a report",
    "report_pdf": "PDF report",
    "sub": {
      "period": "{{period}} in progress",
      "period_week": "{{period}} in progress (week {{n}} of {{m}})",
      "updated": "data updated at {{time}}"
    },
    "filters": {
      "label": "Filters",
      "level": "Level",
      "class": "Class",
      "subject": "Subject",
      "all_levels": "All levels",
      "all_classes": "All classes",
      "all_subjects": "All subjects",
      "reset": "Reset the filters"
    },
    "tabs": {
      "label": "Sections",
      "overview": "Overview",
      "results": "Results",
      "attendance": "Attendance",
      "finance": "Finance",
      "teachers": "Teachers",
      "enrolment": "Enrolment"
    },
    "kpi": {
      "average": "Overall average",
      "pass_rate": "Pass rate",
      "pass_rate_at": "Pass rate (≥ {{mark}})",
      "attendance": "Attendance",
      "recovery": "Collection to date",
      "headcount": "Headcount",
      "pts": "{{value}} pts"
    },
    "overview": {
      "compare": {
        "title": "Classes of the same level",
        "sub": "{{level}} · average by subject, against the level average",
        "chart": "Average by subject",
        "level_mark": "Level average",
        "average": "Avg.",
        "gap": "Gap",
        "attendance": "Attendance",
        "note": "Gap to the level average, in points. In red: below the level by more than the threshold set in Settings. Pick a class in the filter to put it forward."
      },
      "years": {
        "title": "Year over year",
        "indicator": "Indicator",
        "average": "Overall average",
        "attendance": "Attendance rate"
      },
      "periods": {
        "title": "{{period}} 1 vs 2",
        "sub": "{{year}} (last complete year), by subject",
        "view": "Chart type",
        "slope": "Slope",
        "bars": "Bars"
      }
    },
    "results": {
      "heatmap": {
        "title": "Class × subject averages",
        "sub": "{{period}} · colour: gap to {{center}} (school average)",
        "average": "Avg."
      },
      "distribution": {
        "title": "Distribution of averages",
        "this_year": "This year",
        "last_year": "Last year",
        "summary": "{{size}} {{learners}} · median {{median}} · {{count}} below the pass mark ({{pct}})",
        "summary_previous": "{{size}} {{learners}} · median {{median}} · {{count}} below the pass mark ({{pct}}), against {{previous}} last year."
      },
      "pass": {
        "title": "Pass rate by level",
        "last_year": "Last year"
      }
    },
    "attendance": {
      "heat": {
        "title": "Absences by day and hour",
        "sub": "Average absence rate"
      },
      "weekly": {
        "title": "Attendance by week",
        "this_year": "This year",
        "last_year": "Last year",
        "alert": "Alert {{pct}} %"
      },
      "by_class": {
        "title": "Attendance by class",
        "school": "School {{pct}} %"
      },
      "highlights": "Key points"
    },
    "finance": {
      "by_class": {
        "title": "Collection by class",
        "school": "School {{pct}} %"
      },
      "cumulative": {
        "title": "Cumulative collected, by year"
      }
    },
    "teachers": {
      "compare": {
        "title": "Compare the teachers",
        "hint": "Click a header to sort. Gap: average of the teacher's classes minus the subject average."
      },
      "col": {
        "teacher": "Teacher",
        "average": "Avg.",
        "gap": "Gap",
        "calls": "Calls on time",
        "homework": "Homework",
        "grades": "Marks on time"
      },
      "calls": {
        "title": "Roll calls made on time",
        "legend": "% of calls within the first {{minutes}} minutes",
        "goal": "Goal {{pct}} %"
      },
      "all_classes": "all"
    },
    "enrolment": {
      "new": "New enrolments",
      "left": "Departures",
      "left_sub": "during the year",
      "reenrolment": "Re-enrolment",
      "girls": "Girls",
      "girls_sub": "{{girls}} girls · {{boys}} boys",
      "by_year": {
        "title": "Headcount by level over the years"
      },
      "gender": {
        "title": "Girls and boys",
        "girls": "Girls",
        "boys": "Boys"
      }
    },
    "print": {
      "title": "Statistics report",
      "none": "No statistics to print"
    },
    "settings": {
      "tab": "Statistics",
      "title": "Statistics thresholds",
      "sub": "When a class, subject or teacher counts as below the level, and what the teacher's watch list picks up.",
      "saved": "Statistics settings saved",
      "below_points": "Below the level: gap in marks (out of 20)",
      "below_points_hint": "A class, subject or teacher is flagged at or below the reference minus this value.",
      "below_pct_points": "Below the level: gap in points (attendance, collection, lates)",
      "call_minutes": "Roll call on time: minutes after the lesson starts",
      "calls_goal_pct": "Goal for roll calls on time (%)",
      "watch_marks_drop": "Watch list: drop in a pupil's marks (out of 20)",
      "watch_homework_missed": "Watch list: homework not done in the last 7 days",
      "watch_lates": "Watch list: lates in the period shown"
    }
  },
  "signin": {
    "title": "Sign in",
    "subtitle": "Welcome back. Sign in to your school.",
    "submit": "Login",
    "placeholder_email": "firstname.lastname@example.com",
    "show_password": "Show password",
    "hide_password": "Hide password",
    "or": "or",
    "club": "Continue with ALLcarta Club",
    "help": "Trouble signing in? Call the front desk on {{phone}}.",
    "language": "Language",
    "back": "Back to sign in",
    "error": {
      "email_empty": "Enter your email.",
      "email_format": "This email does not look valid.",
      "password_empty": "Enter your password."
    },
    "forgot": {
      "title": "Forgot password",
      "sub": "Enter your account email. We will send you a link to choose a new one.",
      "send": "Send the link"
    },
    "sent": {
      "title": "Link sent",
      "sub": "If an account exists for <strong>{{email}}</strong>, a link is waiting.",
      "resend": "Resend",
      "resend_in": "Resend in {{seconds}} s",
      "resent": "New link sent"
    },
    "brand": {
      "claim": "Your whole school,",
      "claim_em": "finally clear.",
      "text": "Roll calls, grades, timetables, payments and messages to families, in one place. For leadership, teachers, parents and students.",
      "b1": "Roll call in 30 seconds, parents notified right away",
      "b2": "Timetable generated in minutes",
      "b3": "Every class compared with its grade and last year",
      "secure": "Encrypted sign-in · data hosted in Tunisia",
      "footer": "© {{year}} ALLcarta",
      "claim_short": "Your whole school, finally clear.",
      "text_short": "Roll calls, grades, payments and messages, in one place.",
      "roll_title": "Roll call of 7 A done",
      "roll_sub": "28 present · 08:04",
      "paid_title": "460 TND received",
      "paid_sub": "Receipt R-2026-0418 sent",
      "average_title": "Average 13.24",
      "average_sub": "▲ 0.31 vs last year"
    }
  }
}
