<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

/**
 * English strings for local_kid.
 *
 * @package    local_kid
 */

defined('MOODLE_INTERNAL') || die();

$string['pluginname'] = 'KID — Competency evaluation';

$string['nav_dashboard'] = 'Dashboard';
$string['nav_evaluations'] = 'Evaluations';
$string['nav_stages'] = 'Internships';
$string['nav_capp'] = 'Learning committee';
$string['nav_student'] = 'Student view';
$string['nav_admin'] = 'Administration';
$string['nav_annuaire'] = 'Directory';

$string['kid:view'] = 'Access the plugin, dashboard and read-only screens';
$string['kid:evaluate_evaluation'] = 'Enter, validate, finalise and reopen evaluation records';
$string['kid:evaluate_stage'] = 'Enter, validate, finalise and reopen internship records';
$string['kid:evaluate_capp'] = 'Enter, validate, finalise and reopen learning committee records';
$string['kid:sync_moodle'] = 'Attach a Moodle assignment and sync its feedback with an evaluation';
$string['kid:publish_evaluation'] = 'Publish evaluation records to students';
$string['kid:publish_stage'] = 'Publish internship records to students';
$string['kid:publish_capp'] = 'Publish learning committee records to students';
$string['kid:manage_evaluation'] = 'Manage the evaluation reference data (create, edit, activate, delete)';
$string['kid:manage_stage'] = 'Manage the internship reference data (create, edit, activate, delete)';
$string['kid:manage_capp'] = 'Manage the learning committee sessions (create, edit, activate, delete)';
$string['kid:manage'] = 'Manage competencies, levels, promotions, cohorts and deletions';
$string['kid:export_adesi'] = 'Generate ADESI export files';
$string['kid:selectpromotion'] = 'Choose the promotion displayed (global selector)';
$string['kid:viewany'] = 'Preview any student\'s record';
$string['kid:viewown'] = 'View only their own published student record';
$string['kid:viewjournal'] = 'View the user actions audit journal';
$string['kid:viewannuaire'] = 'View the student directory';
$string['kid:managedashboardfavourites'] = 'Manage their own saved views (Assessment comparator)';

$string['page_dashboard'] = 'Dashboard';
$string['page_evaluations'] = 'Evaluations';
$string['page_stages'] = 'Internships';
$string['page_capp'] = 'Learning committee';
$string['page_student'] = 'Student view';
$string['page_admin'] = 'Administration';
$string['page_annuaire'] = 'Directory';
$string['page_comparateur'] = 'Assessment comparator';
$string['placeholder_notice'] = 'This screen will be built in a later phase.';

$string['role_badge'] = 'Role: {$a}';

// Journal (audit trail).
$string['journal_filter_author'] = 'Author';
$string['journal_filter_promotion'] = 'Promotion';
$string['journal_filter_domain'] = 'Domain';
$string['journal_filter_action'] = 'Action type';
$string['journal_filter_student'] = 'Student';
$string['journal_filter_datefrom'] = 'From';
$string['journal_filter_dateto'] = 'To';
$string['journal_filter_all'] = 'All';
$string['journal_filter_apply'] = 'Filter';
$string['journal_filter_reset'] = 'Reset';
$string['journal_col_date'] = 'Date';
$string['journal_col_author'] = 'Author';
$string['journal_col_domain'] = 'Domain';
$string['journal_col_action'] = 'Action';
$string['journal_col_promotion'] = 'Promotion';
$string['journal_col_student'] = 'Student';
$string['journal_col_details'] = 'Details';
$string['journal_count'] = '{$a} entries';
$string['journal_empty'] = 'No journal entry matches these filters.';
$string['journal_diff_empty'] = '(empty)';
$string['journal_diff_nolevel'] = '(no level)';
$string['journal_diff_unknown'] = '(unknown)';

// Student directory.
$string['annuaire_filter_query'] = 'Search (name, first name)';
$string['annuaire_filter_promotion'] = 'Promotion';
$string['annuaire_filter_all'] = 'All';
$string['annuaire_filter_apply'] = 'Filter';
$string['annuaire_filter_reset'] = 'Reset';
$string['annuaire_col_lastname'] = 'Last name';
$string['annuaire_col_firstname'] = 'First name';
$string['annuaire_col_promotion'] = 'Promotion';
$string['annuaire_col_dossier'] = 'Record';
$string['annuaire_col_promotionlink'] = 'Promotion view';
$string['annuaire_link_dossier'] = 'Open record';
$string['annuaire_link_promotion'] = 'View promotion';
$string['annuaire_count'] = '{$a} student(s)';
$string['annuaire_empty'] = 'No student matches these filters.';

