{"workspace.settings_overview":"Overview","workspace.settings_intro":"A clear place for every part of your installation.","workspace.settings_workspace_help":"How the application reads, looks and prints.","workspace.settings_access_help":"Who can work here, what they can see, and how data is protected.","workspace.settings_operations_help":"Delivery, recovery and installation care.","workspace.setting_internationalization":"Business language, regional formats and timezone.","workspace.setting_terminology":"The words used throughout your workspace.","workspace.setting_branding":"Organization details and logo.","workspace.setting_print-design":"Badge and QR sheet appearance.","workspace.setting_users":"Accounts, roles and Reporting identity visibility.","workspace.setting_security":"Encryption key and recovery options.","workspace.setting_privacy":"Retention, eligibility and individual data requests.","workspace.setting_audit":"A traceable record of important actions.","workspace.setting_email":"SMTP transport, sender and delivery test.","workspace.setting_backups":"Downloads, cloud copies, schedules and restore.","workspace.setting_maintenance":"Controlled installation maintenance.","workspace.now":"Live now","workspace.watch_help":"Open registers stay here until they are closed.","workspace.next_help":"The next planned dates, in order.","workspace.quick_links":"Quick access","workspace.remaining":"{count} not yet present","workspace.filter_help":"Change the search or clear it to see the full list.","workspace.selection":"Your selection","workspace.report_preview":"Results preview","workspace.private_mode":"Identity protected","workspace.saving":"Saving…","workspace.search":"Find in this list…","workspace.sort":"Sort order","workspace.default_order":"Default order","workspace.name_order":"Name A–Z","workspace.result_count":"{count} results","workspace.page_count":"{from}–{to} of {count}","workspace.previous":"Previous","workspace.next":"Next","workspace.pages":"Results pages","workspace.retry":"Try again","workspace.search_settings":"Find a setting…","workspace.settings_workspace":"Workspace","workspace.settings_access":"Access and privacy","workspace.settings_operations":"Operations","workspace.upcoming":"Coming up","workspace.upcoming_empty":"Nothing scheduled. Your next planned dates will appear here.","workspace.plan":"Plan a {session}","workspace.all":"All","workspace.newest":"Newest first","workspace.oldest":"Oldest first","workspace.state":"State","workspace.preview":"Show results","workspace.preview_help":"Review the totals below, then export the same selection.","workspace.configuration":"Language and delivery","workspace.details":"Details","workspace.register_tools":"Register actions","app.name":"Attendance Log","action.save":"Save","action.cancel":"Cancel","action.close":"Close","action.add":"Add","action.edit":"Edit","action.delete":"Delete","action.confirm":"Confirm","action.back":"Back","action.search":"Search","action.reset":"Reset","action.export":"Export","action.import":"Import","action.download":"Download","action.send":"Send","action.sending":"Sending…","action.resend":"Resend","action.open":"Open","action.reopen":"Reopen","action.undo":"Undo","action.deactivate":"Deactivate","action.reactivate":"Reactivate","action.remove":"Remove","action.clear":"Clear","action.details":"Details","action.actions_for":"Available actions for “{name}”","status.active":"Active","status.inactive":"Inactive","status.present":"Present","status.absent":"Absent","status.pending":"Pending","status.open":"Open","status.closed":"Closed","status.scheduled":"Scheduled","status.success":"Success","status.failed":"Failed","status.denied":"Denied","status.unavailable":"Unavailable","status.never":"Never","common.yes":"Yes","common.no":"No","common.all":"All","common.none":"None","common.unknown":"Unknown","common.not_available":"Not available","common.loading":"Loading…","common.no_results":"No results.","common.name":"Name","common.description":"Description","common.item":"Item","common.date":"Date","common.status":"Status","common.no_description":"No description","common.settings":"Settings","common.current":"Current","common.optional":"optional","common.page_of":"Page {page} of {pages}","common.previous":"Previous","common.next":"Next","common.pagination":"Pagination","error.not_found.title":"Page not found","error.not_found.message":"The requested page could not be found.","error.internal.title":"Unexpected error","error.internal.message":"The request could not be completed. Please try again.","shell.primary_navigation":"Main navigation","shell.home":"Home","shell.home_aria":"Attendance Log — Home","shell.reporting":"Reporting","shell.settings":"Settings","shell.logout":"Sign out","shell.show_navigation":"Show navigation","shell.skip_to_content":"Skip to content","shell.data_protection":"Data protection","shell.powered_by":"Powered by {name}","settings.navigation":"Settings sections","settings.sidebar_title":"Settings","settings.email":"Email","settings.security":"Security","settings.backups":"Backups","settings.branding":"Branding","settings.print_design":"Print design","settings.terminology":"Terminology","settings.privacy":"Data protection","settings.maintenance":"Maintenance","settings.users":"Users","settings.audit":"Audit log","mail.title":"Email configuration","mail.description":"Configure a standard SMTP provider for application email.","mail.configured":"Email configured","mail.incomplete":"Email configuration incomplete","mail.smtp":"SMTP configuration","mail.host":"SMTP server","mail.port":"Port","mail.security":"Security","mail.security.implicit":"Implicit TLS / SMTPS","mail.security.none":"No encryption","mail.username":"Username","mail.password":"Password","mail.password.keep_placeholder":"Leave blank to keep the saved password…","mail.password.saved_help":"A password is saved. Leave this field blank to keep it.","mail.password.relay_help":"Leave credentials blank if your SMTP relay does not require authentication.","mail.sender_email":"Sender address","mail.sender_name":"Sender name","mail.provider_help":"Use the SMTP settings and credentials supplied by your provider.","mail.save":"Save configuration","mail.test.title":"Test the configuration","mail.test.help":"The test uses only the saved configuration above.","mail.test.recipient":"Destination address","mail.test.send":"Send a test email","mail.notice.saved":"The email configuration was saved.","mail.notice.test_sent":"The test email was accepted by the SMTP server.","mail.error.secret_mismatch":"The SMTP secret cannot be decrypted with the active key. Check that the encryption key matches this restored database.","mail.error.load":"Unable to load the email configuration right now.","mail.error.save":"Unable to save the email configuration right now.","mail.validation.host":"The SMTP server is required.","mail.validation.port":"The SMTP port must be a number from 1 to 65535.","mail.validation.security":"The selected SMTP security mode is not supported.","mail.validation.sender_email":"The sender address is invalid.","mail.validation.sender_name":"The sender name is required.","mail.validation.reply_to":"The Reply-To address is invalid.","mail.validation.credentials":"Provide both an SMTP username and password, or leave both blank for an unauthenticated relay.","mail.validation.encryption":"SMTP authentication requires an encrypted connection.","mail.validation.recipient":"The destination address is invalid.","mail.test.subject":"Attendance Log — test email","mail.test.body":"This email confirms that the Attendance Log SMTP configuration works.","mail.test.error.NOT_CONFIGURED":"Save a complete email configuration before sending a test.","mail.test.error.AUTHENTICATION_FAILED":"SMTP authentication failed. Check the username and password.","mail.test.error.CONNECTION_FAILED":"Unable to reach the SMTP server. Check the server, port, and network.","mail.test.error.TLS_FAILED":"TLS negotiation failed. Check the security mode and server certificate.","mail.test.error.SENDER_REJECTED":"The SMTP server rejected the sender address.","mail.test.error.RECIPIENT_REJECTED":"The SMTP server rejected the destination address.","mail.test.error.DELIVERY_FAILED":"The SMTP server did not accept the test email.","mail.test.error.SECRET_STORAGE_FAILED":"The SMTP secret could not be protected before use.","mail.test.error.default":"The test email could not be sent.","security.title":"Security","security.description":"Manage the recovery key used to protect saved secrets.","security.encryption_active":"Encryption active","security.key_check":"Key requires attention","security.mismatch":"The key is configured but incompatible with the encrypted secrets currently stored. Import the recovery key that matches this database.","security.encryption.title":"Sensitive-data encryption","security.encryption.help":"Keep a copy of this key with your backups. It is required to restore encrypted secrets.","security.state":"State","security.state.active":"Active and configured","security.state.mismatch":"Key incompatible with stored secrets","security.key_id":"Key identifier","security.source":"Source","security.source.environment":"Key supplied by the environment","security.source.application":"Persistent application key","security.show_key":"Show key","security.export_key":"Export key","security.import.title":"Import a key","security.import.help":"Use the recovery file associated with a restored database. The key is replaced only if it matches existing secrets.","security.import.file":"Recovery-key file","security.import.confirm":"I confirm that I want to activate this recovery key.","security.import.submit":"Import key","security.dialog.title":"Recovery key","security.dialog.warning":"Anyone who has this key can decrypt secrets saved by Attendance Log.","security.dialog.base64":"Base64 key","security.dialog.copy":"Copy key","security.dialog.unavailable":"The key cannot be displayed right now.","security.dialog.copied":"Key copied.","security.dialog.copy_manual":"Automatic copying is unavailable. Copy the selection manually.","security.notice.imported":"The recovery key was imported and activated.","security.error.load":"Unable to load the security configuration right now.","security.error.file":"Choose a valid recovery-key file.","security.error.ENVIRONMENT_KEY_MANAGED":"The key is supplied by the environment. Change it in the deployment secret manager.","security.error.IMPORT_CONFIRMATION_REQUIRED":"Explicitly confirm the key import.","security.error.RECOVERY_FINGERPRINT_MISMATCH":"The file identifier does not match the key it contains.","security.error.RECOVERY_KEY_MISMATCH":"This key cannot decrypt the secrets currently saved. It was not activated.","security.error.RECOVERY_FORMAT_INVALID":"The recovery-key file is invalid.","security.error.default":"The recovery key could not be imported.","import.title":"Import {students}","import.description":"Add {students} to an {class} from a CSV file.","import.summary":"Import summary","import.created":"Created","import.matched":"Existing matches","import.skipped":"Errors or skipped rows","import.prepare":"Prepare the file","import.columns":"Use the columns first_name, last_name, and email. Maximum size: 1 MB.","import.create_class_first":"Create an {class} first.","import.target":"Target {class}","import.choose_class":"Choose an {class}","import.file":"CSV file","import.file_help":"One CSV file, up to 2,000 rows.","import.submit":"Import {students}","import.error.unavailable":"Import unavailable","import.error.load":"Unable to load the import form right now.","import.error.failed":"Import failed","import.error.process":"Unable to process the import right now.","import.error.too_large":"The file exceeds the 1 MB maximum size.","import.error.upload":"The file could not be uploaded.","import.error.class":"Choose a valid {class}.","import.error.file":"Choose a CSV file.","import.error.invalid_csv":"The CSV file is invalid or does not contain the required columns.","avery.description":"{width} × {height} mm — {count} per sheet","avery.group.labels":"Labels","avery.group.badges":"Badges and inserts","print.design.title":"Print design","print.design.description":"Adjust badge content without changing Avery geometry.","print.design.profile":"Avery template","print.design.geometry_locked":"Sheet dimensions, margins, pitch, and A4 positions remain locked.","print.design.custom":"Customized","print.design.default":"Default","print.design.format":"Format","print.design.composition":"Composition","print.design.composition_help":"Select, move, or resize an element. Values are in millimetres.","print.design.desktop_only":"Editing the template requires a larger screen.","print.design.aids":"Placement aids","print.design.grid":"Show grid","print.design.snap":"Snap to grid","print.design.snap_help":"Smart alignment guides remain active independently.","print.design.preview_scale":"proportional physical preview","print.design.properties":"Element properties","print.design.select_element":"Select an element in the preview.","print.design.example":"Preview with sample data","print.design.sample.title":"{student} card 2027","print.design.sample.activity":"Navigation course 2026–2027","print.design.test_page":"Generate a test page","print.design.reset":"Reset template","print.design.reset_confirm":"Reset this Avery template?","print.design.show":"Show","print.design.width":"Width","print.design.height":"Height","print.design.font_size":"Font size","print.design.alignment":"Alignment","print.design.align.left":"Left","print.design.align.center":"Centered","print.design.align.right":"Right","print.design.rotation":"Rotation","print.design.element.qr":"QR","print.design.element.code":"{student} code","print.design.element.title":"Title","print.design.element.name":"{student} name","print.design.element.activity":"{class}","print.design.element.logo":"Logo","print.design.element.disclaimer":"Notice","print.design.edit_element":"Edit: {element}","print.design.logo_current":"Current logo","print.design.notice.saved":"The template was saved.","print.design.notice.reset":"The default template was restored.","print.design.error.invalid":"The print template is invalid.","print.design.error.unavailable.title":"Design unavailable","print.design.error.unavailable.message":"Unable to load the print design right now.","print.design.error.save.title":"Unable to save","print.design.error.save.message":"Unable to save the template right now.","print.design.error.not_found.title":"Template not found","print.design.error.not_found.message":"The requested Avery template was not found.","print.design.error.reset.title":"Unable to reset","print.design.error.reset.message":"Unable to reset the template right now.","print.design.error.pdf.title":"PDF unavailable","print.design.error.pdf.message":"Unable to generate the test PDF right now.","print.design.error.qr_collision":"No element may overlap the QR code.","print.design.error.prepare":"The template could not be prepared.","print.design.validation.number":"{field} is invalid.","print.design.validation.element":"The {element} element is invalid.","print.design.validation.property":"The {element} element contains an unauthorized property.","print.design.validation.bounds":"The {element} element exceeds the printable bounds.","print.design.validation.qr_square":"The QR code must remain square.","print.design.validation.font_size":"The text size for {element} is invalid.","print.design.validation.alignment":"The alignment for {element} is invalid.","print.design.validation.rotation":"The code rotation is invalid.","print.design.validation.layout":"The print design is invalid.","print.design.validation.size":"The print design is too large.","print.design.validation.qr_visible":"The QR code must remain visible.","print.design.validation.disclaimer":"The disclaimer cannot fit legibly on this format.","print.design.validation.qr_overlap":"No element may overlap the QR code.","qr.print.title":"Print QR codes","qr.print.pdf_title":"{participants} QR codes — Avery {reference}","qr.print.description":"Prepare an A4 sheet for a verified Avery format.","qr.print.back":"Back to directory","qr.print.actual_size":"Print the PDF at 100% / Actual size.","qr.print.no_fit":"Turn off “Fit to page”.","qr.print.selection.title":"1. Choose {participants}","qr.print.selection.help":"Inactive records and {memberships} remain excluded.","qr.print.selection.mode":"Selection mode","qr.print.selection.all":"All active","qr.print.selection.by_activity":"By {activity}","qr.print.selection.manual":"Manual selection","qr.print.selection.choose_activity":"Choose: {activity}","qr.print.selection.no_active_mode":"No active result is available for this mode.","qr.print.selection.search":"Search {participants}","qr.print.selection.search_placeholder":"Name, email, or code…","qr.print.selection.select_all":"Select all","qr.print.selection.count":"Selection:","qr.print.selection.none":"No active {participants} are available.","qr.print.sheet.title":"2. Prepare the sheet","qr.print.sheet.help":"The starting position applies only to the first sheet.","qr.print.profile":"Avery format","qr.print.first_position":"First available label","qr.print.badge_title":"Title","qr.print.badge_title_example":"Example: {student} card, {student} 2026–2027","qr.print.warning":"Add the personal QR notice","qr.print.warning.available":"Available on formats with enough space to remain readable.","qr.print.warning.optional":"Optional. The text is composed at a print-appropriate size.","qr.print.warning.unsupported":"This format is too small to display the notice legibly.","qr.print.activity":"Add the name ({activity})","qr.print.dimensions":"Dimensions","qr.print.per_sheet":"Labels per sheet","qr.print.sheets_estimated":"Estimated sheets","qr.print.generate":"Generate PDF","qr.print.calibration":"Print a test sheet","qr.print.error.title_invalid":"The title is invalid.","qr.print.error.title_length":"The title must contain no more than 40 characters and no HTML tags.","qr.print.error.profile":"Choose a supported Avery format.","qr.print.error.position":"The first available position is invalid.","qr.print.error.mode":"Choose a valid selection mode.","qr.print.error.selection":"The requested selection is invalid.","qr.print.error.choose_active":"Choose at least one active {student}.","qr.print.error.inactive":"The selection contains an inactive or unavailable record.","qr.print.error.no_match":"No active result matches this selection.","qr.print.error.too_many":"The selection is too large for one PDF.","qr.print.error.warning":"The notice cannot remain legible on this Avery format.","qr.print.error.unavailable.title":"Printing unavailable","qr.print.error.unavailable.message":"Unable to load the print options right now.","qr.print.error.pdf.title":"PDF unavailable","qr.print.error.pdf.message":"Unable to generate the PDF right now.","qr.print.error.calibration.title":"Test sheet unavailable","qr.print.error.calibration.message":"Unable to generate the test sheet right now.","reporting.privacy_hidden":"Personal data is hidden in this report.","reporting.pii_required.title":"Individual report unavailable","reporting.pii_required.message":"Named individual reports require permission to view personal data.","reporting.not_found":"The requested item does not exist.","reporting.navigation":"Reporting sections","reporting.overview":"Overview","reporting.summary":"Summary","reporting.closed_sessions":"Closed {sessions}","reporting.attendance_count":"Number of {attendance}","reporting.present_count":"Present","reporting.absent_count":"Absent","reporting.attendance_rate":"{attendance} rate","reporting.on_time":"On time","reporting.late":"Late","reporting.punctuality_rate":"Punctuality rate","reporting.no_history":"No closed historical data.","reporting.invalid.selection":"The selection contains an invalid value.","reporting.invalid.start_date":"The start date is invalid.","reporting.invalid.end_date":"The end date is invalid.","reporting.invalid.date_order":"The start date must be before the end date.","reporting.description":"View and export only {attendance} from closed {sessions}.","reporting.browse":"Browse reports","reporting.by_class":"Reporting by {class}","reporting.by_class_help":"Summary by {session} and {student}","reporting.by_session":"Reporting by {session}","reporting.by_session_help":"All closed {sessions} and their rates","reporting.by_student":"Reporting by {student}","reporting.by_student_identified_help":"Individual history of closed {sessions}","reporting.by_student_private_help":"Pseudonymized summary by {class}","reporting.global_export":"Global {attendance} export","reporting.global_export_help":"Dates are inclusive. Open or scheduled {sessions} remain excluded.","reporting.no_filter":"No filter","reporting.from":"From","reporting.to":"To","reporting.export_attendance":"Export {attendance}","reporting.no_class_data":"No data is available for {classes}.","reporting.search_class":"Search for an {class}","reporting.search_name_placeholder":"Name…","reporting.summary_closed":"Closed {sessions}: {count} · {attendance}: {opportunities}","reporting.count_present_absent":"{present} present · {absent} absent","reporting.view_report":"View report","reporting.class_description":"Summary of closed {sessions} for each {class}.","reporting.error.unavailable":"Reporting unavailable","reporting.error.load":"Unable to load Reporting right now.","reporting.error.load_by":"Unable to load Reporting by {subject}.","reporting.error.report":"Unable to load this report right now.","reporting.filename.course":"attendance-course","reporting.filename.session":"attendance-session","reporting.filename.participant":"attendance-participant","reporting.filename.global":"attendance","reporting.filename.from":"from-{date}","reporting.filename.until":"until-{date}","reporting.error.export_title":"Export failed","reporting.error.export":"Unable to generate this Excel export.","reporting.official_only":"Official data from closed {sessions} only.","reporting.export_excel":"Export to Excel","reporting.back_list":"Back to list","reporting.by":"By {subject}","reporting.detail_by":"Detail by {subject}","reporting.start":"Start","reporting.expected":"Expected","reporting.rate":"Rate","reporting.delays":"Late","reporting.punctuality":"Punctuality","reporting.absences":"Absences","reporting.no_closed_sessions":"No closed {session} to report.","reporting.search_session":"Search for a {session}","reporting.search_session_placeholder":"Title, {class}, or {instructor}…","reporting.state_closed":"State: closed","reporting.session_counts":"{present} / {total} present","reporting.punctual_counts":"{onTime} on time · {late} late","reporting.view_session":"View {session}","reporting.sessions_description":"Official results from closed {sessions}.","reporting.closed_required":"A closed {session} is required for an official export.","reporting.no_student_history":"No closed historical data for {students}.","reporting.search_student":"Search for a {student}","reporting.search_identified":"Name or code…","reporting.search_private":"Pseudonym or {class}…","reporting.student_sessions":"{count} closed {sessions}","reporting.students_identified_description":"Individual history of closed {sessions}.","reporting.students_private_description":"Pseudonymized summary by {class}.","reporting.identification_code":"Identification code · {code}","reporting.attendance_history":"{attendance} history","reporting.history_for":"History for {name}","reporting.arrival":"Arrival","reporting.delta_minutes":"Difference (min)","reporting.unknown_arrival":"Unknown","reporting.invalid_filters":"Invalid filters","reporting.report_of":"Report for {name}","reporting.error.export_unavailable":"Export unavailable","privacy.settings.description":"Preview eligibility and anonymize {students} individually after an irreversible-action check.","privacy.retention.title":"Retention policy","privacy.retention.help":"This list is a preview. Each anonymization requires confirmation and a new server-side check.","privacy.retention.label":"Anonymize inactive {participants} after","privacy.retention.never_help":"“Never” disables eligibility and preserves current behavior.","privacy.retention.save":"Save policy","privacy.preview.title":"Eligibility preview","privacy.preview.help":"An active {participant}, or one with an active registration, is always excluded.","privacy.summary.label":"Eligibility summary","privacy.summary.total":"Total","privacy.summary.inactive":"Inactive","privacy.summary.eligible":"Eligible","privacy.summary.active_membership":"Active {membership}","privacy.summary.recent_activity":"Recent activity","privacy.summary.insufficient_date":"Insufficient date","privacy.summary.policy_disabled":"Retention disabled","privacy.inactivity.days":"{count} day(s)","privacy.inactivity.months":"{count} month(s)","privacy.inactivity.since_creation":" since creation","privacy.search":"Search for a {participant}","privacy.search_placeholder":"Name, email, or code…","privacy.filter.label":"Filter by eligibility","privacy.filter.all":"All","privacy.filter.eligible":"Eligible","privacy.filter.ineligible":"Not eligible","privacy.table.label":"{students} eligibility preview","privacy.table.none":"No {participant} matches the criteria.","privacy.table.last_activity":"Last activity","privacy.table.inactivity":"Inactivity","privacy.table.eligibility":"Eligibility","privacy.table.details_for":"Show retention details for {name}","privacy.table.details":"Show details","privacy.results":"{count} result(s)","privacy.drawer.title":"{student} data","privacy.drawer.identity":"Identity","privacy.drawer.email":"Email","privacy.drawer.code":"Code","privacy.drawer.anonymized_at":"Anonymized at","privacy.drawer.retention":"Retention","privacy.drawer.created_at":"Created at","privacy.drawer.reference_date":"Reference date","privacy.drawer.policy":"Policy","privacy.drawer.active_memberships":"Active {memberships}","privacy.drawer.reason":"Reason","privacy.drawer.export":"Export data","privacy.anonymization.title":"Irreversible anonymization","privacy.anonymization.load_help":"Load the details to check current eligibility.","privacy.anonymization.action":"Anonymize {student}","privacy.anonymization.irreversible":"This operation is irreversible.","privacy.anonymization.identity":"Identity fields will be destroyed or replaced.","privacy.anonymization.memberships":"historical {memberships} will be retained.","privacy.anonymization.attendance":"{attendance} records will be retained.","privacy.anonymization.audit":"audit event(s) will be redacted.","privacy.anonymization.qr":"The old QR code will stop working immediately.","privacy.anonymization.confirm":"Confirm anonymization","privacy.anonymization.checking":"Checking…","privacy.anonymization.final_check":"Final eligibility check…","privacy.anonymization.no_longer_eligible":"This {student} is no longer eligible.","privacy.anonymization.verified":"Eligibility verified. Confirm only if you want to continue.","privacy.anonymization.unavailable":"The check is unavailable right now.","privacy.anonymization.already":"This {student} is already anonymized.","privacy.anonymization.impossible_reason":"Anonymization unavailable: {reasons}.","privacy.anonymization.currently_eligible":"This {student} is currently eligible for anonymization.","privacy.anonymization.action_unavailable":"Action unavailable: {reasons}.","privacy.anonymization.unavailable_generic":"This action is unavailable.","privacy.anonymization.date":"Anonymized on {date}.","privacy.reason.already_anonymized":"{student} already anonymized","privacy.reason.policy_disabled":"Retention policy disabled","privacy.reason.active_participant":"Active {student}","privacy.reason.active_membership":"Active {membership}","privacy.reason.insufficient_date":"Insufficient activity date","privacy.reason.recent_activity":"Activity too recent","privacy.reason.eligible":"Eligible","privacy.value.anonymized_data":"Anonymized data","privacy.value.anonymized":"Anonymized","privacy.notice.policy_saved":"The retention policy was saved.","privacy.notice.anonymized":"The {student} was irreversibly anonymized.","privacy.error.load":"Unable to load the retention preview right now.","privacy.error.not_found":"{student} not found.","privacy.error.export":"Unable to export the data right now.","privacy.error.not_found.title":"{student} not found","privacy.error.not_found.message":"No record matches this request.","privacy.error.confirmation.title":"Confirmation required","privacy.error.confirmation.message":"Irreversible anonymization must be explicitly confirmed.","privacy.error.anonymize.title":"Anonymization unavailable","privacy.error.refresh":"Refresh Data protection.","privacy.error.no_changes":"No data was changed. Try again later.","privacy.error.retention_invalid":"Choose a valid retention period.","privacy.error.retention_invalid_short":"Invalid retention policy.","privacy.error.retention_save":"Unable to save the retention policy right now.","audit.title":"Audit log","audit.description":"Review significant business and security actions. Events are retained without automatic deletion.","audit.export_label":"Export audit log","audit.from":"From","audit.to":"To","audit.user":"User","audit.result":"Result","audit.category":"Category","audit.action":"Action","audit.target":"Target","audit.filter":"Filter","audit.events":"Audit events","audit.events_list":"Audit event list","audit.no_match":"No event matches the filters.","audit.event_count":"{count} event(s)","audit.details.show":"Show details","audit.details.show_event":"Show details for the event on {date}","audit.details.title":"Event details","audit.details.section":"Details","audit.details.role":"Role","audit.details.summary":"Summary","audit.details.ip":"IP fingerprint","audit.details.user_agent":"Browser fingerprint","audit.details.changes":"Changes","audit.details.metadata":"Additional information","audit.details.no_changes":"No field change was recorded.","audit.details.no_metadata":"No additional information.","audit.details.unavailable":"Details unavailable","audit.details.load_failed":"Unable to load details right now.","audit.system":"System","audit.error.unavailable.title":"Audit log unavailable","audit.error.unavailable.message":"Unable to load the Audit log right now.","audit.error.export.title":"Export unavailable","audit.error.export.large":"Narrow the filters before exporting the Audit log.","audit.error.export.message":"Unable to export the Audit log right now.","audit.export.sheet":"Audit log","audit.export.timestamp":"Timestamp","audit.export.target_type":"Target type","audit.export.changes":"Changes","audit.category.attendance":"{attendance}","audit.category.backup":"Backups","audit.category.branding":"Branding","audit.category.class":"{classes}","audit.category.import":"Import","audit.category.maintenance":"Maintenance","audit.category.mail":"Email","audit.category.restore":"Restore","audit.category.security":"Security","audit.category.session":"{sessions}","audit.category.student":"{students}","audit.category.terminology":"Terminology","audit.category.user":"Users","audit.category.print_design":"Print design","audit.category.privacy":"Data protection","audit.category.internationalization":"Language and region","audit.action.attendance.manual.update":"{attendance} changed manually","audit.action.attendance.check_in_time.update":"Arrival time corrected","audit.action.attendance.qr.present":"{attendance} recorded by QR","audit.action.attendance.quick.present":"Quick mode — {attendance} recorded","audit.action.attendance.undo":"Quick {attendance} change undone","audit.action.authentication.break_glass.success":"Emergency sign-in succeeded","audit.action.authentication.logout":"Sign out","audit.action.authentication.otp.success":"Code sign-in succeeded","audit.action.authorization.denied":"Access denied","audit.action.backup.cloud.run":"Cloud backup run","audit.action.backup.configuration.update":"Backup configuration changed","audit.action.backup.manual.download":"Backup downloaded","audit.action.backup.scheduled.run":"Scheduled backup run","audit.action.branding.logo.add":"Installation logo added","audit.action.branding.logo.remove":"Installation logo removed","audit.action.branding.logo.replace":"Installation logo replaced","audit.action.class.create":"{class} created","audit.action.class.delete":"{class} deleted","audit.action.class.update":"{class} changed","audit.action.class.logo.add":"{class} logo added","audit.action.class.logo.remove":"{class} logo removed","audit.action.class.logo.replace":"{class} logo replaced","audit.action.class.summary.configuration.update":"{class} summary configuration changed","audit.action.mail.configuration.update":"Email configuration changed","audit.action.mail.test":"Email configuration tested","audit.action.membership.add":"{membership} added","audit.action.membership.deactivate":"{membership} deactivated","audit.action.membership.reactivate":"{membership} reactivated","audit.action.membership.remove":"{membership} removed","audit.action.operational_data.reset":"Business data reset","audit.action.print_design.save":"Print template saved","audit.action.print_design.reset":"Print template reset","audit.action.privacy.retention.update":"Retention policy changed","audit.action.privacy.student.anonymize":"Participant anonymized","audit.action.privacy.student.export":"Personal data exported","audit.action.international.settings.update":"Language and regional settings changed","audit.action.restore.failed":"Restore failed","audit.action.restore.start":"Restore started","audit.action.restore.success":"Restore succeeded","audit.action.security.recovery_key.export":"Recovery key exported","audit.action.security.recovery_key.import":"Recovery key imported","audit.action.security.recovery_key.view":"Recovery key displayed","audit.action.session.close":"{session} closed","audit.action.session.create":"{session} created","audit.action.session.open":"{session} opened","audit.action.session.reopen":"{session} reopened","audit.action.session.update":"{session} changed","audit.action.session.summary.configuration.update":"Summary recipients changed","audit.action.session.summary.send":"{attendance} summary sent","audit.action.session.summary.resend":"{attendance} summary resent","audit.action.student.create":"{student} created","audit.action.student.deactivate":"{student} deactivated","audit.action.student.import":"{students} imported","audit.action.student.reactivate":"{student} reactivated","audit.action.student.update":"{student} changed","audit.action.terminology.reset":"Terminology reset","audit.action.terminology.update":"Terminology changed","audit.action.user.activate":"User reactivated","audit.action.user.break_glass.create":"Emergency account created","audit.action.user.break_glass.password_change":"Emergency password changed","audit.action.user.create":"User created","audit.action.user.deactivate":"User deactivated","audit.action.user.delete":"User deleted","audit.action.user.edit":"User changed","audit.action.user.invitation.resend":"Invitation resent","audit.action.user.invitation.send":"Invitation sent","audit.action.user.role_change":"User role changed","audit.action.user.sessions.revoke":"User sessions revoked","audit.action.user.ui_language.update":"Interface language changed","audit.field.active":"Active state","audit.field.date":"Date","audit.field.description":"Description","audit.field.email":"Email address","audit.field.enabled":"Enabled","audit.field.execution_time":"Execution time","audit.field.frequency":"Frequency","audit.field.instructor":"{instructor}","audit.field.name":"Name","audit.field.notes":"Notes","audit.field.retention_days":"Retention","audit.field.role":"Role","audit.field.state":"State","audit.field.status":"Status","audit.field.title":"Title","audit.field.weekly_day":"Weekly day","audit.field.checked_in_at":"Arrival time","audit.field.start_time":"Start time","audit.field.punctuality_tolerance_minutes":"{class} tolerance","audit.field.punctuality_tolerance_override_minutes":"{session} tolerance","audit.field.summary_attach_xlsx":"Default Excel attachment","audit.field.summary_attach_xlsx_override":"{session} Excel attachment","audit.field.summary_admin_recipient_count":"Recipient users","audit.field.summary_external_recipient_count":"External addresses","audit.field.view_pii":"View personal data (PII)","audit.field.retention_months":"{students} retention (months)","audit.field.anonymized_at":"Anonymized at","audit.field.ui_language":"Interface language","audit.field.language":"Business language","audit.field.default_language":"Default language","audit.field.locale":"Locale","audit.field.timezone":"Timezone","audit.field.student_singular":"{student} term (singular)","audit.field.student_plural":"{student} term (plural)","audit.field.class_singular":"{class} term (singular)","audit.field.class_plural":"{class} term (plural)","audit.field.session_singular":"{session} term (singular)","audit.field.session_plural":"{session} term (plural)","audit.field.attendance_singular":"{attendance} term (singular)","audit.field.attendance_plural":"{attendance} term (plural)","audit.field.instructor_singular":"{instructor} term (singular)","audit.field.instructor_plural":"{instructor} term (plural)","audit.field.membership_singular":"{membership} term (singular)","audit.field.membership_plural":"{membership} term (plural)","backup.title":"Backups","backup.description":"Download a backup or automate delivery to cloud storage.","backup.automatic.active":"Automatic backups enabled","backup.automatic.inactive":"Automatic backups disabled","backup.manual.title":"Manual backup","backup.manual.description":"The file contains the PostgreSQL database and a manifest, but never the recovery key.","backup.manual.secret_help":"Provider secrets remain encrypted in the backup. Store the matching recovery key separately.","backup.manual.download":"Download a backup","backup.automatic.title":"Automatic backups","backup.automatic.schedule":"Schedule timezone: {timezone}","backup.automatic.next":"next run {date}","backup.destination.title":"Cloud destination","backup.destination.help":"Used by immediate and scheduled backups.","backup.destination":"Destination","backup.select":"Select…","backup.s3.bucket":"Bucket","backup.s3.region":"Region","backup.s3.endpoint":"Custom endpoint","backup.s3.prefix":"Prefix","backup.s3.access_key":"Access key ID","backup.s3.secret_key":"Secret access key","backup.secret.placeholder":"Leave blank to keep the key…","backup.secret.keep":"Leave blank to keep the key when the account or identifier is unchanged.","backup.s3.path_style":"Use path-style addressing","backup.azure.account":"Storage account","backup.azure.container":"Container","backup.azure.key":"Account key","backup.retention_days":"Retention period (days)","backup.retention_help":"Retention applies to every manual or scheduled backup sent to the cloud.","backup.schedule.title":"Schedule","backup.schedule.help":"Schedule a daily or weekly run.","backup.schedule.enable":"Enable automatic backups","backup.schedule.frequency":"Frequency","backup.schedule.daily":"Daily","backup.schedule.weekly":"Weekly","backup.schedule.time":"Time","backup.schedule.day":"Day","backup.encryption_help":"Attendance Log encrypts secrets in the database. Cloud storage also protects the saved file at rest.","backup.save":"Save configuration","backup.test":"Test destination","backup.run_now":"Back up now","backup.restore.title":"Restore","backup.restore.help":"Inspect and restore a local or cloud backup in a separate workflow.","backup.restore.action":"Restore a backup","backup.history.title":"History","backup.history.help":"Most recent recorded runs.","backup.history.label":"Backup history","backup.history.empty":"No backup has run yet.","backup.history.type":"Type","backup.history.size":"Size","backup.history.latest_failure":"Latest backup: failed on {date}. {message}","backup.history.manual_download":"Manual download","backup.history.manual_cloud":"Manual cloud","backup.history.scheduled":"Scheduled","backup.history.local":"Download","backup.notice.saved":"The backup configuration was saved.","backup.notice.tested":"The backup destination is reachable.","backup.notice.completed":"The backup was sent to the configured destination.","backup.error.load":"Unable to load the backup configuration.","backup.error.default":"The backup operation failed.","backup.error.BACKUP_IN_PROGRESS":"A backup is already in progress. Try again when it finishes.","backup.error.PG_DUMP_UNAVAILABLE":"The PostgreSQL backup tool is unavailable in the application.","backup.error.PG_DUMP_FAILED":"The PostgreSQL backup failed. Check database availability.","backup.error.PROVIDER_REQUIRED":"Choose a destination before enabling automatic backups.","backup.error.PROVIDER_UNSUPPORTED":"The selected destination is not supported.","backup.error.FREQUENCY_INVALID":"Choose a daily or weekly frequency.","backup.error.EXECUTION_TIME_INVALID":"Enter a valid execution time.","backup.error.WEEKDAY_INVALID":"Choose a day for the weekly backup.","backup.error.RETENTION_INVALID":"The retention period must be from 1 to 3650 days.","backup.error.S3_BUCKET_REQUIRED":"Enter the S3 bucket.","backup.error.S3_REGION_REQUIRED":"Enter the S3 region.","backup.error.S3_ENDPOINT_INVALID":"The S3 endpoint URL is invalid.","backup.error.S3_CREDENTIALS_INCOMPLETE":"Enter both the S3 key ID and secret key, or leave both blank.","backup.error.AZURE_ACCOUNT_INVALID":"The Azure account name is invalid.","backup.error.AZURE_CONTAINER_INVALID":"The Azure container name is invalid.","backup.error.AZURE_CREDENTIAL_REQUIRED":"Enter the Azure account key.","backup.error.SECRET_KEY_MISMATCH":"Backup credentials cannot be decrypted with the active key. Check the recovery key.","backup.error.STORAGE_AUTHENTICATION_FAILED":"Authentication with the destination failed.","backup.error.STORAGE_PERMISSION_DENIED":"The destination rejected the operation. Check permissions.","backup.error.STORAGE_NOT_FOUND":"The configured bucket or container was not found.","backup.error.STORAGE_CONNECTION_FAILED":"Unable to reach the backup destination.","restore.title":"Restore a backup","restore.description":"Inspect a backup before replacing installation data.","restore.safety_backup_prefix":"before-restore","restore.back":"Back to backups","restore.warning":"A restore completely replaces the current database. Business data can still be restored when the encryption key differs.","restore.local.title":"From a file","restore.local.help":"ZIP archive created by Attendance Log, up to {size} MB.","restore.file":"Backup file","restore.inspect_file":"Inspect file","restore.cloud.title":"From the cloud","restore.cloud.help":"Backups under the Attendance Log prefix at the currently configured destination.","restore.cloud.available":"Available backup","restore.cloud.inspect":"Inspect cloud backup","restore.cloud.empty":"No Attendance Log backup is available at the configured destination.","restore.history.title":"Restore history","restore.history.help":"Most recent attempts recorded in the current database.","restore.history.empty":"No restore has run yet.","restore.preview.title":"Confirm restore","restore.preview.description":"Check origin and compatibility before continuing.","restore.preview.change":"Choose another backup","restore.key.compatible":"Compatible key — encrypted secrets should remain usable.","restore.key.mismatch":"The current key does not match this backup. Business data will be restored, but encrypted credentials must be recovered with the matching key or reconfigured.","restore.instance.other":"This backup is from another instance. Restore remains allowed and the current installation identity will be retained.","restore.safety.title":"Current data detected","restore.safety.help":"Before replacement, Attendance Log will try a cloud backup. If unavailable, you must download this safety backup.","restore.safety.download":"Download safety backup","restore.safety.generated":"Safety backup generated","restore.backup_date":"Backup date","restore.application_version":"Application version","restore.database_migration":"Database migration","restore.source_instance":"Source instance","restore.current_instance":"Current instance","restore.backup_key":"Backup key","restore.current_key":"Current key","restore.not_provided_legacy":"Not provided (older backup)","restore.not_provided":"Not provided","restore.confirm.title":"Destructive confirmation","restore.confirm.help":"The current database will be replaced after full validation in a temporary database.","restore.confirm.understood":"I understand that current data will be replaced.","restore.confirm.type":"Enter RESTAURER","restore.confirm.submit":"Restore this backup","restore.complete.title":"Restore complete","restore.complete.description":"Attendance Log is restarting with the restored data.","restore.complete.success":"Restore succeeded.","restore.complete.external":" Some external connections must be recovered with the matching key or reconfigured.","restore.complete.relogin":"You will need to sign in again after restart.","restore.error.upload_size":"The file exceeds the {size} MB limit.","restore.error.upload":"The file could not be received.","restore.error.default":"The restore could not be completed.","restore.error.BACKUP_IN_PROGRESS":"A backup or restore operation is already in progress.","restore.error.RESTORE_IN_PROGRESS":"A restore is already in progress.","restore.error.RESTORE_PREPARATION_EXPIRED":"Preparation expired. Choose the backup again.","restore.error.BACKUP_ZIP_INVALID":"The ZIP file is unreadable or corrupted.","restore.error.BACKUP_STRUCTURE_INVALID":"The archive does not contain exactly the expected manifest and PostgreSQL backup.","restore.error.BACKUP_MANIFEST_INVALID":"The backup manifest is invalid.","restore.error.BACKUP_INVALID":"This file is not a valid Attendance Log backup.","restore.error.BACKUP_VERSION_UNSUPPORTED":"This backup-format version is not supported.","restore.error.BACKUP_SCHEMA_NEWER":"This backup is from a newer Attendance Log version. Update the application before restoring it.","restore.error.BACKUP_DUMP_INVALID":"The PostgreSQL backup is invalid or corrupted.","restore.error.BACKUP_DUMP_INVALID_UNAVAILABLE":"The PostgreSQL restore tool is unavailable.","restore.error.DATABASE_RESTORE_FAILED":"PostgreSQL restore failed. The current database was not replaced.","restore.error.RESTORE_MIGRATION_FAILED":"The restored database upgrade failed. The current database was not replaced.","restore.error.RESTORE_SWAP_UNRECOVERABLE":"The database swap and rollback both failed. PostgreSQL intervention is required; inspect the application logs immediately.","restore.error.SAFETY_BACKUP_REQUIRED":"A safety backup must be downloaded before replacing current data.","restore.error.SECRET_KEY_MISMATCH":"Cloud credentials cannot be decrypted with the active key.","restore.error.STORAGE_AUTHENTICATION_FAILED":"Authentication with the cloud destination failed.","restore.error.STORAGE_PERMISSION_DENIED":"The cloud destination rejected the operation.","restore.error.STORAGE_NOT_FOUND":"The cloud backup or destination was not found.","restore.error.STORAGE_CONNECTION_FAILED":"Unable to reach the cloud destination.","restore.error.CONFIRMATION_REQUIRED":"Select the confirmation and enter RESTAURER to continue.","restore.error.FILE_REQUIRED":"Choose a backup ZIP file.","restore.error.PROVIDER_REQUIRED":"Configure an S3 or Azure destination to list cloud backups.","restore.error.BACKUP_FAILED":"The cloud destination could not be queried.","terminology.title":"Terminology","terminology.description":"Customize application terminology independently in English and French.","terminology.business_terms":"Localized application terminology","terminology.internal_unchanged":"Each language is independent. Business names, routes, data, and internal functions are not renamed.","terminology.singular":"Singular","terminology.plural":"Plural","terminology.input_label":"{concept} — {language}, {form}","terminology.defaults":"Default terms","terminology.defaults_help":"Restore the terminology supplied with Attendance Log.","terminology.reset":"Reset default terms","terminology.reset_confirm":"Reset the English and French terms to their defaults?","terminology.notice.saved":"The terminology was saved.","terminology.notice.reset":"The default terms were restored.","terminology.error.load":"Unable to load the terminology right now.","terminology.error.save":"Unable to save the terminology right now.","terminology.error.reset":"Unable to reset the terminology right now.","terminology.validation.required":"All terms are required.","terminology.validation.length":"Each term must contain no more than {length} characters.","terminology.validation.plain":"Terms must be plain text on a single line.","terminology.concept.student":"Student","terminology.concept.class":"Class","terminology.concept.session":"Session","terminology.concept.attendance":"Attendance","terminology.concept.instructor":"Instructor","terminology.concept.membership":"Registration","branding.title":"Branding","branding.description":"Add a shared logo to QR emails and badges that have enough space.","branding.logo.title":"Installation logo","branding.logo.help":"PNG or JPEG, up to 2 MB. The image is verified and normalized to PNG.","branding.logo.current_alt":"Current installation logo","branding.logo.none":"No logo is configured.","branding.logo.choose":"Choose a logo","branding.logo.replace":"Replace logo","branding.logo.remove":"Remove logo","branding.logo.confirm_remove":"Remove the installation logo?","branding.notice.saved":"The installation logo was saved.","branding.notice.removed":"The installation logo was removed.","branding.notice.invalid":"Choose a valid PNG or JPEG image no larger than 2 MB.","branding.notice.failed":"Unable to save the logo right now.","maintenance.title":"Maintenance","maintenance.description":"Manage exceptional operations on application data.","maintenance.safety_backup_prefix":"before-reset","maintenance.reset.title":"Reset business data","maintenance.reset.description":"Deletes: {students}, {classes}, {memberships}, {sessions}, and {attendance}. Administrator accounts, configuration, backups, and encrypted secrets are retained.","maintenance.destructive":"Destructive action","maintenance.empty":"No business data is currently recorded.","maintenance.safety_help":"A recent safety backup is required. Attendance Log first tries a cloud backup. If the destination is unavailable, download the local backup below.","maintenance.safety_download":"Download safety backup","maintenance.safety_downloaded":"Local backup downloaded","maintenance.confirm":"I understand that all business data will be permanently deleted.","maintenance.type_delete":"Enter EFFACER","maintenance.reset.submit":"Reset business data","maintenance.notice.reset":"Business data was reset.","maintenance.error.load":"Unable to load maintenance settings right now.","maintenance.error.safety":"The safety backup could not be created.","maintenance.error.BACKUP_IN_PROGRESS":"A backup or restore is already in progress. Try again after it finishes.","maintenance.error.RESET_IN_PROGRESS":"A maintenance operation is already in progress.","maintenance.error.RESET_CONFIRMATION_REQUIRED":"Select the confirmation and enter EFFACER to continue.","maintenance.error.RESET_SAFETY_BACKUP_REQUIRED":"The cloud backup could not be created. Fully download the local safety backup before trying again.","maintenance.error.RESET_EMPTY":"There is no business data to reset.","maintenance.error.default":"Business data could not be reset.","auth.administration":"Administration","auth.privacy":"Data protection","auth.login.title":"Sign in","auth.login.identifier":"Email address or username","auth.login.continue":"Continue","auth.login.other_identifier":"Use another identifier","auth.login.submit":"Sign in","auth.password.title":"Password","auth.password.label":"Password","auth.otp.title":"Sign-in code","auth.otp.instructions":"Enter the 6-digit code received by email.","auth.otp.label":"Sign-in code","auth.otp.resend":"Resend a code","auth.otp.resend_ready":"You can now resend a code.","auth.otp.resend_in":"Resend a code in {time}","auth.otp.request_notice":"If this address belongs to an active account, a sign-in code has been requested. If it does not arrive, try again after the indicated delay.","auth.otp.wait_before_resend":"Wait before requesting another code.","auth.otp.resend_check_failed":"Unable to check the resend delay right now.","auth.otp.resend_failed":"Unable to send another code right now.","auth.otp.invalid":"The code is incorrect or expired. Request another code if needed.","auth.request_failed":"Unable to process the request right now.","auth.signin_failed":"Unable to sign in right now.","auth.credentials_invalid":"The username or password is incorrect. Try again later if needed.","auth.logout_failed":"Unable to sign out right now.","auth.session_unavailable.title":"Session unavailable","auth.session_unavailable.message":"Unable to verify your session right now.","auth.session_expired":"Your session has expired.","auth.access_denied.title":"Access denied","auth.access_denied.message":"You do not have access to this feature.","auth.email.otp.subject":"Attendance Log — sign-in code","auth.email.otp.heading":"Sign in to Attendance Log","auth.email.otp.code_intro":"Your Attendance Log sign-in code is:","auth.email.otp.expiry":"This code expires in 10 minutes. If you did not request it, ignore this email.","auth.email.invitation.subject":"Invitation to Attendance Log","auth.email.invitation.greeting":"Hello {name},","auth.email.invitation.assigned":"An Attendance Log account has been assigned to you.","auth.email.invitation.role":"Role: {role}","auth.email.invitation.role_label":"Role:","auth.email.invitation.login":"Sign in: {url}","auth.email.invitation.passwordless":"Attendance Log uses passwordless sign-in: enter your email address, receive a one-time code, then enter that code to authenticate.","auth.email.invitation.signin":"Sign in to Attendance Log","auth.email.invitation.steps_intro":"Sign-in is passwordless:","auth.email.invitation.step_email":"Enter your email address.","auth.email.invitation.step_receive":"Receive a one-time code.","auth.email.invitation.step_enter":"Enter that code to authenticate.","role.administrator":"Administrator","role.manager":"Manager","role.attendance_operator":"Attendance operator","privacy.notice.title":"Data protection","privacy.notice.introduction":"This notice explains how personal data may be used in Attendance Log to organize training and track attendance.","privacy.notice.controller.title":"Data controller","privacy.notice.controller.text":"The data controller is ASBL Nouveaux Horizons. To ask a question about your personal data or exercise your rights, contact us at the address below.","privacy.notice.data.title":"Data concerned","privacy.notice.data.intro":"Depending on the activities and features used, Attendance Log may process the following categories of data:","privacy.notice.data.name":"first and last name;","privacy.notice.data.email":"email address;","privacy.notice.data.memberships":"registrations for activities or courses;","privacy.notice.data.attendance":"attendance status;","privacy.notice.data.arrival":"arrival time when a session start time is configured;","privacy.notice.data.punctuality":"punctuality information calculated from the arrival time;","privacy.notice.data.code":"participant code;","privacy.notice.data.qr":"individual QR identifier used for attendance.","privacy.notice.administration.title":"Participant and registration administration","privacy.notice.administration.purpose":"Identity and contact data are used to manage registrations and organize the training or services for which the participant registered.","privacy.notice.administration.basis":"The legal basis is Article 6(1)(b) GDPR: processing is necessary for the relationship connected with registration and delivery of the training.","privacy.notice.attendance.title":"Attendance and attendance/punctuality statistics","privacy.notice.attendance.purpose":"Attendance and, when used, arrival times help track participation, support the proper organization of training, produce attendance and punctuality statistics, and improve the organization of activities.","privacy.notice.attendance.basis":"The legal basis is Article 6(1)(f) GDPR: Nouveaux Horizons’ legitimate interests in organizing its training and understanding attendance.","privacy.notice.attendance.no_profiling":"Punctuality information is not used to make an automated decision about a participant, create a behavioral profile, or automatically impose a sanction.","privacy.notice.access.title":"Access and minimization","privacy.notice.access.minimum":"Access to personal data is limited according to each user’s responsibilities. People taking attendance receive only the necessary operational information, such as the participant’s name and code.","privacy.notice.access.pseudonym":"When real identity is not necessary for analysis, reports may show participants in pseudonymized form. Authorized operational workflows remain identified when they require the participant’s identity.","privacy.notice.retention.title":"Retention period","privacy.notice.retention.active":"Personal identity is retained while it is necessary for participation and active registrations.","privacy.notice.retention.rule":"When a participant is inactive and no active registration remains, their identity is retained for no more than 12 months after their last meaningful activity. Once that period is reached, it may be irreversibly anonymized.","privacy.notice.retention.manual":"Anonymization is not automatic: it is currently triggered manually by an authorized administrator, and only when every eligibility condition is met.","privacy.notice.retention.statistics":"Historical attendance facts and statistics may then be retained in anonymous form, without the participant’s former identity.","privacy.notice.backups.title":"Backups","privacy.notice.backups.text":"Older backups may temporarily contain personal data that has since been anonymized in the live database. These archives are not rewritten retroactively: they are subject to bounded retention and rotation, then expire under the applicable backup policy.","privacy.notice.providers.title":"Recipients and technical service providers","privacy.notice.providers.access":"Data is available to authorized Nouveaux Horizons users according to their responsibilities. When configured, it may also be processed by technical providers needed to operate Attendance Log, including the outbound email provider and secure backup-storage provider.","privacy.notice.providers.location":"The providers actually used and their processing locations depend on the configuration selected by Nouveaux Horizons.","privacy.notice.rights.title":"Your rights","privacy.notice.rights.list":"Subject to the conditions of the GDPR, you may request access to, rectification or erasure of your data, restriction of processing, or object to certain processing.","privacy.notice.rights.object":"Where processing is based on legitimate interests, you may object on grounds relating to your particular situation. Each request is assessed under the applicable conditions and therefore does not automatically lead to erasure of all information.","privacy.notice.rights.tools":"Attendance Log provides Nouveaux Horizons with technical tools to export data concerning a participant, rectify their identity, and irreversibly anonymize the identity of an eligible participant.","privacy.notice.complaint.title":"Contact and complaints","privacy.notice.complaint.text":"For any question or request, contact Nouveaux Horizons at the address below. You may also lodge a complaint with the competent supervisory authority, including the Belgian Data Protection Authority.","privacy.notice.updated":"Last updated: 12 September 2026.","dashboard.title":"Home","dashboard.description":"Live registers and the next {sessions}, at a glance.","dashboard.quick_access":"Quick access","dashboard.manage_students":"Manage {students}","dashboard.student_directory":"Browse the active directory","dashboard.plan_attendance":"Schedule and record {attendance}","dashboard.record_attendance":"Record {attendance}","dashboard.import_students":"Import {students} from a CSV file","dashboard.open_sessions":"Open {sessions}","dashboard.current_attendance":"Current {attendance}.","dashboard.view_sessions":"View {sessions}","dashboard.no_open_sessions":"Nothing is open right now. View {sessions}.","dashboard.present_count":"{present} / {total} present","dashboard.state_open":"Status: open","dashboard.unavailable.title":"Dashboard unavailable","dashboard.unavailable.message":"Unable to load the dashboard right now.","students.notice.created":"{student} record created.","students.notice.updated":"{student} record updated.","students.notice.deactivated":"{student} record deactivated.","students.directory.description_active":"Directory of active {students}.","students.directory.description_inactive":"Directory of inactive {students}.","students.directory.empty_active":"No active {students} found.","students.directory.empty_inactive":"No inactive {students} found.","students.directory.search_label":"Search the directory","students.directory.search_placeholder":"Name, email or code…","students.directory.filter_aria":"Filter {students} by status","students.directory.identity_removed":"Identity permanently removed","students.directory.actions_for":"Actions for {name}","students.directory.print_qr":"Print QR codes","students.form.add_title":"Add {student}","students.form.edit_title":"Edit {student}","students.form.first_name":"First name","students.form.last_name":"Last name","students.form.email":"Email address","students.form.communication_language":"Communication language","students.form.language_help":"Entered data, such as names, is never translated.","students.form.identification_code":"Identification code","students.form.active_status":"Globally active status","students.form.inherit":"Inherit","students.form.no_classes":"No choices available.","students.form.show_qr":"Show QR code","students.form.create":"Create","students.qr.title":"QR code for {name}","students.qr.eyebrow":"Personal QR code","students.qr.description":"This QR code identifies the person when recording {attendance}.","students.qr.back_to_record":"Back to record","students.qr.code":"Identification code · {code}","students.qr.status":"Status: {status}","students.qr.alt":"Personal QR code for {name}","students.qr.instruction":"Present this QR code when recording {attendance}, directly on screen or in print.","students.qr.send":"Send QR code","students.qr.download":"Download QR code","students.qr.sent":"The QR code was sent to {email}.","students.qr.no_email":"No email address is recorded for this person.","students.qr.unavailable_person":"The QR code is unavailable for this person.","students.qr.generate_failed":"Unable to generate the QR code to send right now.","students.qr.delivery.NOT_CONFIGURED":"Email configuration is incomplete. Configure it before sending a QR code.","students.qr.delivery.AUTHENTICATION_FAILED":"SMTP authentication failed. Check the email configuration.","students.qr.delivery.CONNECTION_FAILED":"Unable to reach the SMTP server. Check the email configuration.","students.qr.delivery.TLS_FAILED":"The secure connection to the SMTP server failed. Check the email configuration.","students.qr.delivery.SENDER_REJECTED":"The SMTP server rejected the configured sender address.","students.qr.delivery.RECIPIENT_REJECTED":"The SMTP server rejected the recipient email address.","students.qr.delivery.DELIVERY_FAILED":"The SMTP server did not accept the email containing the QR code.","students.qr.delivery.default":"The QR code could not be sent by email right now.","students.error.not_found.title":"{student} not found","students.error.not_found.message":"No record matches this request.","students.error.not_found_active":"No active record matches this request.","students.error.form_unavailable.title":"Form unavailable","students.error.form_unavailable.message":"Unable to load the form right now.","students.error.directory_unavailable.title":"Directory unavailable","students.error.directory_unavailable.message":"Unable to load the directory right now.","students.error.create.title":"Unable to create {student}","students.error.create.message":"Unable to create the record right now.","students.error.update.message":"Unable to update the record right now.","students.error.duplicate_email":"This email address is already in use.","students.error.invalid_selection":"The selection contains an invalid value.","students.error.required_identity":"First name, last name, and email address are required.","students.error.invalid_email":"The email address is not valid.","students.error.invalid_language":"The selected language is not valid.","students.error.record_unavailable.title":"Record unavailable","students.error.record_unavailable.message":"Unable to load the record right now.","students.error.edit_anonymized.title":"Unable to edit {student}","students.error.edit_anonymized.message":"This {student} identity has been permanently anonymized.","students.error.remove_started_class":"“{className}” cannot be removed after it has started. Manage its status from {classes}.","students.error.deactivate.title":"Unable to deactivate {student}","students.error.deactivate.message":"Unable to deactivate the record right now.","students.error.qr_unavailable.title":"QR code unavailable","students.error.qr_unavailable.message":"Unable to load this QR code right now.","students.error.send.title":"Unable to send","students.error.load_for_email":"Unable to load the record right now.","students.confirm.deactivate":"Deactivate this record?","classes.notice.created":"The {class} was created.","classes.notice.updated":"The {class} was updated.","classes.notice.deleted":"The {class} was deleted.","classes.list.empty":"No {class} is recorded yet.","classes.list.description":"Open {students} or {sessions} directly.","classes.list.manage_aria":"Manage {name}","classes.list.admin_aria":"Administration of {name}","classes.form.add_title":"Add {class}","classes.form.edit_title":"Edit {class}","classes.form.create":"Create","classes.form.generated_language":"Generated-content language","classes.form.inherit_installation":"Inherit installation setting","classes.form.tolerance":"Punctuality tolerance","classes.form.tolerance_help":"This value applies to {sessions} that inherit the {class} setting.","classes.logo.title":"{class} logo","classes.logo.help":"This logo replaces the installation logo on badges and QR emails for this {class}.","classes.logo.current_alt":"Current logo for this {class}","classes.logo.none":"No logo is configured for this {class}. The installation logo is used by default.","classes.logo.choose":"Choose a logo","classes.logo.replace":"Replace logo","classes.logo.remove":"Remove logo","classes.logo.confirm_remove":"Remove the logo for this {class}?","classes.logo.notice.saved":"The {class} logo was saved.","classes.logo.notice.removed":"The {class} logo was removed. The installation logo will be used.","classes.logo.notice.invalid":"Choose a valid PNG or JPEG image no larger than 2 MB.","classes.logo.notice.failed":"Unable to save the logo right now.","classes.error.not_found.title":"{class} not found","classes.error.not_found.message":"The requested item does not exist.","classes.error.list.title":"List unavailable","classes.error.list.message":"Unable to load the list right now.","classes.error.form.title":"Form unavailable","classes.error.form.message":"Unable to load the form right now.","classes.error.invalid_name":"The name is required.","classes.error.invalid_language":"The selected language is invalid.","classes.error.invalid_summary":"Check the automatic-summary recipients.","classes.error.invalid_tolerance":"Select a valid punctuality tolerance.","classes.error.create":"Unable to create the {class} right now.","classes.error.update":"Unable to save changes right now.","classes.error.delete.title":"Unable to delete {class}","classes.error.delete.message":"Unable to delete the {class} right now.","classes.confirm.delete":"Delete this {class}?","classes.roster.notice.students_added":"The selected {students} were added.","classes.roster.notice.no_students_added":"No {student} was added.","classes.roster.notice.student_removed":"The {student} was removed.","classes.roster.notice.membership_deactivated":"The {membership} was deactivated.","classes.roster.notice.membership_reactivated":"The {membership} was reactivated.","classes.roster.empty":"No {membership} is recorded here.","classes.roster.search_assigned":"Search {memberships}","classes.roster.edit_record":"Edit record","classes.roster.add_legend":"{students} to add","classes.roster.add_selection":"Add selection","classes.roster.search_hint":"Enter at least 2 characters to search for an active {student}.","classes.roster.no_available":"No results available.","classes.roster.history_warning":"This {class} has already started. {memberships} are retained to protect history. Deactivate a {membership} for future {sessions}.","classes.roster.status_help":"The displayed status applies only to this {class}.","classes.roster.add_title":"Add {students}","classes.roster.search_active":"Search for an active {student}","classes.roster.membership_status":"{membership}: {status}","classes.roster.confirm_remove":"Remove this {student} from this {class}?","classes.roster.context_aria":"Manage “{name}”","classes.error.item_unavailable.title":"Item unavailable","classes.error.item_unavailable.message":"Unable to load the requested item right now.","classes.error.add.title":"Unable to add {students}","classes.error.add.message":"Unable to add the selection right now.","classes.error.remove.title":"Unable to remove {student}","classes.error.remove.message":"Unable to remove this person right now.","classes.error.started_remove":"This {class} has already started. Deactivate the {membership} to preserve history.","classes.error.membership_not_found.title":"Assignment not found","classes.error.membership_not_found.message":"This active assignment cannot be changed.","classes.error.membership_missing":"This assignment does not exist.","classes.error.membership_active_missing":"This active assignment does not exist.","classes.error.membership_update.title":"Unable to update assignment","classes.error.membership_update.message":"Unable to change this assignment right now.","classes.error.delete_started":"This activity is linked to a {session} and cannot be deleted.","sessions.error.not_found.title":"{session} not found","sessions.error.not_found.message":"The requested item does not exist.","sessions.error.readonly.title":"{session} is read-only","sessions.error.readonly.message":"Reopen it before making changes.","sessions.validation.class":"Select a {class}.","sessions.validation.date":"A valid date is required.","sessions.validation.title":"A title is required.","sessions.validation.instructor":"The {instructor} name is required.","sessions.validation.start_time":"The start time must be valid.","sessions.validation.tolerance":"Select a valid punctuality tolerance.","sessions.validation.summary":"Check the recipients and Excel setting for the automatic summary.","sessions.validation.language":"The selected language is invalid.","sessions.form.select_class":"Select from the list","sessions.form.date":"Date","sessions.form.start_time":"Start time","sessions.form.start_time_help":"Optional. Without a start time, punctuality is not calculated.","sessions.form.tolerance":"Punctuality tolerance","sessions.form.inherit_activity":"Inherit {class} setting (+{minutes} min)","sessions.form.title":"Title","sessions.form.generated_language":"Generated-content language","sessions.form.inherit_activity_language":"Inherit {class} setting","sessions.form.notes":"Notes","sessions.form.create_title":"Create {session}","sessions.form.edit_title":"Edit {session}","sessions.form.create":"Create","sessions.state":"Status: {state}","sessions.notice.created":"{session} created.","sessions.notice.updated":"{session} updated.","sessions.list.empty":"No {session} is recorded yet.","sessions.list.no_search_results":"No {session} matches the search.","sessions.list.manage_description":"Schedule and manage {attendance}.","sessions.list.manage_context":"Manage “{name}”","sessions.list.attendance_description":"Open {sessions} and manage {attendance}.","sessions.list.view_session":"View {session}","sessions.list.search_label":"Search for a {session}","sessions.list.search_placeholder":"Title, {class}, or {instructor}…","sessions.list.actions_for":"Available actions for “{title}”","sessions.error.class_not_found.title":"{class} not found","sessions.error.list.title":"{sessions} unavailable","sessions.error.list.message":"Unable to load the list right now.","sessions.error.form.title":"Form unavailable","sessions.error.form.message":"Unable to load the form right now.","sessions.error.class_selection":"The selection does not match a {class}.","sessions.error.summary_recipients":"Check the automatic-summary recipients.","sessions.error.create":"Unable to create the {session} right now.","sessions.error.unavailable.title":"{session} unavailable","sessions.error.unavailable.message":"Unable to load the requested item right now.","sessions.error.update.title":"Unable to update {session}","sessions.error.verify":"Unable to verify the {session} right now.","sessions.error.update":"Unable to update the {session} right now.","attendance.arrival_unknown":"Time unknown","attendance.status_load_failed":"Unable to load the requested status.","attendance.quick.title":"Quick {attendance}","attendance.quick.close":"Close quick mode","attendance.quick.closed":"The {session} is closed. Reopen it before recording {attendance}.","attendance.quick.scheduled":"Open the {session} before recording {attendance}.","attendance.quick.count_aria":"Number of {attendance}","attendance.quick.readonly":"The {session} is closed. Quick mode is unavailable.","attendance.quick.mode_aria":"Entry mode","attendance.quick.search":"Search","attendance.quick.manual_aria":"Manual entry","attendance.quick.search_students":"Search {students}","attendance.quick.search_placeholder":"Name or code…","attendance.quick.clear_search":"Clear search","attendance.quick.complete":"All {attendance} have been recorded.","attendance.quick.scan_aria":"Scan a QR code","attendance.quick.camera_preview":"Camera preview for scanning a QR code","attendance.quick.camera_starting":"Starting camera…","attendance.quick.switch_camera":"Switch camera","attendance.quick.retry_camera":"Retry camera","attendance.quick.sound_on":"Sound on","attendance.quick.unavailable.title":"Quick mode unavailable","attendance.quick.unavailable.message":"Unable to load quick mode right now.","attendance.notice.created":"The {session} was created.","attendance.notice.updated":"The {session} was updated.","attendance.notice.attendance_updated":"The {attendance} was updated.","attendance.notice.arrival_updated":"The arrival time was updated.","attendance.notice.closed":"The {session} was closed.","attendance.notice.closed_summary_sent":"The {session} was closed and the summary was sent.","attendance.notice.closed_summary_failed":"The {session} is closed, but the summary could not be sent.","attendance.notice.summary_resent":"The {attendance} summary was resent.","attendance.notice.summary_failed":"The {attendance} summary could not be sent. Check the email configuration.","attendance.notice.summary_no_recipients":"No active recipient is configured for this summary.","attendance.notice.opened":"The {session} is open.","attendance.roster.empty_closed":"No {student} is recorded for this {session}.","attendance.roster.empty_open":"No active {student} is available in this {class}.","attendance.roster.empty_scheduled":"No active {student} is available in this {class}. The {session} has not started yet.","attendance.roster.arrival":"Arrival","attendance.roster.punctuality":"Punctuality","attendance.roster.edit_arrival":"Edit time","attendance.roster.edit_arrival_title":"Edit arrival time","attendance.roster.arrival_time":"Arrival time","attendance.roster.arrival_date_help":"The date remains the {session} date.","attendance.roster.tolerance":"Tolerance: +{minutes} min","attendance.roster.inherited_activity":"{class}","attendance.roster.quick_mode":"Quick mode","attendance.roster.resend_summary":"Resend summary","attendance.roster.close_session":"Close {session}","attendance.roster.close_confirm":"Close the {session}? Pending {students} will be marked absent.","attendance.roster.closed_manager":"The {session} is closed and read-only. Reopen it to edit its information or {attendance}.","attendance.roster.closed_operator":"The {session} is closed and read-only. A manager must reopen it before any correction.","attendance.roster.summary_aria":"{attendance} summary","attendance.roster.present_count":"{present} / {total} present","attendance.roster.present_suffix":"present","attendance.roster.live_readonly":"The {session} is closed. {attendance} are now read-only.","attendance.roster.live_error":"The update failed. Try again.","attendance.roster.search":"Search {students}","attendance.api.qr_unknown":"QR code not recognized.","attendance.api.session_not_open":"The {session} is not open.","attendance.api.ineligible":"This person cannot be recorded in this {session}.","attendance.api.present":"{name} — present","attendance.api.already_present":"{name} — already present","attendance.api.qr_failed":"Unable to process this QR code right now.","attendance.api.record_not_found":"Record not found.","attendance.api.not_allowed":"The {session} must be open and the person must be active and eligible.","attendance.api.record_failed":"Unable to record {attendance}.","attendance.api.undo_invalid":"The action to undo is invalid.","attendance.api.undo_unavailable":"This action can no longer be undone.","attendance.api.undo_stale":"This record has changed since the action. Undo was ignored.","attendance.api.undo_failed":"Unable to undo this action.","attendance.client.inherit_activity":"Inherit {class} setting","attendance.client.inherit_tolerance":"Inherit {class} setting (+{minutes} min)","attendance.client.inherit_attachment":"Inherit {class} setting ({value})","attendance.client.sound_on":"Sound on","attendance.client.sound_off":"Sound off","attendance.client.camera_stopped":"Camera stopped.","attendance.client.session_closed":"{session} closed.","attendance.client.update_unavailable":"The update is unavailable right now.","attendance.client.already_present":"{name} is already present","attendance.client.update_retry":"The update is unavailable right now. Try again.","attendance.client.undo_done":"Last action undone.","attendance.client.undo_retry":"Undo failed. Try again.","attendance.client.qr_checking":"QR code detected, checking…","attendance.client.qr_process_retry":"The QR code could not be processed. Try again.","attendance.client.scanner_unavailable":"Scanner unavailable. Switch to Manual mode.","attendance.client.camera_starting":"Starting camera…","attendance.client.present_qr":"Hold a QR code in front of the camera.","attendance.client.camera_denied":"Camera access denied. Switch to Manual mode.","attendance.client.camera_denied_short":"Camera access denied.","attendance.client.no_camera":"No camera is available. Switch to Manual mode.","attendance.client.no_camera_short":"No camera available.","attendance.client.unsupported":"Scanner unavailable in this browser. Switch to Manual mode.","attendance.client.scanner_short":"Scanner unavailable.","attendance.client.camera_failed":"The camera did not start.","attendance.client.scanner_failed":"The scanner could not start. Try again or switch to Manual mode.","attendance.client.switching_camera":"Switching camera…","attendance.client.camera_restart_failed":"The camera did not restart.","attendance.client.camera_switch_failed":"Unable to switch cameras. Try again.","attendance.error.record_not_found.title":"Record not found","attendance.error.record_not_found.message":"The requested value cannot be changed.","attendance.error.invalid_status.title":"Invalid status","attendance.error.invalid_status.message":"The requested status is invalid.","attendance.error.update.title":"Unable to update {attendance}","attendance.error.update":"Unable to update {attendance} right now.","attendance.error.invalid_time.title":"Invalid time","attendance.error.invalid_time.message":"Enter a valid local time.","attendance.error.arrival_present_only":"An arrival time can be set only for a present {student}.","attendance.error.session_must_open":"The {session} must be open.","attendance.error.arrival_update":"Unable to correct the arrival time right now.","sessions.error.close.title":"Unable to close {session}","sessions.error.close":"Unable to close the {session} right now.","sessions.error.send.title":"Unable to send","sessions.error.session_must_closed":"The {session} must be closed.","sessions.error.open.title":"Unable to open {session}","sessions.error.already_open":"The {session} is already open.","sessions.error.open":"Unable to open the {session} right now.","status.on_time":"On time","status.late":"Late","status.anonymized":"Anonymized participant","punctuality.delay":"+{minutes} min","punctuality.tolerance_option":"+{minutes} minutes","report.sheet.summary":"Summary","report.sheet.by_session":"By {session}","report.sheet.by_participant":"By {student}","report.sheet.detail":"Detail","report.sheet.attendance":"{attendance}","report.sheet.history":"History","report.column.metric":"Metric","report.column.value":"Value","report.column.report":"Report","report.column.date":"Date","report.column.start_time":"Start time","report.column.expected":"{participants} expected","report.column.present_known_arrival":"Present with known arrival","report.column.attendance_count":"Number of {attendance}","report.column.attendance_rate":"{attendance} rate","report.column.punctuality_rate":"Punctuality rate","report.column.sessions_closed":"{sessions} closed","report.column.sessions_covered":"{sessions} covered","report.column.code":"Identification code","report.column.email":"Email","report.column.status":"Status","report.column.arrival_time":"Arrival time","report.column.delay_minutes":"Difference (min)","report.column.punctuality":"Punctuality","report.value.generated_at":"Generated at","report.value.not_set":"Not set","report.value.not_applicable":"Not applicable","report.value.tolerance_minutes":"+{minutes} minutes","report.title.for_subject":"Report for {subject}","report.title.global_attendance":"Global {attendance} export","report.extra.punctuality_tolerance":"Punctuality tolerance","summary.email.subject":"{attendance} summary — {session}","summary.email.title":"{attendance} summary","summary.email.for_session":"{attendance} summary for {session}","summary.email.date":"Date: {date}","summary.email.start_time":"Start time: {time}","summary.email.participant_count":"{participants}: {count}","summary.email.present_count":"Present: {count}","summary.email.absent_count":"Absent: {count}","summary.email.on_time_count":"On time: {count}","summary.email.late_count":"Late: {count}","summary.email.punctuality_rate":"Punctuality rate: {rate}","summary.email.row":"{participant} — {status} — arrival: {arrival} — punctuality: {punctuality}","summary.email.arrival_unknown":"unknown","summary.email.attachment_prefix":"attendance-summary","summary.email.total_line":"{present} present · {absent} absent · {total} total","summary.email.punctuality_line":"{onTime} on time · {late} late · {rate}","summary.email.organization_logo":"Organization logo","summary.email.status":"Status","summary.email.arrival":"Arrival","summary.email.punctuality":"Punctuality","summary.config.title":"Automatic email summary","summary.config.class_help":"Default recipients for this {class}.","summary.config.session_help":"Additional recipients for this {session}.","summary.config.users":"Users","summary.config.no_users":"No user with an email address is available.","summary.config.external":"External email addresses","summary.config.external_placeholder":"one.address@example.com","summary.config.external_help":"One address per line. They will be used as blind-copy recipients.","summary.config.attach_xlsx":"Attach the Excel file","summary.config.inherit":"Inherit {class} setting ({value})","qr.email.subject":"Your Attendance Log QR code","qr.email.greeting":"Hello {name},","qr.email.intro":"Here is your Attendance Log QR code for recording {attendance}.","qr.email.participant":"{participant}: {name}","qr.email.code":"Identification code: {code}","qr.email.present":"Present this QR code when recording {attendance}.","qr.email.attachment":"The QR code is also attached to this email as {filename}.","qr.email.organization_logo":"Organization logo","qr.email.personal_alt":"Personal QR code for {name}","qr.email.personal_title":"Personal QR code.","qr.personal_warning":"This code is personal and must never be shared or used by someone else. Misuse may result in exclusion.","privacy.export.subject":"Personal data export","privacy.export.sheet.identity":"Identity","privacy.export.sheet.audit":"Audit","privacy.export.sheet.attendance":"{attendance}","privacy.export.sheet.fallback":"Sheet","privacy.export.column.field":"Field","privacy.export.column.value":"Value","privacy.export.field.first_name":"First name","privacy.export.field.last_name":"Last name","privacy.export.field.email":"Email","privacy.export.field.participant_code":"{student} code","privacy.export.field.communication_language":"Communication language","privacy.export.field.status":"Status","privacy.export.field.active":"Active","privacy.export.field.public_id":"Public identifier","privacy.export.field.created_at":"Created at","privacy.export.field.last_activity":"Last activity","privacy.export.field.anonymized_at":"Anonymized at","privacy.export.value.identity_removed":"Removed during anonymization","privacy.export.value.code_replaced":"Replaced during anonymization","privacy.export.value.inherit":"Inherit","privacy.export.column.membership_active":"Active {membership}","privacy.export.column.registered_at":"Registered at","privacy.export.column.arrival":"Arrival","privacy.export.column.updated_at":"Updated at","privacy.export.column.user":"User","privacy.export.column.category":"Category","privacy.export.column.action":"Action","privacy.export.column.result":"Result","privacy.export.column.summary":"Summary","privacy.export.column.changes":"Changes","privacy.export.value.system":"System","privacy.export.value.not_available":"Not available","print.calibration.title":"Test sheet — Avery {reference}","print.calibration.instructions":"Avery {reference} · Print at 100% / Actual size · Disable “Fit to page”","pwa.description":"Attendance management for a navigation school.","pwa.offline.title":"Offline","pwa.offline.heading":"Application offline","pwa.offline.requirement":"A network connection is required to view data and record attendance.","pwa.offline.retry_help":"Reconnect, then try again. No attendance change was recorded offline.","pwa.offline.retry":"Try again","application.settings_unavailable.title":"Application unavailable","application.settings_unavailable.message":"Unable to load the configuration right now.","maintenance.public.title":"Restore in progress","maintenance.public.message":"Attendance Log will be available again shortly.","language.automatic":"Automatic (browser)","language.en":"English","language.fr":"French","language.current":"Current","settings.international.title":"Language and region","settings.international.description":"Choose the business language and regional presentation used by this installation.","settings.international.default_language":"Default language","settings.international.locale":"Locale","settings.international.timezone":"Timezone","settings.international.locale_help":"The locale controls date and number formats independently from language.","settings.international.timezone_help":"IANA timezone, for example Europe/Brussels. It remains independent from the locale.","settings.international.saved":"Language and regional settings saved.","settings.international.error":"Unable to save language and regional settings.","settings.interface_language":"Interface language","settings.interface_language_help":"This changes only your interface language.","settings.admin_user.interface_language_help":"This changes only this user's interface language.","users.title":"Users","users.description":"Manage accounts, roles, and access.","users.add":"Add user","users.create.title":"Add user","users.create.description":"Create an account that will sign in with a code received by email.","users.create.submit":"Create user","users.back":"Back to users","users.login_help":"Sign-in is passwordless, using a code sent to this address.","users.edit.title":"Edit user","users.edit.page_title":"Edit {name}","users.edit.description":"Edit the user’s identity, role, or access.","users.break_glass.title":"Emergency account","users.break_glass.description":"Manage the local identity and emergency password.","users.break_glass.notice_title":"Local emergency account.","users.break_glass.notice":"It remains an active administrator and does not depend on email.","users.field.name":"Name","users.field.email":"Email address","users.field.role":"Role","users.field.username":"Local username","users.field.new_password":"New password","users.field.password_help":"Leave blank to keep the password. A change revokes all sessions for this account.","users.field.active":"Active account","users.field.view_pii":"View personal data (PII)","users.field.view_pii_help":"Allows identified data to be displayed in reports without changing the functional role.","users.table.user":"User","users.table.role":"Role","users.table.state":"Status","users.table.last_login":"Last sign-in","users.table.pii_visible":"PII: visible","users.table.pii_hidden":"PII: hidden","users.table.local_emergency":"Local emergency","users.action.change_password":"Change password","users.action.resend_invitation":"Resend invitation","users.action.revoke_sessions":"Revoke all sessions","users.action.delete_account":"Delete account","users.delete.title":"Delete user","users.delete.page_title":"Delete {name}","users.delete.description":"This action permanently deletes the account and revokes its sessions.","users.delete.help":"Deletion immediately revokes all access for this user.","users.delete.confirm":"I confirm the permanent deletion of this account.","users.delete.submit":"Delete permanently","users.notice.created_invited":"The user was created and their invitation was sent.","users.notice.created_invitation_failed":"The user was created, but the invitation could not be sent.","users.notice.invitation_sent":"The invitation was sent.","users.notice.invitation_rate_limited":"Wait before resending this invitation.","users.notice.invitation_failed":"The invitation could not be sent. Check the email configuration and application URL.","users.notice.invitation_inactive":"Reactivate this account before sending an invitation.","users.notice.updated":"The user was updated.","users.notice.revoked":"All user sessions were revoked.","users.notice.deleted":"The user was deleted.","users.error.not_found.title":"User not found","users.error.not_found.message":"This user does not exist.","users.error.unavailable.title":"User unavailable","users.error.load":"Unable to load this user right now.","users.error.list.title":"Users unavailable","users.error.list.message":"Unable to load users right now.","users.error.create":"Unable to create the user right now.","users.error.update":"Unable to update the user right now.","users.error.duplicate":"This identity is already in use.","users.error.invalid_ui_language":"The interface language is invalid.","users.error.delete_forbidden.title":"Deletion forbidden","users.error.break_glass_delete":"This account cannot be deleted.","users.error.self_delete":"You cannot delete the account currently signed in.","users.error.delete_unavailable.title":"Deletion unavailable","users.error.delete_prepare":"Unable to prepare this deletion right now.","users.error.delete_confirm":"Explicitly confirm deletion of the account.","users.error.last_admin":"The last active administrator cannot be deleted.","users.error.last_admin_change":"The last active administrator cannot be deactivated or change role.","users.error.revoke.title":"Revocation unavailable","users.error.revoke.message":"Unable to revoke sessions right now.","users.error.revoked_relogin":"Sessions were revoked. Sign in again.","users.validation.name":"The name must contain between 2 and 120 characters.","users.validation.email":"The email address is invalid.","users.validation.role":"The selected role is invalid.","users.validation.password_short":"The password must contain at least {length} characters.","users.validation.password_long":"The password is too long.","users.validation.username":"The username is invalid.","users.validation.email_exists":"An account already uses this email address.","settings.interface_language.saved":"Your interface language has been saved.","validation.invalid_settings":"Check the selected language, locale, and timezone.","validation.invalid_language":"Select a supported interface language.","settings.interface_language.error":"Unable to save your interface language.","reporting.title":"Reporting","privacy.settings.title":"Data protection"}