// Assessment comparator.
$string['comparateur_filter_students'] = 'Students';
$string['comparateur_filter_sources'] = 'Sources';
$string['comparateur_filter_levels'] = 'Filter by level';
$string['comparateur_filter_competencies'] = 'Competencies';
$string['comparateur_filter_apply'] = 'Filter';
$string['comparateur_search'] = 'Search…';
$string['comparateur_selectall'] = 'Select all';
$string['comparateur_selectnone'] = 'Clear all';
$string['comparateur_toggle_comments'] = 'Show comments';
$string['comparateur_toggle_onlyobserved'] = 'Hide unobserved competencies';
$string['comparateur_col_competence'] = 'Competency';
$string['comparateur_empty_title'] = 'Nothing to compare yet';
$string['comparateur_empty'] = 'Choose at least one student and one source (evaluation, internship or committee session) on the left.';
$string['comparateur_nomatch'] = 'No data matches these filters for this student.';
$string['comparateur_nostats'] = 'No selection.';
$string['comparateur_stats'] = '{$a->students} student(s) · {$a->sources} source(s) · {$a->cells} observed cell(s)';
$string['comparateur_card_stats'] = '{$a->competencies} competency(ies) · {$a->sources} source(s)';
$string['comparateur_outofscope'] = 'This source does not evaluate this competency';
$string['comparateur_seemore'] = 'see more';
$string['comparateur_export_csv'] = 'Export selection (CSV)';
$string['comparateur_export_xlsx'] = 'Export selection (XLSX)';
$string['comparateur_export_col_promotion'] = 'Promotion';
$string['comparateur_export_col_student'] = 'Student';
$string['comparateur_export_col_code'] = 'Code';
$string['comparateur_export_col_competency'] = 'Competency';
$string['comparateur_export_col_source'] = 'Source';
$string['comparateur_export_col_type'] = 'Type';
$string['comparateur_export_col_niveau'] = 'Level';
$string['comparateur_export_col_commentaire'] = 'Comment';
$string['comparateur_type_eval'] = 'Evaluation';
$string['comparateur_type_stage'] = 'Internship';
$string['comparateur_type_capp'] = 'Committee';
$string['comparateur_drawer_title'] = 'Detail';
$string['comparateur_drawer_close'] = 'Close';
$string['comparateur_drawer_competency'] = 'Competency';
$string['comparateur_drawer_source'] = 'Source';
$string['comparateur_drawer_niveau'] = 'Level';
$string['comparateur_drawer_comment'] = 'Comment';
$string['comparateur_drawer_saisie'] = 'Open entry screen →';
$string['comparateur_favoris_title'] = 'Saved views';
$string['comparateur_favoris_placeholder'] = 'View name…';
$string['comparateur_favoris_save'] = 'Save';
$string['comparateur_favoris_rename'] = 'Rename';
$string['comparateur_favoris_delete'] = 'Delete';
$string['comparateur_favoris_empty'] = 'No saved view yet. Set your filters, name the view then Save.';

$string['admintab_competences'] = 'Competencies';
$string['admintab_niveaux'] = 'Levels';
$string['admintab_promotions'] = 'Promotions';
$string['admintab_stages'] = 'Internships';
$string['admintab_evaluations'] = 'Evaluations';
$string['admintab_capp'] = 'Learning committee';
$string['admintab_export'] = 'ADESI export';
$string['admintab_journal'] = 'Journal';

$string['promotion_name'] = 'Promotion name';
$string['promotion_add_title'] = 'Add a promotion';
$string['promotion_rename_title'] = 'Rename promotion';
$string['promotion_link_title'] = 'Link a Moodle cohort';
$string['promotion_add'] = 'Add a promotion';
$string['promotion_col_name'] = 'Promotion';
$string['promotion_col_cohort'] = 'Linked cohort';
$string['promotion_col_students'] = 'Students';
$string['promotion_col_status'] = 'Status';
$string['promotion_col_actions'] = 'Actions';
$string['promotion_status_active'] = 'Active';
$string['promotion_status_inactive'] = 'Inactive';
$string['promotion_cohort_none'] = 'None';
$string['promotion_cohort_deleted'] = 'Deleted cohort';
$string['promotion_unlinked'] = 'Cohort unlinked. Existing student records are kept.';
$string['promotion_link_result'] = '{$a->addedcount} student(s) added, {$a->removedcount} removed.';
$string['action_rename'] = 'Rename';
$string['action_link'] = 'Link a cohort';
$string['action_unlink'] = 'Unlink';
$string['action_resync'] = 'Resync';
$string['action_toggle_active'] = 'Toggle active';
$string['promotion_delete_confirm'] = 'Permanently delete this promotion? This action is irreversible: the students, the competency framework and all entry data (evaluations, internships, committee sessions) tied to this promotion will be lost.';
$string['promotion_deleted'] = 'Promotion deleted.';
$string['promotion_delete_blocked_last'] = 'Cannot delete: at least one promotion must remain.';
$string['promotion_delete_blocked_current'] = 'Cannot delete the promotion currently displayed. Display another promotion first.';

$string['promotion_switch'] = 'Promotion';
$string['promotion_switch_go'] = 'Show';
$string['competences_admin_promotion'] = 'Promotion to configure';
$string['no_promotion_yet'] = 'No promotion exists yet. Create one in the Promotions tab.';
$string['action_edit'] = 'Edit';
$string['action_delete'] = 'Delete';

$string['competency_libelle'] = 'Label';
$string['competency_codeadesi'] = 'ADESI / Karuta code';
$string['competency_codeadesi_help'] = 'Exact code expected by ADESI for this competency, e.g. @insp-2025-2027-a-c01-COMM. Never auto-generated.';
$string['competency_active'] = 'Active';
$string['competency_add'] = 'Add a competency';
$string['competency_edit_title'] = 'Edit competency';
$string['competency_col_code'] = 'Code';
$string['competency_deleted'] = 'Competency deleted.';
$string['competency_delete_blocked'] = 'Cannot delete: this competency is used by at least one evaluation, internship or committee session.';
$string['competency_sync_framework'] = 'Moodle framework';
$string['competency_sync_framework_help'] = 'Syncing adds missing competencies and updates labels of already-synced ones. The ADESI code is never overwritten after its initial creation.';
$string['competency_sync_action'] = 'Sync from a Moodle framework';
$string['competency_sync_none'] = 'No Moodle competency framework available.';
$string['competency_sync_result'] = '{$a->added} competenc(y/ies) added, {$a->updated} updated.';

$string['niveau_code'] = 'Code (immutable)';
$string['niveau_libelle'] = 'Label';
$string['niveau_couleur'] = 'Colour';
$string['niveau_sortorder'] = 'Order';
$string['niveau_codeadesi'] = 'ADESI code';
$string['niveau_rename_title'] = 'Rename level';

$string['eval_titre'] = 'Evaluation title';
$string['eval_sourcetype'] = 'Type';
$string['eval_sourcetype_manual'] = 'Manual entry';
$string['eval_sourcetype_devoir'] = 'Moodle assignment';
$string['eval_devoir'] = 'Moodle assignment';
$string['eval_devoir_category'] = 'Course category';
$string['eval_devoir_category_placeholder'] = '— Choose a category —';
$string['eval_devoir_course'] = 'Course';
$string['eval_devoir_course_placeholder_initial'] = 'Choose a category first';
$string['eval_devoir_course_placeholder_ready'] = '— Choose a course —';
$string['eval_devoir_placeholder_initial'] = 'Choose a course first';
$string['eval_devoir_placeholder_ready'] = '— Choose an assignment —';
$string['eval_devoir_required'] = 'Please choose a Moodle assignment.';
$string['eval_competencies'] = 'Competencies covered';
$string['eval_add'] = 'Add an evaluation';
$string['eval_edit_title'] = 'Edit evaluation';
$string['eval_col_source'] = 'Type';
$string['eval_col_competencies'] = 'Competencies';
$string['eval_delete_confirm'] = 'Permanently delete this evaluation? This action is irreversible and the associated entry data (student records and levels) will be lost.';
$string['eval_deleted'] = 'Evaluation deleted.';
$string['eval_template_global'] = 'Download the template (whole promotion)';
$string['eval_template_student'] = 'Download the template (this student)';
$string['eval_import_action'] = 'Import a CSV';
$string['eval_import_file'] = 'CSV file';
$string['eval_import_format_help'] = 'Semicolon-separated CSV (;), UTF-8 encoding. Expected columns: code_eleve;nom;prenom;competence;niveau;commentaire — the competency must match its full name exactly (not the short code), and the level its label (or code) as already defined. Lines starting with # are ignored.';
$string['eval_import_submit'] = 'Import';
$string['eval_import_result'] = '{$a} record(s) updated.';
$string['eval_import_error_student'] = 'Line {$a}: student not found (unknown code_eleve).';
$string['eval_import_error_competency'] = 'Line {$a}: competency not found (unknown full name).';
$string['eval_import_error_niveau'] = 'Line {$a}: level not found (unknown label or code).';
$string['picker_intro_evaluations'] = 'Choose which evaluation to fill in, then the student.';
$string['picker_empty_evaluations'] = 'No active evaluation for this cohort. Activate one in Administration > Evaluations.';
$string['picker_intro_stages'] = 'Choose which internship to fill in, then the student.';
$string['picker_empty_stages'] = 'No active internship for this cohort. Activate one in Administration > Internships.';
$string['picker_intro_capp'] = 'Choose which learning committee session to fill in, then the student.';
$string['picker_empty_capp'] = 'No active committee session for this cohort. Activate one in Administration > Committee.';

$string['entry_comment'] = 'Comment';
$string['entry_current_niveau'] = 'Current level';
$string['action_save'] = 'Save';
$string['action_open'] = 'Open';
$string['entry_col_student'] = 'Student';
$string['entry_col_published'] = 'Published';
$string['entry_back_to_summary'] = '← Back to summary';
$string['niveau_none'] = '— Not set —';

// Comment conflict prevention (amd/src/unsaved_guard.js, amd/src/conflict_view.js).
$string['guard_modal_title'] = 'Unsaved changes';
$string['guard_modal_body'] = 'Some changes have not been saved. Would you like to save them before continuing?';
$string['guard_btn_save'] = 'Save and continue';
$string['guard_btn_back'] = 'Back to the form';
$string['guard_btn_discard'] = 'Continue without saving';
$string['conflict_modal_title'] = 'Save conflict';
$string['conflict_card_subtitle_author'] = 'Changed by {$a} · compare and copy over whichever you want to keep.';
$string['conflict_card_subtitle_noauthor'] = 'Changed in the meantime · compare and copy over whichever you want to keep.';
$string['conflict_col_mine'] = 'Your entry';
$string['conflict_col_db'] = 'Saved version';
$string['conflict_btn_keepmine'] = 'Keep my version';
$string['conflict_btn_keepdb'] = 'Keep the saved version';

// Read-only comment history (amd/src/comment_history.js).
$string['history_link_single'] = 'View history (1 version)';
$string['history_link_multiple'] = 'View history ({$a} versions)';
$string['history_author_unknown'] = 'Unknown author';
$string['history_date_format'] = '%d/%m/%Y at %H:%M';
$string['history_modal_title'] = 'Comment history';
$string['history_current_badge'] = 'Current version';

$string['workflow_saisie'] = 'Draft';
$string['workflow_valide'] = 'Validated';
$string['workflow_finalise'] = 'Finalised';
$string['workflow_action_validate'] = 'Validate';
$string['workflow_action_finalise'] = 'Finalise';
$string['workflow_action_reopen'] = 'Reopen';
$string['published_yes'] = 'Published';
$string['published_no'] = 'Not published';

// Grouped actions bar (Évaluations/Stages/CAPP summary screens).
$string['bulk_select_all'] = 'Select all';
$string['bulk_actions_label'] = 'For the selected students:';
$string['bulk_actions_choose'] = 'Choose an action…';
$string['bulk_actions_apply'] = 'Apply';
$string['bulk_actions_count'] = '{$a} student(s) selected';
$string['bulk_action_download_pdf'] = 'Download PDF record';
$string['bulk_action_download_docx'] = 'Download Word (DOCX) record';
$string['bulk_action_publish'] = 'Publish';
$string['bulk_action_hide'] = 'Hide';
$string['bulk_action_export_capp_rapport'] = 'Download CAPP report (PDF)';
$string['bulk_result_publish'] = '{$a} record(s) published.';
$string['bulk_result_publish_ignored'] = '{$a->done} record(s) published · {$a->ignored} skipped (not finalised): {$a->names}';
$string['bulk_result_hide'] = '{$a} record(s) hidden.';
$string['bulk_result_hide_ignored'] = '{$a->done} record(s) hidden · {$a->ignored} skipped: {$a->names}';

$string['stage_libelle'] = 'Internship label';
$string['stage_datedebut'] = 'Start date';
$string['stage_datefin'] = 'End date';
$string['stage_competencyscope'] = 'Competencies covered';
$string['stage_competencyscope_all'] = 'All active competencies';
$string['stage_competencyscope_custom'] = 'Custom selection';
$string['stage_add'] = 'Add an internship';
$string['stage_edit_title'] = 'Edit internship';
$string['stage_col_libelle'] = 'Internship';
$string['stage_col_periode'] = 'Period';
$string['stage_col_scope'] = 'Competencies';
$string['stage_delete_confirm'] = 'Permanently delete this internship? This action is irreversible and the associated entry data (student records, levels and documents) will be lost.';
$string['stage_deleted'] = 'Internship deleted.';
$string['stage_template_global'] = 'Download the template (whole promotion)';
$string['stage_template_student'] = 'Download the template (this student)';
$string['stage_import_action'] = 'Import a CSV';
$string['stage_import_file'] = 'CSV file';
$string['stage_import_format_help'] = 'Semicolon-separated CSV (;), UTF-8 encoding. Expected columns: code_eleve;nom;prenom;competence;niveau;commentaire — the competency must match its full name exactly (not the short code), and the level its label (or code) as already defined. Lines starting with # are ignored.';
$string['stage_import_submit'] = 'Import';
$string['stage_import_result'] = '{$a} record(s) updated.';
$string['stage_import_error_student'] = 'Line {$a}: student not found (unknown code_eleve).';
$string['stage_import_error_competency'] = 'Line {$a}: competency not found (unknown full name).';
$string['stage_import_error_niveau'] = 'Line {$a}: level not found (unknown label or code).';
$string['stage_import_error_scope'] = 'Line {$a}: skipped, not the student selected for this individual import.';
$string['stage_import_error_locked'] = 'Line {$a}: skipped, this record is finalised (locked).';
$string['stage_commentaire_global'] = 'Overall internship comment';
$string['error_entry_locked'] = 'This record is finalised and can no longer be edited. Reopen it first.';

$string['stagedoc_heading'] = 'Documents';
$string['stagedoc_none'] = 'No document uploaded.';
$string['stagedoc_help'] = 'Accepted formats: PDF, Word, Excel.';
$string['stagedoc_upload'] = 'Upload';
$string['stagedoc_upload_result'] = '{$a} file(s) uploaded.';
$string['stagedoc_rejected'] = 'Rejected file(s) (disallowed format): {$a}.';
$string['stagedoc_error_none'] = 'No valid file was submitted.';

$string['capp_code'] = 'Code (e.g. CAPP1)';
$string['capp_libelle'] = 'Session label';
$string['capp_add'] = 'Add a session';
$string['capp_edit_title'] = 'Edit session';
$string['capp_col_code'] = 'Session';
$string['capp_unassigned'] = 'Unassigned';
$string['capp_col_enseignements'] = 'Evaluations';
$string['capp_col_stages'] = 'Internships';
$string['capp_commentaire'] = 'Committee comment';
$string['capp_appreciation_globale'] = 'Overall appraisal';
$string['capp_no_source'] = 'no evaluation/internship attached';
$string['capp_niveau_of'] = 'Level {$a}';
$string['capp_rattachement_heading'] = 'Attaching evaluations and internships';
$string['capp_rattachement_help'] = 'Consultative attachment only: attached evaluations\' and internships\' levels/comments are shown read-only in the committee grid, never copied automatically.';
$string['capp_session_delete_confirm'] = 'Permanently delete this committee session? This action is irreversible and the associated entry data (student records, levels and appraisals) will be lost.';
$string['capp_session_deleted'] = 'Committee session deleted.';
$string['capp_no_rattachable'] = 'No active evaluation or internship to attach.';
$string['capp_col_type'] = 'Type';
$string['capp_col_source'] = 'Item';
$string['capp_col_session'] = 'Committee session';
$string['capp_recover_action'] = 'Recover levels from the previous session (whole promotion)';
$string['capp_recover_one'] = 'Recover levels from {$a}';
$string['capp_recover_bulk_notice'] = 'Recover levels from session {$a} for the whole promotion (the comment is never copied).';
$string['capp_recover_result'] = '{$a} level(s) recovered.';
$string['capp_recover_bulk_result'] = '{$a->totalcopied} level(s) recovered for {$a->studentcount} student(s).';
$string['error_capp_code_duplicate'] = 'This session code already exists for this promotion.';
$string['error_capp_fields_required'] = 'Code and label are required.';

// CAPP — CSV import.
$string['capp_mode_saisie'] = 'Direct entry';
$string['capp_mode_import'] = 'CSV import';
$string['capp_template_action'] = 'Download the template';
$string['capp_import_submit'] = 'Import';
$string['capp_import_result'] = '{$a} record(s) updated.';
$string['capp_import_competences_heading'] = 'Competencies';
$string['capp_import_competences_action'] = 'Import a CSV';
$string['capp_import_competences_file'] = 'CSV file (competencies)';
$string['capp_import_competences_format_help'] = 'Semicolon-separated CSV (;), UTF-8 encoding. Expected columns: code_eleve;nom;prenom;competence;niveau;commentaire — the competency must match its full name exactly (not the short code), and the level its label (or code) as already defined. This file feeds the final committee level (never the source evaluations\'/internships\' own levels). Lines starting with # are ignored.';
$string['capp_import_appreciations_heading'] = 'Overall appraisal';
$string['capp_import_appreciations_action'] = 'Import a CSV';
$string['capp_import_appreciations_file'] = 'CSV file (appraisals)';
$string['capp_import_appreciations_format_help'] = 'Semicolon-separated CSV (;), UTF-8 encoding. Expected columns: code_eleve;nom;prenom;appreciation — one row per student. This file only writes the overall appraisal, never the competencies (separate file, importable independently). Lines starting with # are ignored.';
$string['capp_import_error_student'] = 'Line {$a}: student not found (unknown code_eleve).';
$string['capp_import_error_competency'] = 'Line {$a}: competency not found (unknown full name).';
$string['capp_import_error_niveau'] = 'Line {$a}: level not found (unknown label or code).';
$string['capp_import_error_locked'] = 'Line {$a}: skipped, this record is finalised (locked).';
$string['capp_import_appreciation_error_student'] = 'Line {$a}: student not found (unknown code_eleve).';
$string['capp_import_appreciation_error_locked'] = 'Line {$a}: skipped, this record is finalised (locked).';

// CAPP report (PDF).
$string['capp_rapport_action'] = 'Download PDF report';
$string['capp_rapport_coverpage_title'] = 'Learning committee';
$string['capp_rapport_generated'] = 'Data from {$a->source} as of {$a->date}';
$string['capp_rapport_bilan_heading'] = 'Overall summary';
$string['capp_rapport_studentcount'] = 'Number of students: {$a}';
$string['capp_rapport_col_nonobserve'] = 'Not observed';
$string['capp_rapport_col_nonacquis'] = 'Not achieved';
$string['capp_rapport_col_encours'] = 'In progress';
$string['capp_rapport_col_acquisdla'] = 'Achieved (incl. exceeds expectations)';
$string['capp_rapport_col_niveau_previous'] = 'Level {$a}';
$string['capp_rapport_col_niveau_current'] = 'Level assigned at session {$a}';
$string['capp_rapport_student_heading'] = 'Student: {$a}';
$string['capp_rapport_coverpage_promotion'] = 'Promotion';
$string['capp_rapport_sommaire_heading'] = 'Table of contents';
$string['capp_rapport_coverpage_bookmark'] = 'Cover page';
$string['capp_rapport_header'] = 'Direction des stages et de l\'accompagnement des élèves - CAPP {$a->code} - promotion {$a->promotion}';
$string['capp_rapport_logo_marianne_alt'] = 'French Republic, Liberté Égalité Fraternité';
$string['capp_rapport_logo_insp_alt'] = 'Institut national du service public';
$string['capp_rapport_pdf_title'] = 'Committee record {$a->session} — promotion {$a->promotion}';

$string['dashboard_title'] = 'Dashboard — {$a}';
$string['dashboard_subtitle'] = 'Consolidated view and exports for the promotion.';
$string['dashboard_global_title'] = 'Dashboard — Global view';
$string['dashboard_global_subtitle'] = 'Every promotion, across all cohorts.';
$string['dashboard_tab_global'] = 'Global view';
$string['dashboard_tab_apercu'] = 'Overview';
$string['dashboard_tab_comparateur'] = 'Assessment comparator';
$string['dashboard_stat_students'] = 'Students';
$string['dashboard_stat_evals'] = 'Evaluations to validate';
$string['dashboard_stat_stages'] = 'Internships to complete';
$string['dashboard_stat_capp_todo'] = 'Committee records to complete';
$string['dashboard_stat_capp_done'] = 'Committee records finalised';
$string['dashboard_badge_pending'] = 'Pending';
$string['dashboard_global_stat_promotions'] = 'Promotions';
$string['dashboard_global_stat_active'] = 'Active promotions';
$string['dashboard_global_open'] = 'Open';
$string['dashboard_open_fiche'] = 'View record';
$string['dashboard_export_view'] = 'Export this view (XLSX)';
$string['dashboard_see_more'] = 'View comment';

$string['student_no_promotion'] = 'No active promotion for this student.';
$string['student_field_code'] = 'ENA code';
$string['student_preview_select_label'] = 'Preview as student';
$string['student_preview_go'] = 'Show';
$string['student_preview_banner'] = 'Previewing {$a}\'s record — read-only view.';

// Student navigation (Evaluations/Stages/CAPP entry screens).
$string['student_nav_select_label'] = 'Student:';
$string['student_nav_go'] = 'Show';
$string['student_nav_previous'] = 'Previous student';
$string['student_nav_next'] = 'Next student';
$string['student_nav_counter'] = 'Student {$a->position} of {$a->total}';
$string['fiche_pdf_title'] = 'Record — {$a->student} — {$a->promotion}';
$string['student_section_eval'] = 'My teaching evaluations';
$string['student_section_eval_empty'] = 'No published evaluation yet.';
$string['student_section_eval_staff'] = 'Teaching evaluations';
$string['student_section_eval_empty_staff'] = 'No evaluation yet.';
$string['student_section_stage'] = 'My internship evaluations';
$string['student_section_stage_empty'] = 'No published internship evaluation yet.';
$string['student_section_stage_staff'] = 'Internship evaluations';
$string['student_section_stage_empty_staff'] = 'No internship evaluation yet.';
$string['student_section_capp'] = 'My committee records';
$string['student_section_capp_empty'] = 'No published committee record yet.';
$string['student_section_capp_staff'] = 'Learning committee (CAPP)';
$string['student_section_capp_empty_staff'] = 'No committee record yet.';
$string['student_accordions_expand_all'] = 'Expand all';
$string['student_accordions_collapse_all'] = 'Collapse all';
$string['grid_competence'] = 'Competency';
$string['grid_niveau'] = 'Level';
$string['grid_commentaire'] = 'Comment';
$string['fiche_download_student'] = 'Download record';
$string['fiche_format_docx'] = 'Word';
$string['fiche_format_pdf'] = 'PDF';
$string['error_no_active_students'] = 'No active student in this promotion.';

$string['setting_codeenafield'] = 'code_ena profile field';
$string['setting_codeenafield_desc'] = 'Short name of the Moodle user profile field carrying the code_ena expected by ADESI (never the Moodle userid). If absent/empty, the manual mapping table is used as a fallback.';
$string['setting_tasklookback'] = 'Scheduled task lookback window';
$string['setting_tasklookback_desc'] = 'A record synced more recently than this duration is skipped on the next scheduled task run (an optimisation only, never applies to manual sync).';
$string['setting_journalretention'] = 'Journal retention period';
$string['setting_journalretention_desc'] = 'Audit journal entries older than this duration are automatically purged by a daily scheduled task. Leave at 0 to disable purging (no entry is ever deleted). Default: 2 years.';

$string['eval_col_sync'] = 'Sync';
$string['eval_sync_uptodate'] = 'Up to date';
$string['eval_sync_changed_count'] = '{$a} changed feedback(s)';
$string['eval_sync_never'] = 'Never synced';
$string['eval_sync_last'] = 'Last sync: {$a}';
$string['eval_sync_action'] = 'Sync';
$string['eval_sync_result'] = '{$a} record(s) synced.';
$string['task_sync_moodle_feedback'] = 'Sync Moodle feedback (KID)';
$string['task_journal_purge'] = 'Purge audit journal (KID)';
$string['tabs_nav_label'] = 'Tab navigation';
$string['eval_feedback_heading'] = 'Teacher feedback (Moodle)';
$string['eval_feedback_empty'] = 'No Moodle feedback yet.';
$string['eval_feedback_changed_notice'] = 'The Moodle feedback has changed since the last sync.';

$string['adesi_help'] = 'The export is built only from finalised committee records and the fields entered on the Learning Committee screen.';
$string['adesi_preview_heading'] = 'Preview';
$string['adesi_rows_niveaux'] = 'Exportable rows (levels)';
$string['adesi_rows_commentaires'] = 'Exportable rows (comments)';
$string['adesi_errors_heading'] = 'Blocking errors';
$string['adesi_download_niveaux'] = 'Download levels CSV';
$string['adesi_download_commentaires'] = 'Download comments CSV';
$string['adesi_export_blocked'] = 'Cannot export: blocking errors remain. See the preview.';
$string['adesi_error_norows'] = 'No exportable row: no finalised record for this committee session.';
$string['adesi_error_competency_code'] = 'Competency "{$a}" has no ADESI code set.';
$string['adesi_error_niveau_mapping'] = 'The "Not observed" level (COMPETENCE0) has no ADESI mapping set.';
$string['adesi_error_codeena'] = 'Student "{$a}" has no code_ena set.';
$string['event_adesi_exported'] = 'ADESI export performed';

$string['privacy:metadata:local_kid_student'] = 'A user\'s membership of a promotion as a student.';
$string['privacy:metadata:local_kid_student:userid'] = 'The Moodle user id.';
$string['privacy:metadata:local_kid_student:promotionid'] = 'The promotion the student belongs to.';
$string['privacy:metadata:local_kid_student:status'] = 'Membership status (active or removed) in the promotion.';
$string['privacy:metadata:local_kid_eval_result'] = 'Teaching evaluation level and comment entered for the student.';
$string['privacy:metadata:local_kid_stage_result'] = 'Internship evaluation level and comment entered for the student.';
$string['privacy:metadata:local_kid_stage_doc'] = 'An internship document uploaded for the student.';
$string['privacy:metadata:local_kid_stage_doc:filename'] = 'The uploaded file name.';
$string['privacy:metadata:local_kid_stage_doc:timecreated'] = 'The upload date.';
$string['privacy:metadata:local_kid_stage_entry'] = 'A student\'s internship record.';
$string['privacy:metadata:local_kid_stage_entry:commentaireglobal'] = 'The internship\'s overall comment.';
$string['privacy:metadata:local_kid_capp_result'] = 'Learning committee level and comment entered for the student.';
$string['privacy:metadata:local_kid_capp_entry'] = 'A student\'s learning committee record.';
$string['privacy:metadata:local_kid_capp_entry:appreciationglobale'] = 'The learning committee\'s overall appraisal.';
$string['privacy:metadata:local_kid_codeena_map'] = 'A manual mapping between a Moodle user and their ENA code.';
$string['privacy:metadata:local_kid_codeena_map:userid'] = 'The Moodle user id.';
$string['privacy:metadata:local_kid_codeena_map:codeena'] = 'The user\'s ENA code.';
$string['privacy:metadata:result:niveauid'] = 'The level entered for this competency.';
$string['privacy:metadata:result:commentaire'] = 'The comment entered for this competency.';
$string['privacy:metadata:adesi'] = 'ADESI export (external ministry system) — levels and overall comments from finalised committee records.';
$string['privacy:metadata:adesi:codeena'] = 'The student\'s ENA code.';
$string['privacy:metadata:adesi:niveau_competence'] = 'The ADESI level code (COMPETENCE0..4).';
$string['privacy:metadata:adesi:commentaire'] = 'The learning committee\'s overall comment.';
$string['privacy:metadata:local_kid_journal'] = 'Append-only audit journal of actions performed in the KID plugin (never editable or deletable by business users).';
$string['privacy:metadata:local_kid_journal:userid'] = 'Author of the action.';
$string['privacy:metadata:local_kid_journal:action'] = 'Type of action performed.';
$string['privacy:metadata:local_kid_journal:studentid'] = 'Student the action concerns, if applicable.';
$string['privacy:metadata:local_kid_journal:oldvalue'] = 'Value before the change, if applicable.';
$string['privacy:metadata:local_kid_journal:newvalue'] = 'Value after the change, if applicable.';
$string['privacy:metadata:local_kid_journal:context'] = 'Additional action details (file, row count, reason...).';
$string['privacy_journal_authored'] = 'Journal — actions performed by this user';
$string['privacy_journal_concerning'] = 'Journal — actions concerning this user as a student';

$string['event_promotion_updated'] = 'Promotion updated';
$string['event_cohort_synced'] = 'Cohort synced';
$string['event_workflow_changed'] = 'Workflow status changed';
$string['event_entry_published'] = 'Record published';
$string['event_entry_unpublished'] = 'Record hidden (unpublished)';
$string['event_entry_reopened'] = 'Record reopened';
$string['event_result_saved'] = 'Results saved';
$string['event_csv_imported'] = 'CSV import performed';
$string['event_export_generated'] = 'Record export generated';
$string['event_dossier_consulted'] = 'Student record consulted (full view)';
