feat: live class sessions, CE workflow, and docs (#683)

Adds live-class session scheduling on lessons (join link, date/time,
timezone) with automatic 24h and 1h reminder emails plus a calendar
invite (.ics), a time-change notification with an updated invite, a
teacher-authored welcome email and session invite on enrollment, and a
"Notify students" quiz nudge.

LMS gets an upcoming live-sessions card and Join buttons, plus a
reusable live-session card component (3 states) in @cio/ui with a
Storybook story. The sidebar content tree now reflects sequential
progression locking like the content list, and the course-completion
confetti regression is fixed.

Org-based emails no longer reference ClassroomIO by name. Docs add
live-class, welcome-email, and course-progression guides, expand the
certificates guide (design, signatures, corrected labels), move
plan-required callouts to the top, flatten how-to-guides to the docs
root with redirects, and add screenshots. Includes an add-docs-image
skill.
This commit is contained in:
Rotimi Best
2026-06-22 05:43:48 +01:00
committed by GitHub
parent 3547901de6
commit 81294a47f9
193 changed files with 5477 additions and 805 deletions
@@ -1,7 +1,42 @@
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(relativeTime);
dayjs.extend(utc);
dayjs.extend(timezone);
/** The browser's IANA timezone (e.g. "America/New_York"), with a UTC fallback. */
export function getBrowserTimezone(): string {
try {
return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
} catch {
return 'UTC';
}
}
/**
* Convert a `datetime-local` wall-clock string (e.g. "2026-06-20T14:00") that the
* user intends in `timeZone` into an absolute UTC instant (ISO string). DST-safe.
* Never use `new Date(wallClock).toISOString()` — that assumes the browser zone.
*/
export function zonedWallClockToInstant(wallClock: string, timeZone: string): string {
if (!wallClock) return '';
return dayjs.tz(wallClock, timeZone).toISOString();
}
/**
* Inverse of {@link zonedWallClockToInstant}: render an absolute instant as a
* `datetime-local` wall-clock string in `timeZone` (so editing shows the same
* local time the user set).
*/
export function instantToZonedWallClock(iso: string | null | undefined, timeZone: string): string {
if (!iso) return '';
return dayjs(iso).tz(timeZone).format('YYYY-MM-DDTHH:mm');
}
export const calDateDiff = (date: string | number | Date): string => {
return dayjs(date).fromNow(true) + ` ago`;
@@ -5,10 +5,10 @@ import { env } from '$env/dynamic/public';
const isSelfHosted = PUBLIC_IS_SELFHOSTED === 'true';
const DEFAULT_TITLE = 'ClassroomIO | The Most Customizable Platform for Customer, Partner, and Employee Education';
const DEFAULT_TITLE = 'ClassroomIO | One Platform for Customer, Partner, and Employee Training';
const DEFAULT_DESCRIPTION =
'One platform for customer academies, partner certification, and employee training. Build courses with AI, publish under your domain, and track completions.';
const CLOUD_OG_IMAGE = 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.png';
const CLOUD_OG_IMAGE = 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg';
function resolveOgImageUrl(url: URL, orgSiteInfo: OrgSiteInfo): string {
const envUrl = env.PUBLIC_OG_IMAGE_URL?.trim();
@@ -68,7 +68,15 @@ export function getBaseMetaTags(url: URL, orgSiteInfo: OrgSiteInfo): MetaTagsPro
width: 1920,
height: 1080,
secureUrl: ogImageUrl,
type: 'image/png'
type: 'image/jpeg'
},
{
url: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.webp',
alt: `${siteName} platform for customer, partner, and employee education`,
width: 1920,
height: 1080,
secureUrl: 'https://brand.cdn.clsrio.com/og/classroomio-opengraph.webp',
type: 'image/webp'
}
]
},
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Elevprofil",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Slet",
"title": "Slet medlem",
"description": "Dette fjerner medlemmet fra din organisation og tilbagekalder deres adgang til alle tildelte kurser og programmer.",
"confirmation": "Er du sikker på, at du vil slette {name} ({email})? Denne handling kan ikke fortrydes.",
"cancel": "Annuller",
"confirm": "Slet",
"snackbar_success": "Medlem slettet"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Bølger",
"animation_dotted": "Stiplet",
"animation_none": "Ingen"
},
"course_type_learn_more": "Få flere oplysninger",
"welcome_email": {
"title": "Velkomstmail",
"description": "Tilpas den e-mail, som eleverne modtager efter tilmelding. Tilføj en personlig note, instruktioner eller et link til en livesession.",
"placeholder": "Skriv den velkomstbesked, eleverne får, når de tilmelder sig..."
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Tilføj",
"add_team": "Tilføj dine holdkammerater eller samarbejdspartnere til din organisation. Begynd at arbejde sammen",
"invite": "Inviter",
"placeholder": "e-mail kommasepareret",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Rolle",
"send_invite": "Send invitation",
"members": "Medlemmer",
@@ -1066,6 +1081,7 @@
"description": "Alle med dette link kan tilslutte sig din organisation.",
"generate": "Generer link",
"copy": "Kopiér",
"copy_invite_link": "Kopiér invitationslink",
"copied": "Kopieret!",
"toggle_label": "Linkinvitation aktiv",
"disabled_notice": "Dette link er deaktiveret. Aktiver det for at tillade nye medlemmer at deltage via link.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Fuldførelsesregel",
"settings_completion_submitted": "Indsendt - enhver indsendelse tæller",
"settings_completion_passed": "Bestået - minimumsscore kræves",
"settings_pass_threshold": "Beståelsesgrænse (%)"
"settings_pass_threshold": "Beståelsesgrænse (%)",
"notify": {
"action": "Giv eleverne besked",
"sending": "Underretter elever...",
"sent": "Meddelte {count} elever",
"failed": "Eleverne kunne ikke underrettes"
}
},
"new_exercise_modal": {
"heading": "Ny øvelse",
@@ -2046,6 +2068,41 @@
"sections": "Afsnit",
"lessons": "Lektioner",
"exercises": "Øvelser"
},
"session": {
"join": "Deltag i session",
"heading": "Live session",
"intro": "Indstil deltagelseslinket og det planlagte tidspunkt for dette livehold. Eleverne får rykker 24 timer og 1 time før.",
"link_label": "Tilmeld dig link (Zoom, Mød osv.)",
"datetime_label": "Dato og tid",
"timezone_label": "Tidszone",
"timezone_helper": "Påmindelser og kalenderinvitationer bruger denne tidszone til visning.",
"save": "Gem session",
"saved": "Session gemt",
"notified": "Eleverne får besked om den opdaterede session",
"notify_failed": "Kunne ikke give eleverne besked om ændringen",
"confirm_title": "Underrette eleverne om ændringen?",
"confirm_body": "Når du gemmer, sendes en e-mail til alle tilmeldte elever om den opdaterede session med en ny kalenderinvitation, der opdaterer begivenheden i deres kalender.",
"confirm_cancel": "Annuller",
"confirm_save": "Gem og underret",
"live_indicator": "Denne lektion er en live session",
"live_session": "Live session",
"live_now": "Live nu",
"live_event": "Live session",
"started": "Startede",
"min_ago": "min siden",
"join_now": "Deltag nu",
"copy_link": "Kopiér link",
"copy": "Kopiér",
"add_to_calendar": "Tilføj til kalender",
"add_google": "Google Kalender",
"add_outlook": "Outlook.com",
"add_office365": "Office 365",
"add_yahoo": "Yahoo kalender",
"add_apple": "Apple-kalender (.ics)",
"starts_in": "Starter i",
"session_ended": "Session afsluttet",
"link_copied": "Linket er kopieret"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Kursuskravene er fuldført!",
"subtitle": "Tillykke – du kan se og downloade dit certifikat når som helst.",
"view_certificate": "Se certifikat",
"later": "Luk"
"later": "Luk",
"checking": "Tjekker berettigelse...",
"not_eligible_title": "Næsten der",
"retake_exercise": "Gentag øvelsen"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Din bedste score på \"{exerciseTitle}\" er {bestPercent}%; {requiredPercent} % er påkrævet.",
"blocker_final_misconfigured": "Certificeringsøvelsen \"{exerciseTitle}\" har ingen point konfigureret; bed din instruktør om at ordne det.",
"email_message_label": "E-mail besked",
"email_message_placeholder": "f.eks. Vi er stolte af dine fremskridt - fortsæt med at lære!"
"email_message_placeholder": "f.eks. Vi er stolte af dine fremskridt - fortsæt med at lære!",
"final_exercise_multiple_attempts_note": "Elever får lov til ubegrænsede forsøg på den valgte øvelse."
},
"creator": {
"heading": "Hvilket kursus vil du lave?",
@@ -2440,8 +2501,10 @@
"learner": "Student",
"progress": "Fremskridt",
"pick_up_where_you_left_off": "Fortsæt hvor du slap",
"get_your_certificate": "Hent dit certifikat",
"course_awaits_you": "{title} venter på dig",
"learning_awaits_you": "Dit næste kursus venter på dig",
"my_certificate": "Mit certifikat",
"lms_today_progress": "Du er {progress} % gennem din læring - hvert skridt tæller.",
"lms_today_empty": "Din læringsvej er klar, når du er.",
"compliance_score": "Overholdelsesscore",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "logins",
"open_academy": "Åbent Akademi",
"explore_more_courses": "Udforsk flere kurser",
"view_more": "Se mere"
"view_more": "Se mere",
"upcoming_sessions_heading": "Live sessioner"
},
"schedule": {
"title": "Dit skema",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Studentenprofil",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Löschen",
"title": "Mitglied löschen",
"description": "Dadurch wird das Mitglied aus Ihrer Organisation entfernt und ihm der Zugriff auf alle zugewiesenen Kurse und Programme entzogen.",
"confirmation": "Sind Sie sicher, dass Sie {name} ({email}) löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"cancel": "Abbrechen",
"confirm": "Löschen",
"snackbar_success": "Mitglied gelöscht"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Wellen",
"animation_dotted": "Gepunktet",
"animation_none": "Keine"
},
"course_type_learn_more": "Erfahren Sie mehr",
"welcome_email": {
"title": "Willkommens-E-Mail",
"description": "Passen Sie die E-Mail an, die Studierende nach der Anmeldung erhalten. Fügen Sie eine persönliche Notiz, Anweisungen oder einen Link zur Live-Sitzung hinzu.",
"placeholder": "Schreiben Sie die Willkommensnachricht, die Studierende bei der Einschreibung erhalten …"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Hinzufügen",
"add_team": "Fügen Sie Ihre Teamkollegen oder Mitarbeiter zu Ihrer Organisation hinzu. Beginnen Sie mit der Zusammenarbeit",
"invite": "Einladen",
"placeholder": "E-Mail durch Komma getrennt",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Rolle",
"send_invite": "Einladung senden",
"members": "Mitglieder",
@@ -1066,6 +1081,7 @@
"description": "Jeder mit diesem Link kann Ihrer Organisation beitreten.",
"generate": "Link generieren",
"copy": "Kopieren",
"copy_invite_link": "Einladungslink kopieren",
"copied": "Kopiert!",
"toggle_label": "Linkeinladung aktiv",
"disabled_notice": "Dieser Link ist deaktiviert. Aktivieren Sie es, um neuen Mitgliedern den Beitritt über einen Link zu ermöglichen.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Abschlussregel",
"settings_completion_submitted": "Eingereicht – jede Einreichung zählt",
"settings_completion_passed": "Bestanden – Mindestpunktzahl erforderlich",
"settings_pass_threshold": "Bestehensschwelle (%)"
"settings_pass_threshold": "Bestehensschwelle (%)",
"notify": {
"action": "Benachrichtigen Sie die Schüler",
"sending": "Studierende benachrichtigen…",
"sent": "{count} Studenten benachrichtigt",
"failed": "Die Schüler konnten nicht benachrichtigt werden"
}
},
"new_exercise_modal": {
"heading": "Neue Übung",
@@ -2046,6 +2068,41 @@
"sections": "Abschnitte",
"lessons": "Lektionen",
"exercises": "Übungen"
},
"session": {
"join": "Nehmen Sie an der Sitzung teil",
"heading": "Live-Sitzung",
"intro": "Legen Sie den Beitrittslink und die geplante Zeit für diesen Live-Kurs fest. Schüler erhalten 24 Stunden und 1 Stunde vorher Erinnerungen.",
"link_label": "Beitrittslink (Zoom, Meet usw.)",
"datetime_label": "Datum und Uhrzeit",
"timezone_label": "Zeitzone",
"timezone_helper": "Erinnerungen und die Kalendereinladung verwenden diese Zeitzone zur Anzeige.",
"save": "Sitzung speichern",
"saved": "Sitzung gespeichert",
"notified": "Studierende werden über die aktualisierte Sitzung informiert",
"notify_failed": "Die Schüler konnten nicht über die Änderung informiert werden",
"confirm_title": "Studierende über die Änderung informieren?",
"confirm_body": "Durch das Speichern werden alle eingeschriebenen Schüler per E-Mail über die aktualisierte Sitzung informiert, zusammen mit einer neuen Kalendereinladung, die das Ereignis in ihrem Kalender aktualisiert.",
"confirm_cancel": "Abbrechen",
"confirm_save": "Speichern und benachrichtigen",
"live_indicator": "Diese Lektion ist eine Live-Sitzung",
"live_session": "Live-Sitzung",
"live_now": "Jetzt live",
"live_event": "Live-Sitzung",
"started": "Begonnen",
"min_ago": "vor einer Minute",
"join_now": "Jetzt teilnehmen",
"copy_link": "Link kopieren",
"copy": "Kopieren",
"add_to_calendar": "Zum Kalender hinzufügen",
"add_google": "Google Kalender",
"add_outlook": "Outlook.com",
"add_office365": "Büro 365",
"add_yahoo": "Yahoo-Kalender",
"add_apple": "Apple Kalender (.ics)",
"starts_in": "Beginnt in",
"session_ended": "Sitzung beendet",
"link_copied": "Link kopiert"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Kursvoraussetzungen erfüllt!",
"subtitle": "Herzlichen Glückwunsch – Sie können Ihr Zertifikat jederzeit einsehen und herunterladen.",
"view_certificate": "Zertifikat ansehen",
"later": "Schließen"
"later": "Schließen",
"checking": "Berechtigung prüfen…",
"not_eligible_title": "Fast da",
"retake_exercise": "Wiederholen Sie die Übung"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Ihre beste Punktzahl bei „{exerciseTitle}“ beträgt {bestPercent} %; {requiredPercent}% ist erforderlich.",
"blocker_final_misconfigured": "Für die Zertifizierungsübung „{exerciseTitle}“ sind keine Punkte konfiguriert; Bitten Sie Ihren Lehrer, das Problem zu beheben.",
"email_message_label": "E-Mail-Nachricht",
"email_message_placeholder": "z.B. Wir sind stolz auf Ihre Fortschritte – lernen Sie weiter!"
"email_message_placeholder": "z.B. Wir sind stolz auf Ihre Fortschritte – lernen Sie weiter!",
"final_exercise_multiple_attempts_note": "Den Schülern sind unbegrenzte Versuche für die ausgewählte Übung gestattet."
},
"creator": {
"heading": "Welchen Kurs möchten Sie erstellen?",
@@ -2440,8 +2501,10 @@
"learner": "Student",
"progress": "Fortschritt",
"pick_up_where_you_left_off": "Machen Sie dort weiter, wo Sie aufgehört haben",
"get_your_certificate": "Hole dir dein Zertifikat",
"course_awaits_you": "{title} erwartet Sie",
"learning_awaits_you": "Ihr nächster Kurs erwartet Sie",
"my_certificate": "Mein Zertifikat",
"lms_today_progress": "Ihr Lernfortschritt beträgt {progress} % – jeder Schritt zählt.",
"lms_today_empty": "Ihr Lernpfad ist fertig, wenn Sie es sind.",
"compliance_score": "Compliance-Score",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "Anmeldungen",
"open_academy": "Offene Akademie",
"explore_more_courses": "Entdecken Sie weitere Kurse",
"view_more": "Mehr anzeigen"
"view_more": "Mehr anzeigen",
"upcoming_sessions_heading": "Live-Sitzungen"
},
"schedule": {
"title": "Ihr Zeitplan",
@@ -290,7 +290,8 @@
"common": {
"unsaved_changes": {
"message": "You have unsaved changes. Are you sure you want to leave?"
}
},
"refresh": "Refresh"
},
"compliance": {
"title": "Compliance",
@@ -1665,9 +1666,12 @@
"progress": "Progress",
"continue": "Continue",
"continue_learning": "Continue Learning",
"upcoming_sessions_heading": "Live Sessions",
"pick_up_where_you_left_off": "Pick up where you left off",
"get_your_certificate": "Get your certificate",
"course_awaits_you": "{title} awaits you",
"learning_awaits_you": "Your next course awaits you",
"my_certificate": "My Certificate",
"lms_today_progress": "You're {progress}% through your learning - every step counts.",
"lms_today_empty": "Your learning path is ready when you are.",
"compliance_score": "Compliance Score",
@@ -2116,6 +2120,7 @@
"final_exercise_label": "Final exercise (optional)",
"final_exercise_none": "none",
"final_exercise_helper": "When set, students must reach at least the minimum score on this exercise (best attempt counts) in addition to the completion percentage above.",
"final_exercise_multiple_attempts_note": "Students will be allowed unlimited attempts on the selected exercise.",
"min_exercise_score_label": "Minimum score on final exercise (%)",
"min_exercise_score_helper": "Score is a percentage of the total points possible on that exercise (0–100).",
"blocker_progress": "Your course progress is {current}%; {required}% is required.",
@@ -2133,7 +2138,10 @@
"title": "Course requirements complete!",
"subtitle": "Congratulations — you can view and download your certificate anytime.",
"view_certificate": "View certificate",
"later": "Close"
"later": "Close",
"checking": "Checking eligibility…",
"not_eligible_title": "Almost there",
"retake_exercise": "Retake exercise"
}
},
"header": {
@@ -2233,6 +2241,41 @@
"seek_blocked": "You cannot skip ahead on this video",
"complete_via_watch": "This lesson completes when you watch enough of the video"
},
"session": {
"join": "Join session",
"live_indicator": "This lesson is a live session",
"heading": "Live session",
"intro": "Set the join link and scheduled time for this live class. Students get reminders 24 hours and 1 hour before.",
"link_label": "Join link (Zoom, Meet, etc.)",
"datetime_label": "Date and time",
"timezone_label": "Timezone",
"timezone_helper": "Reminders and the calendar invite use this timezone for display.",
"save": "Save session",
"saved": "Session saved",
"notified": "Students notified of the updated session",
"notify_failed": "Couldn't notify students of the change",
"confirm_title": "Notify students of the change?",
"confirm_body": "Saving will email all enrolled students about the updated session, with a new calendar invite that updates the event on their calendar.",
"confirm_cancel": "Cancel",
"confirm_save": "Save and notify",
"live_session": "Live session",
"live_now": "Live now",
"live_event": "Live Session",
"started": "Started",
"min_ago": "min ago",
"join_now": "Join now",
"copy_link": "Copy link",
"copy": "Copy",
"add_to_calendar": "Add to calendar",
"add_google": "Google Calendar",
"add_outlook": "Outlook.com",
"add_office365": "Office 365",
"add_yahoo": "Yahoo Calendar",
"add_apple": "Apple Calendar (.ics)",
"starts_in": "Starts in",
"session_ended": "Session ended",
"link_copied": "Link copied"
},
"share_your_knowledge": "Share your knowledge with the world by creating engaging lessons. Start by clicking on the Add button.",
"section_prompt": {
"cta": "Enable Sections",
@@ -2504,6 +2547,12 @@
},
"all_exercises": {
"heading": "All Exercise",
"notify": {
"action": "Notify students",
"sending": "Notifying students…",
"sent": "Notified {count} students",
"failed": "Couldn't notify students"
},
"questions": "Questions",
"settings": "Settings",
"settings_allow_multiple": "Allow multiple attempts",
@@ -3260,7 +3309,7 @@
"add": "Add",
"add_team": "Add your team mates or collaborators to your organization. Start working together",
"invite": "Invite",
"placeholder": "email comma separated",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Role",
"send_invite": "Send Invite",
"members": "Members",
@@ -3272,6 +3321,7 @@
"description": "Anyone with this link can join your organization.",
"generate": "Generate Link",
"copy": "Copy",
"copy_invite_link": "Copy invite link",
"copied": "Copied!",
"toggle_label": "Link invite active",
"disabled_notice": "This link is disabled. Enable it to allow new members to join via link.",
@@ -3532,6 +3582,11 @@
"enabled": "Enabled",
"order": "Order Lessons Tab",
"drag": "Drag and drop the labels to re-order your material tabs",
"welcome_email": {
"title": "Welcome email",
"description": "Customize the email students receive after they enroll. Add a personal note, instructions, or a live session link.",
"placeholder": "Write the welcome message students get when they enroll…"
},
"content_grouping_title": "Content grouping",
"content_grouping_description": "Group lessons and exercises by section in the content list.",
"progression_mode_title": "Student progression",
@@ -3550,7 +3605,8 @@
"published": "Published",
"unpublished": "Unpublished",
"type": "Course type",
"course_type_desc": "Update the course type for a more personalized experience",
"course_type_desc": "Update the course type for a more personalized experience.",
"course_type_learn_more": "Learn more",
"live_class": "Live class",
"self_paced": "Self paced",
"compliance": "Compliance",
@@ -3658,6 +3714,15 @@
"select_all": "Select all",
"selected_count": "{count} selected",
"assign_courses": "Assign to Courses",
"delete": {
"action": "Delete",
"title": "Delete member",
"description": "This removes the member from your organization and revokes their access to all assigned courses and programs.",
"confirmation": "Are you sure you want to delete {name} ({email})? This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete",
"snackbar_success": "Member deleted"
},
"user_analytics": {
"title": "Student profile",
"page_subtitle": "Progress, grades, and activity across their courses."
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Perfil de estudiante",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Eliminar",
"title": "Eliminar miembro",
"description": "Esto elimina al miembro de su organización y revoca su acceso a todos los cursos y programas asignados.",
"confirmation": "¿Está seguro de que desea eliminar {name} ({email})? Esta acción no se puede deshacer.",
"cancel": "Cancelar",
"confirm": "Eliminar",
"snackbar_success": "Miembro eliminado"
}
},
"community": {
@@ -803,7 +812,13 @@
"animation_waves": "Olas",
"animation_dotted": "punteado",
"animation_none": "Ninguno"
}
},
"welcome_email": {
"title": "Correo electrónico de bienvenida",
"description": "Personalice el correo electrónico que reciben los estudiantes después de inscribirse. Agregue una nota personal, instrucciones o un enlace de sesión en vivo.",
"placeholder": "Escribe el mensaje de bienvenida que reciben los estudiantes cuando se matriculan..."
},
"course_type_learn_more": "Más información"
},
"analytics": {
"title": "Analítica"
@@ -1054,7 +1069,7 @@
"add": "Añadir",
"add_team": "Agregue a sus compañeros de equipo o colaboradores a su organización. Empezar a trabajar juntos",
"invite": "invitar",
"placeholder": "correo electrónico separado por comas",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Rol",
"send_invite": "Enviar invitación",
"members": "Miembros",
@@ -1066,6 +1081,7 @@
"description": "Cualquiera que tenga este enlace puede unirse a su organización.",
"generate": "Generar enlace",
"copy": "Copiar",
"copy_invite_link": "Copiar enlace de invitación",
"copied": "¡Copiado!",
"toggle_label": "Invitación de enlace activa",
"disabled_notice": "Este enlace está deshabilitado. Habilítelo para permitir que nuevos miembros se unan a través de un enlace.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Regla de finalización",
"settings_completion_submitted": "Enviado: cualquier envío cuenta",
"settings_completion_passed": "Aprobado: puntuación mínima requerida",
"settings_pass_threshold": "Umbral de aprobación (%)"
"settings_pass_threshold": "Umbral de aprobación (%)",
"notify": {
"action": "Notificar a los estudiantes",
"sending": "Notificar a los estudiantes...",
"sent": "{count} estudiantes notificados",
"failed": "No se pudo notificar a los estudiantes"
}
},
"new_exercise_modal": {
"heading": "Nuevo ejercicio",
@@ -2046,6 +2068,41 @@
"sections": "Secciones",
"lessons": "Lecciones",
"exercises": "Ejercicios"
},
"session": {
"join": "Unirse a la sesión",
"heading": "Sesión en vivo",
"intro": "Configure el enlace para unirse y la hora programada para esta clase en vivo. Los estudiantes reciben recordatorios 24 horas y 1 hora antes.",
"link_label": "Enlace para unirse (Zoom, Meet, etc.)",
"datetime_label": "Fecha y hora",
"timezone_label": "Zona horaria",
"timezone_helper": "Los recordatorios y la invitación del calendario utilizan esta zona horaria para mostrarse.",
"save": "Guardar sesión",
"saved": "Sesión guardada",
"notified": "Estudiantes notificados de la sesión actualizada.",
"notify_failed": "No se pudo notificar a los estudiantes sobre el cambio.",
"confirm_title": "¿Notificar a los estudiantes sobre el cambio?",
"confirm_body": "Al guardar, se enviará un correo electrónico a todos los estudiantes inscritos sobre la sesión actualizada, con una nueva invitación de calendario que actualiza el evento en su calendario.",
"confirm_cancel": "Cancelar",
"confirm_save": "Guardar y notificar",
"live_indicator": "Esta lección es una sesión en vivo.",
"live_session": "Sesión en vivo",
"live_now": "En vivo ahora",
"live_event": "Sesión en vivo",
"started": "iniciado",
"min_ago": "Hace minutos",
"join_now": "Únete ahora",
"copy_link": "Copiar enlace",
"copy": "Copiar",
"add_to_calendar": "Añadir al calendario",
"add_google": "Calendario de Google",
"add_outlook": "Outlook.com",
"add_office365": "Oficina 365",
"add_yahoo": "Calendario de Yahoo",
"add_apple": "Calendario de Apple (.ics)",
"starts_in": "Comienza en",
"session_ended": "Sesión finalizada",
"link_copied": "Enlace copiado"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "¡Requisitos del curso completos!",
"subtitle": "Felicitaciones, puede ver y descargar su certificado en cualquier momento.",
"view_certificate": "Ver certificado",
"later": "Cerrar"
"later": "Cerrar",
"checking": "Comprobando la elegibilidad...",
"not_eligible_title": "Casi allí",
"retake_exercise": "Rehacer ejercicio"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Su mejor puntuación en \"{exerciseTitle}\" es {bestPercent}%; {requiredPercent}% es obligatorio.",
"blocker_final_misconfigured": "El ejercicio de certificación \"{exerciseTitle}\" no tiene puntos configurados; Pídele a tu instructor que lo arregle.",
"email_message_label": "Mensaje de correo electrónico",
"email_message_placeholder": "por ej. Estamos orgullosos de tu progreso: ¡sigue aprendiendo!"
"email_message_placeholder": "por ej. Estamos orgullosos de tu progreso: ¡sigue aprendiendo!",
"final_exercise_multiple_attempts_note": "A los estudiantes se les permitirán intentos ilimitados en el ejercicio seleccionado."
},
"creator": {
"heading": "¿Qué curso quieres crear?",
@@ -2440,8 +2501,10 @@
"learner": "estudiante",
"progress": "Progreso",
"pick_up_where_you_left_off": "Continua donde lo dejaste",
"get_your_certificate": "Obtén tu certificado",
"course_awaits_you": "{title} te espera",
"learning_awaits_you": "Tu próximo curso te espera",
"my_certificate": "Mi certificado",
"lms_today_progress": "Estás {progress}% en tu aprendizaje: cada paso cuenta.",
"lms_today_empty": "Tu camino de aprendizaje estará listo cuando tú lo estés.",
"compliance_score": "Puntuación de cumplimiento",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "inicios de sesión",
"open_academy": "Academia Abierta",
"explore_more_courses": "Explora más cursos",
"view_more": "Ver más"
"view_more": "Ver más",
"upcoming_sessions_heading": "Sesiones en vivo"
},
"schedule": {
"title": "Tu horario",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Profil étudiant",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Supprimer",
"title": "Supprimer un membre",
"description": "Cela supprime le membre de votre organisation et révoque son accès à tous les cours et programmes attribués.",
"confirmation": "Êtes-vous sûr de vouloir supprimer {name} ({email}) ? Cette action ne peut pas être annulée.",
"cancel": "Annuler",
"confirm": "Supprimer",
"snackbar_success": "Membre supprimé"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Vagues",
"animation_dotted": "Pointillé",
"animation_none": "Aucun"
},
"course_type_learn_more": "En savoir plus",
"welcome_email": {
"title": "E-mail de bienvenue",
"description": "Personnalisez l'e-mail que les étudiants reçoivent après leur inscription. Ajoutez une note personnelle, des instructions ou un lien de session en direct.",
"placeholder": "Rédigez le message de bienvenue que les étudiants reçoivent lors de leur inscription…"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Ajouter",
"add_team": "Ajoutez vos coéquipiers ou collaborateurs à votre organisation. Commencez à travailler ensemble",
"invite": "Inviter",
"placeholder": "email séparé par des virgules",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Rôle",
"send_invite": "Envoyer une invitation",
"members": "Membres",
@@ -1066,6 +1081,7 @@
"description": "Toute personne disposant de ce lien peut rejoindre votre organisation.",
"generate": "Générer un lien",
"copy": "Copier",
"copy_invite_link": "Copier le lien d'invitation",
"copied": "Copié!",
"toggle_label": "Invitation de lien active",
"disabled_notice": "Ce lien est désactivé. Activez-le pour permettre aux nouveaux membres de rejoindre via un lien.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Règle d'achèvement",
"settings_completion_submitted": "Soumis – toute soumission compte",
"settings_completion_passed": "Réussi – note minimale requise",
"settings_pass_threshold": "Seuil de réussite (%)"
"settings_pass_threshold": "Seuil de réussite (%)",
"notify": {
"action": "Avertir les étudiants",
"sending": "Informer les étudiants…",
"sent": "{count} étudiants notifiés",
"failed": "Impossible d'avertir les étudiants"
}
},
"new_exercise_modal": {
"heading": "Nouvel exercice",
@@ -2046,6 +2068,41 @@
"sections": "Sections",
"lessons": "Leçons",
"exercises": "Exercices"
},
"session": {
"join": "Rejoindre la session",
"heading": "Séance en direct",
"intro": "Définissez le lien de participation et l’heure prévue pour ce cours en direct. Les étudiants reçoivent des rappels 24 heures et 1 heure avant.",
"link_label": "Lien de participation (Zoom, Meet, etc.)",
"datetime_label": "Date et heure",
"timezone_label": "Fuseau horaire",
"timezone_helper": "Les rappels et l'invitation du calendrier utilisent ce fuseau horaire pour l'affichage.",
"save": "Enregistrer la session",
"saved": "Séance enregistrée",
"notified": "Étudiants informés de la session mise à jour",
"notify_failed": "Impossible d'informer les étudiants du changement",
"confirm_title": "Informer les étudiants du changement ?",
"confirm_body": "L'enregistrement enverra un e-mail à tous les étudiants inscrits concernant la session mise à jour, avec une nouvelle invitation de calendrier qui met à jour l'événement sur leur calendrier.",
"confirm_cancel": "Annuler",
"confirm_save": "Enregistrer et notifier",
"live_indicator": "Cette leçon est une session en direct",
"live_session": "Séance en direct",
"live_now": "En direct maintenant",
"live_event": "Séance en direct",
"started": "Commencé",
"min_ago": "il y a min",
"join_now": "Rejoindre maintenant",
"copy_link": "Copier le lien",
"copy": "Copier",
"add_to_calendar": "Ajouter au calendrier",
"add_google": "Google Agenda",
"add_outlook": "Outlook.com",
"add_office365": "Bureau 365",
"add_yahoo": "Calendrier Yahoo",
"add_apple": "Calendrier Apple (.ics)",
"starts_in": "Commence dans",
"session_ended": "Séance terminée",
"link_copied": "Lien copié"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Exigences du cours terminées !",
"subtitle": "Félicitations : vous pouvez consulter et télécharger votre certificat à tout moment.",
"view_certificate": "Afficher le certificat",
"later": "Fermer"
"later": "Fermer",
"checking": "Vérification de l’éligibilité…",
"not_eligible_title": "Presque là",
"retake_exercise": "Reprendre l'exercice"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Votre meilleur score sur \"{exerciseTitle}\" est de {bestPercent} % ; {requiredPercent} % est requis.",
"blocker_final_misconfigured": "L'exercice de certification « {exerciseTitle} » n'a aucun point configuré ; demandez à votre instructeur de le réparer.",
"email_message_label": "Message électronique",
"email_message_placeholder": "par ex. Nous sommes fiers de vos progrès – continuez à apprendre !"
"email_message_placeholder": "par ex. Nous sommes fiers de vos progrès – continuez à apprendre !",
"final_exercise_multiple_attempts_note": "Les étudiants auront droit à des tentatives illimitées sur l'exercice sélectionné."
},
"creator": {
"heading": "Quel cours souhaitez-vous créer ?",
@@ -2440,8 +2501,10 @@
"learner": "Étudiant",
"progress": "Progrès",
"pick_up_where_you_left_off": "Reprenez là où vous vous étiez arrêté",
"get_your_certificate": "Obtenez votre certificat",
"course_awaits_you": "{title} vous attend",
"learning_awaits_you": "Votre prochain cours vous attend",
"my_certificate": "Mon certificat",
"lms_today_progress": "Vous avez progressé de {progress} % dans votre apprentissage : chaque étape compte.",
"lms_today_empty": "Votre parcours d’apprentissage est prêt quand vous l’êtes.",
"compliance_score": "Score de conformité",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "connexions",
"open_academy": "Académie ouverte",
"explore_more_courses": "Explorez plus de cours",
"view_more": "Voir plus"
"view_more": "Voir plus",
"upcoming_sessions_heading": "Séances en direct"
},
"schedule": {
"title": "Votre emploi du temps",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "छात्र प्रोफ़ाइल",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "हटाएँ",
"title": "सदस्य हटाएँ",
"description": "यह सदस्य को आपके संगठन से हटा देता है और सभी निर्दिष्ट पाठ्यक्रमों और कार्यक्रमों तक उनकी पहुंच रद्द कर देता है।",
"confirmation": "क्या आप वाकई {name} ({email}) को हटाना चाहते हैं? इस एक्शन को वापस नहीं किया जा सकता।",
"cancel": "रद्द करें",
"confirm": "हटाएँ",
"snackbar_success": "सदस्य हटा दिया गया"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "लहरें",
"animation_dotted": "बिंदीदार",
"animation_none": "कोई नहीं"
},
"course_type_learn_more": "और जानें",
"welcome_email": {
"title": "आपका स्वागत है ईमेल",
"description": "नामांकन के बाद छात्रों को प्राप्त होने वाले ईमेल को अनुकूलित करें। एक व्यक्तिगत नोट, निर्देश, या एक लाइव सत्र लिंक जोड़ें।",
"placeholder": "नामांकन के समय विद्यार्थियों को मिलने वाला स्वागत संदेश लिखें..."
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "जोड़ें",
"add_team": "अपने टीम के साथियों या सहयोगियों को अपने संगठन में जोड़ें। एक साथ काम करना शुरू करें",
"invite": "आमंत्रित करें",
"placeholder": "ईमेल अल्पविराम से अलग किया गया",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "भूमिका",
"send_invite": "आमंत्रण भेजें",
"members": "सदस्य",
@@ -1066,6 +1081,7 @@
"description": "इस लिंक वाला कोई भी व्यक्ति आपके संगठन में शामिल हो सकता है।",
"generate": "लिंक जनरेट करें",
"copy": "प्रतिलिपि",
"copy_invite_link": "आमंत्रण लिंक कॉपी करें",
"copied": "नकल की गई!",
"toggle_label": "लिंक आमंत्रण सक्रिय",
"disabled_notice": "यह लिंक अक्षम है. नए सदस्यों को लिंक के माध्यम से जुड़ने की अनुमति देने के लिए इसे सक्षम करें।",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "समापन नियम",
"settings_completion_submitted": "सबमिट किया गया - कोई भी सबमिशन मायने रखता है",
"settings_completion_passed": "उत्तीर्ण - न्यूनतम अंक आवश्यक",
"settings_pass_threshold": "पास सीमा (%)"
"settings_pass_threshold": "पास सीमा (%)",
"notify": {
"action": "छात्रों को सूचित करें",
"sending": "छात्रों को सूचित किया जा रहा है...",
"sent": "{count} छात्रों को सूचित किया गया",
"failed": "छात्रों को सूचित नहीं किया जा सका"
}
},
"new_exercise_modal": {
"heading": "नया व्यायाम",
@@ -2046,6 +2068,41 @@
"sections": "अनुभाग",
"lessons": "सबक",
"exercises": "व्यायाम"
},
"session": {
"join": "सत्र में शामिल हों",
"heading": "लाइव सत्र",
"intro": "इस लाइव क्लास के लिए जॉइन लिंक और निर्धारित समय निर्धारित करें। छात्रों को 24 घंटे और 1 घंटे पहले रिमाइंडर मिलते हैं।",
"link_label": "लिंक से जुड़ें (ज़ूम, मीट, आदि)",
"datetime_label": "दिनांक और समय",
"timezone_label": "समयक्षेत्र",
"timezone_helper": "अनुस्मारक और कैलेंडर आमंत्रण प्रदर्शन के लिए इस समयक्षेत्र का उपयोग करते हैं।",
"save": "सत्र सहेजें",
"saved": "सत्र सहेजा गया",
"notified": "छात्रों को अद्यतन सत्र की सूचना दी गई",
"notify_failed": "छात्रों को परिवर्तन के बारे में सूचित नहीं किया जा सका",
"confirm_title": "परिवर्तन के बारे में छात्रों को सूचित करें?",
"confirm_body": "सेविंग सभी नामांकित छात्रों को अद्यतन सत्र के बारे में एक नए कैलेंडर आमंत्रण के साथ ईमेल करेगी जो उनके कैलेंडर पर ईवेंट को अपडेट करता है।",
"confirm_cancel": "रद्द करें",
"confirm_save": "सहेजें और सूचित करें",
"live_indicator": "यह पाठ एक लाइव सत्र है",
"live_session": "लाइव सत्र",
"live_now": "अभी लाइव",
"live_event": "लाइव सत्र",
"started": "शुरू हुआ",
"min_ago": "मिनट पहले",
"join_now": "अभी शामिल हों",
"copy_link": "लिंक कॉपी करें",
"copy": "प्रतिलिपि",
"add_to_calendar": "कैलेंडर में जोड़ें",
"add_google": "गूगल कैलेंडर",
"add_outlook": "आउटलुक.कॉम",
"add_office365": "कार्यालय 365",
"add_yahoo": "याहू कैलेंडर",
"add_apple": "एप्पल कैलेंडर (.ics)",
"starts_in": "में शुरू होता है",
"session_ended": "सत्र ख़त्म हुआ",
"link_copied": "लिंक कॉपी किया गया"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "पाठ्यक्रम की आवश्यकताएँ पूर्ण!",
"subtitle": "बधाई हो - आप अपना प्रमाणपत्र कभी भी देख और डाउनलोड कर सकते हैं।",
"view_certificate": "प्रमाणपत्र देखें",
"later": "बंद करें"
"later": "बंद करें",
"checking": "पात्रता की जाँच की जा रही है...",
"not_eligible_title": "लगभग वहाँ",
"retake_exercise": "पुनः व्यायाम करें"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "\"{exerciseTitle}\" पर आपका सर्वोत्तम स्कोर {bestPercent}% है; {requiredPercent}% आवश्यक है.",
"blocker_final_misconfigured": "प्रमाणन अभ्यास \"{exerciseTitle}\" में कोई बिंदु कॉन्फ़िगर नहीं किया गया है; अपने प्रशिक्षक से इसे ठीक करने के लिए कहें।",
"email_message_label": "ईमेल संदेश",
"email_message_placeholder": "जैसे हमें आपकी प्रगति पर गर्व है - सीखते रहें!"
"email_message_placeholder": "जैसे हमें आपकी प्रगति पर गर्व है - सीखते रहें!",
"final_exercise_multiple_attempts_note": "छात्रों को चयनित अभ्यास पर असीमित प्रयासों की अनुमति दी जाएगी।"
},
"creator": {
"heading": "आप कौन सा कोर्स बनाना चाहते हैं?",
@@ -2440,8 +2501,10 @@
"learner": "छात्र",
"progress": "प्रगति",
"pick_up_where_you_left_off": "वहीं से शुरू करें जहां आपने छोड़ा था",
"get_your_certificate": "अपना प्रमाणपत्र प्राप्त करें",
"course_awaits_you": "{title} आपकी प्रतीक्षा कर रहा है",
"learning_awaits_you": "आपका अगला कोर्स आपका इंतजार कर रहा है",
"my_certificate": "मेरा प्रमाणपत्र",
"lms_today_progress": "आप अपने सीखने के माध्यम से {progress}% कर रहे हैं - हर कदम मायने रखता है।",
"lms_today_empty": "जब आप हों तो आपका सीखने का मार्ग तैयार है।",
"compliance_score": "अनुपालन स्कोर",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "लॉगिन",
"open_academy": "अकादमी खोलें",
"explore_more_courses": "अधिक पाठ्यक्रम खोजें",
"view_more": "और देखें"
"view_more": "और देखें",
"upcoming_sessions_heading": "लाइव सत्र"
},
"schedule": {
"title": "आपका शेड्यूल",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Profil studenta",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Usuń",
"title": "Usuń członka",
"description": "Spowoduje to usunięcie członka z Twojej organizacji i odebranie mu dostępu do wszystkich przypisanych kursów i programów.",
"confirmation": "Czy na pewno chcesz usunąć {name} ({email})? Tej akcji nie można cofnąć.",
"cancel": "Anuluj",
"confirm": "Usuń",
"snackbar_success": "Członek usunięty"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Fale",
"animation_dotted": "Przerywana",
"animation_none": "Żadne"
},
"course_type_learn_more": "Dowiedz się więcej",
"welcome_email": {
"title": "Witamy e-mail",
"description": "Dostosuj wiadomość e-mail otrzymywaną przez uczniów po zarejestrowaniu się. Dodaj osobistą notatkę, instrukcje lub link do sesji na żywo.",
"placeholder": "Napisz wiadomość powitalną, jaką otrzymają uczniowie po zarejestrowaniu się…"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Dodaj",
"add_team": "Dodaj członków zespołu lub współpracowników do swojej organizacji. Zacznijcie współpracować",
"invite": "Zaproś",
"placeholder": "e-mail oddzielony przecinkami",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Rola",
"send_invite": "Wyślij zaproszenie",
"members": "Członkowie",
@@ -1066,6 +1081,7 @@
"description": "Każda osoba mająca ten link może dołączyć do Twojej organizacji.",
"generate": "Wygeneruj łącze",
"copy": "Kopiuj",
"copy_invite_link": "Skopiuj link zaproszenia",
"copied": "Skopiowano!",
"toggle_label": "Zaproszenie do linku aktywne",
"disabled_notice": "To łącze jest wyłączone. Włącz tę opcję, aby umożliwić nowym członkom dołączanie za pośrednictwem łącza.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Zasada uzupełnienia",
"settings_completion_submitted": "Przesłane — liczy się każde przesłanie",
"settings_completion_passed": "Zaliczony — wymagany minimalny wynik",
"settings_pass_threshold": "Próg zaliczenia (%)"
"settings_pass_threshold": "Próg zaliczenia (%)",
"notify": {
"action": "Powiadom uczniów",
"sending": "Powiadamianie uczniów…",
"sent": "Powiadomiono {count} uczniów",
"failed": "Nie udało się powiadomić uczniów"
}
},
"new_exercise_modal": {
"heading": "Nowe ćwiczenie",
@@ -2046,6 +2068,41 @@
"sections": "Sekcje",
"lessons": "Lekcje",
"exercises": "Ćwiczenia"
},
"session": {
"join": "Dołącz do sesji",
"heading": "Sesja na żywo",
"intro": "Ustaw link dołączenia i zaplanowany czas dla tych zajęć na żywo. Uczniowie otrzymują przypomnienia 24 godziny i 1 godzinę wcześniej.",
"link_label": "Dołącz link (Zoom, Meet itp.)",
"datetime_label": "Data i godzina",
"timezone_label": "Strefa czasowa",
"timezone_helper": "Przypomnienia i zaproszenia z kalendarza korzystają z tej strefy czasowej do wyświetlania.",
"save": "Zapisz sesję",
"saved": "Sesja zapisana",
"notified": "Studenci zostali powiadomieni o zaktualizowanej sesji",
"notify_failed": "Nie udało się powiadomić uczniów o zmianie",
"confirm_title": "Powiadomić uczniów o zmianie?",
"confirm_body": "Po zapisaniu do wszystkich zapisanych uczniów zostanie wysłana wiadomość e-mail z informacją o zaktualizowanej sesji oraz nowym zaproszeniem do kalendarza, które zaktualizuje wydarzenie w ich kalendarzu.",
"confirm_cancel": "Anuluj",
"confirm_save": "Zapisz i powiadom",
"live_indicator": "Ta lekcja to sesja na żywo",
"live_session": "Sesja na żywo",
"live_now": "Na żywo teraz",
"live_event": "Sesja na żywo",
"started": "Rozpoczęło się",
"min_ago": "minutę temu",
"join_now": "Dołącz teraz",
"copy_link": "Skopiuj link",
"copy": "Kopiuj",
"add_to_calendar": "Dodaj do kalendarza",
"add_google": "Kalendarz Google",
"add_outlook": "Outlook.com",
"add_office365": "Biuro 365",
"add_yahoo": "Kalendarz Yahoo",
"add_apple": "Kalendarz Apple (.ics)",
"starts_in": "Zaczyna się w",
"session_ended": "Sesja zakończona",
"link_copied": "Link skopiowany"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Wymagania dotyczące kursu zostały spełnione!",
"subtitle": "Gratulacje — możesz wyświetlić i pobrać swój certyfikat w dowolnym momencie.",
"view_certificate": "Zobacz certyfikat",
"later": "Zamknij"
"later": "Zamknij",
"checking": "Sprawdzam uprawnienia…",
"not_eligible_title": "Prawie tam",
"retake_exercise": "Powtórz ćwiczenie"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Twój najlepszy wynik w „{exerciseTitle}” to {bestPercent}%; Wymagany jest {requiredPercent}%.",
"blocker_final_misconfigured": "W ćwiczeniu certyfikacyjnym „{exerciseTitle}” nie skonfigurowano żadnych punktów; poproś instruktora, żeby to naprawił.",
"email_message_label": "Wiadomość e-mail",
"email_message_placeholder": "np. Jesteśmy dumni z Twoich postępów — ucz się dalej!"
"email_message_placeholder": "np. Jesteśmy dumni z Twoich postępów — ucz się dalej!",
"final_exercise_multiple_attempts_note": "Studenci będą mieli nieograniczoną liczbę prób wykonania wybranego ćwiczenia."
},
"creator": {
"heading": "Jaki kurs chcesz stworzyć?",
@@ -2440,8 +2501,10 @@
"learner": "Studenta",
"progress": "Postęp",
"pick_up_where_you_left_off": "Rozpocznij od miejsca, w którym skończyłeś",
"get_your_certificate": "Odbierz swój certyfikat",
"course_awaits_you": "{title} czeka na Ciebie",
"learning_awaits_you": "Kolejny kurs już na Ciebie czeka",
"my_certificate": "Mój certyfikat",
"lms_today_progress": "Twój postęp w nauce wynosi {progress}% – każdy krok się liczy.",
"lms_today_empty": "Twoja ścieżka edukacyjna jest gotowa, gdy Ty jesteś.",
"compliance_score": "Wynik zgodności",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "logowania",
"open_academy": "Otwarta Akademia",
"explore_more_courses": "Przeglądaj więcej kursów",
"view_more": "Zobacz więcej"
"view_more": "Zobacz więcej",
"upcoming_sessions_heading": "Sesje na żywo"
},
"schedule": {
"title": "Twój harmonogram",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Perfil do aluno",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Excluir",
"title": "Excluir membro",
"description": "Isso remove o membro da sua organização e revoga seu acesso a todos os cursos e programas atribuídos.",
"confirmation": "Tem certeza de que deseja excluir {name} ({email})? Esta ação não pode ser desfeita.",
"cancel": "Cancelar",
"confirm": "Excluir",
"snackbar_success": "Membro excluído"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Ondas",
"animation_dotted": "Pontilhado",
"animation_none": "Nenhum"
},
"course_type_learn_more": "Saiba mais",
"welcome_email": {
"title": "E-mail de boas-vindas",
"description": "Personalize o e-mail que os alunos recebem após a inscrição. Adicione uma nota pessoal, instruções ou um link de sessão ao vivo.",
"placeholder": "Escreva a mensagem de boas-vindas que os alunos recebem quando se matriculam…"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Adicionar",
"add_team": "Adicione seus companheiros de equipe ou colaboradores à sua organização. Comece a trabalhar juntos",
"invite": "Convidar",
"placeholder": "e-mail separado por vírgula",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Função",
"send_invite": "Enviar convite",
"members": "Membros",
@@ -1066,6 +1081,7 @@
"description": "Qualquer pessoa com este link pode ingressar na sua organização.",
"generate": "Gerar link",
"copy": "Copiar",
"copy_invite_link": "Copiar link de convite",
"copied": "Copiado!",
"toggle_label": "Link de convite ativo",
"disabled_notice": "Este link está desativado. Habilite-o para permitir que novos membros participem via link.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Regra de conclusão",
"settings_completion_submitted": "Enviado – qualquer envio conta",
"settings_completion_passed": "Aprovado – pontuação mínima exigida",
"settings_pass_threshold": "Limite de aprovação (%)"
"settings_pass_threshold": "Limite de aprovação (%)",
"notify": {
"action": "Notificar os alunos",
"sending": "Notificando os alunos…",
"sent": "{count} alunos notificados",
"failed": "Não foi possível notificar os alunos"
}
},
"new_exercise_modal": {
"heading": "Novo exercício",
@@ -2046,6 +2068,41 @@
"sections": "Seções",
"lessons": "Lições",
"exercises": "Exercícios"
},
"session": {
"join": "Entrar na sessão",
"heading": "Sessão ao vivo",
"intro": "Defina o link de participação e o horário agendado para esta aula ao vivo. Os alunos recebem lembretes 24 horas e 1 hora antes.",
"link_label": "Link de adesão (Zoom, Meet, etc.)",
"datetime_label": "Data e hora",
"timezone_label": "Fuso horário",
"timezone_helper": "Os lembretes e o convite do calendário usam esse fuso horário para exibição.",
"save": "Salvar sessão",
"saved": "Sessão salva",
"notified": "Alunos notificados sobre a sessão atualizada",
"notify_failed": "Não foi possível notificar os alunos sobre a mudança",
"confirm_title": "Notificar os alunos sobre a mudança?",
"confirm_body": "Salvar enviará um e-mail a todos os alunos inscritos sobre a sessão atualizada, com um novo convite de calendário que atualiza o evento em seus calendários.",
"confirm_cancel": "Cancelar",
"confirm_save": "Salvar e notificar",
"live_indicator": "Esta lição é uma sessão ao vivo",
"live_session": "Sessão ao vivo",
"live_now": "Ao vivo agora",
"live_event": "Sessão ao vivo",
"started": "Iniciado",
"min_ago": "minutos atrás",
"join_now": "Entrar agora",
"copy_link": "Copiar link",
"copy": "Copiar",
"add_to_calendar": "Adicionar ao calendário",
"add_google": "Google Agenda",
"add_outlook": "Outlook.com",
"add_office365": "Escritório 365",
"add_yahoo": "Calendário do Yahoo",
"add_apple": "Calendário Apple (.ics)",
"starts_in": "Começa em",
"session_ended": "Sessão encerrada",
"link_copied": "Link copiado"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Requisitos do curso concluídos!",
"subtitle": "Parabéns – você pode visualizar e baixar seu certificado a qualquer momento.",
"view_certificate": "Ver certificado",
"later": "Fechar"
"later": "Fechar",
"checking": "Verificando elegibilidade…",
"not_eligible_title": "Quase lá",
"retake_exercise": "Refazer o exercício"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Sua melhor pontuação em \"{exerciseTitle}\" é {bestPercent}%; {requiredPercent}% é obrigatório.",
"blocker_final_misconfigured": "O exercício de certificação \"{exerciseTitle}\" não possui pontos configurados; peça ao seu instrutor para consertar.",
"email_message_label": "Mensagem de e-mail",
"email_message_placeholder": "por exemplo Estamos orgulhosos do seu progresso – continue aprendendo!"
"email_message_placeholder": "por exemplo Estamos orgulhosos do seu progresso – continue aprendendo!",
"final_exercise_multiple_attempts_note": "Os alunos terão permissão para tentativas ilimitadas no exercício selecionado."
},
"creator": {
"heading": "Qual curso você deseja criar?",
@@ -2440,8 +2501,10 @@
"learner": "Estudante",
"progress": "Progresso",
"pick_up_where_you_left_off": "Continue de onde parou",
"get_your_certificate": "Obtenha seu certificado",
"course_awaits_you": "{title} espera por você",
"learning_awaits_you": "Seu próximo curso espera por você",
"my_certificate": "Meu certificado",
"lms_today_progress": "Você está {progress}% em seu aprendizado - cada etapa conta.",
"lms_today_empty": "Seu caminho de aprendizagem estará pronto quando você estiver.",
"compliance_score": "Pontuação de Conformidade",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "logins",
"open_academy": "Academia Aberta",
"explore_more_courses": "Explorar mais cursos",
"view_more": "Ver mais"
"view_more": "Ver mais",
"upcoming_sessions_heading": "Sessões ao vivo"
},
"schedule": {
"title": "Sua programação",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Профиль студента",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Удалить",
"title": "Удалить участника",
"description": "Это приведет к удалению участника из вашей организации и аннулированию его доступа ко всем назначенным курсам и программам.",
"confirmation": "Вы уверены, что хотите удалить {name} ({email})? Это действие невозможно отменить.",
"cancel": "Отмена",
"confirm": "Удалить",
"snackbar_success": "Участник удален"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Волны",
"animation_dotted": "Пунктирный",
"animation_none": "Нет"
},
"course_type_learn_more": "Узнать больше",
"welcome_email": {
"title": "Приветственное письмо",
"description": "Настройте электронное письмо, которое студенты получат после регистрации. Добавьте личную заметку, инструкции или ссылку на сеанс в реальном времени.",
"placeholder": "Напишите приветственное сообщение, которое студенты получат при зачислении…"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Добавить",
"add_team": "Добавьте своих товарищей по команде или сотрудников в свою организацию. Начните работать вместе",
"invite": "Пригласить",
"placeholder": "электронная почта, разделенная запятой",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Роль",
"send_invite": "Отправить приглашение",
"members": "Члены",
@@ -1066,6 +1081,7 @@
"description": "Любой, у кого есть эта ссылка, может присоединиться к вашей организации.",
"generate": "Создать ссылку",
"copy": "Копировать",
"copy_invite_link": "Скопировать ссылку приглашения",
"copied": "Скопировано!",
"toggle_label": "Приглашение по ссылке активно",
"disabled_notice": "Эта ссылка отключена. Включите его, чтобы позволить новым участникам присоединяться по ссылке.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Правило завершения",
"settings_completion_submitted": "Отправлено — любая отправка засчитывается",
"settings_completion_passed": "Пройдено — требуется минимальный балл",
"settings_pass_threshold": "Порог прохождения (%)"
"settings_pass_threshold": "Порог прохождения (%)",
"notify": {
"action": "Уведомить студентов",
"sending": "Уведомление учащихся…",
"sent": "Уведомлено учащихся: {count}",
"failed": "Не удалось уведомить студентов"
}
},
"new_exercise_modal": {
"heading": "Новое упражнение",
@@ -2046,6 +2068,41 @@
"sections": "Разделы",
"lessons": "Уроки",
"exercises": "Упражнения"
},
"session": {
"join": "Присоединиться к сеансу",
"heading": "Живая сессия",
"intro": "Установите ссылку для присоединения и запланированное время для этого живого урока. Студенты получают напоминания за 24 часа и за 1 час.",
"link_label": "Ссылка для присоединения (Zoom, Meet и т. д.)",
"datetime_label": "Дата и время",
"timezone_label": "Часовой пояс",
"timezone_helper": "Напоминания и приглашения в календаре используют этот часовой пояс для отображения.",
"save": "Сохранить сеанс",
"saved": "Сеанс сохранен.",
"notified": "Студенты уведомлены об обновленной сессии",
"notify_failed": "Не удалось уведомить учащихся об изменении.",
"confirm_title": "Уведомить студентов об изменении?",
"confirm_body": "При сохранении всем зачисленным учащимся будет отправлено электронное письмо об обновленном сеансе с новым приглашением в календаре, которое обновит событие в их календаре.",
"confirm_cancel": "Отмена",
"confirm_save": "Сохранить и уведомить",
"live_indicator": "Этот урок представляет собой живое занятие",
"live_session": "Живая сессия",
"live_now": "В прямом эфире",
"live_event": "Живая сессия",
"started": "Началось",
"min_ago": "минуту назад",
"join_now": "Присоединяйтесь сейчас",
"copy_link": "Скопировать ссылку",
"copy": "Копировать",
"add_to_calendar": "Добавить в календарь",
"add_google": "Google Календарь",
"add_outlook": "Outlook.com",
"add_office365": "Офис 365",
"add_yahoo": "Yahoo-календарь",
"add_apple": "Календарь Apple (.ics)",
"starts_in": "Начинается через",
"session_ended": "Сессия завершена",
"link_copied": "Ссылка скопирована"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Требования курса выполнены!",
"subtitle": "Поздравляем — вы можете просмотреть и скачать свой сертификат в любое время.",
"view_certificate": "Посмотреть сертификат",
"later": "Закрыть"
"later": "Закрыть",
"checking": "Проверка пригодности…",
"not_eligible_title": "Почти там",
"retake_exercise": "Пересдать упражнение"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Ваш лучший результат в «{exerciseTitle}» — {bestPercent}%; Требуется {requiredPercent}%.",
"blocker_final_misconfigured": "Для сертификационного упражнения «{exerciseTitle}» не настроены баллы; попросите инструктора это исправить.",
"email_message_label": "Сообщение электронной почты",
"email_message_placeholder": "например Мы гордимся вашим прогрессом — продолжайте учиться!"
"email_message_placeholder": "например Мы гордимся вашим прогрессом — продолжайте учиться!",
"final_exercise_multiple_attempts_note": "Студентам будет разрешено неограниченное количество попыток выполнения выбранного упражнения."
},
"creator": {
"heading": "Какой курс вы хотите создать?",
@@ -2440,8 +2501,10 @@
"learner": "Студент",
"progress": "Прогресс",
"pick_up_where_you_left_off": "Продолжайте с того места, где вы остановились",
"get_your_certificate": "Получите свой сертификат",
"course_awaits_you": "{title} ждет вас",
"learning_awaits_you": "Следующий курс ждет вас",
"my_certificate": "Мой сертификат",
"lms_today_progress": "Ваш прогресс в обучении – {progress} %. Каждый шаг имеет значение.",
"lms_today_empty": "Ваш путь обучения готов, когда вы будете готовы.",
"compliance_score": "Оценка соответствия",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "логины",
"open_academy": "Открытая Академия",
"explore_more_courses": "Ознакомьтесь с другими курсами",
"view_more": "Посмотреть больше"
"view_more": "Посмотреть больше",
"upcoming_sessions_heading": "Живые сессии"
},
"schedule": {
"title": "Ваше расписание",
@@ -677,6 +677,15 @@
"user_analytics": {
"title": "Hồ sơ sinh viên",
"page_subtitle": "Progress, grades, and activity across their courses."
},
"delete": {
"action": "Xóa",
"title": "Xóa thành viên",
"description": "Thao tác này sẽ xóa thành viên khỏi tổ chức của bạn và thu hồi quyền truy cập của họ vào tất cả các khóa học và chương trình được chỉ định.",
"confirmation": "Bạn có chắc chắn muốn xóa {name} ({email}) không? Không thể hoàn tác hành động này.",
"cancel": "Hủy bỏ",
"confirm": "Xóa",
"snackbar_success": "Thành viên đã bị xóa"
}
},
"community": {
@@ -803,6 +812,12 @@
"animation_waves": "Sóng",
"animation_dotted": "Chấm",
"animation_none": "không có"
},
"course_type_learn_more": "Tìm hiểu thêm",
"welcome_email": {
"title": "Email chào mừng",
"description": "Tùy chỉnh email sinh viên nhận được sau khi đăng ký. Thêm ghi chú cá nhân, hướng dẫn hoặc liên kết phiên trực tiếp.",
"placeholder": "Viết lời chào mừng mà học viên nhận được khi đăng ký…"
}
},
"analytics": {
@@ -1054,7 +1069,7 @@
"add": "Thêm",
"add_team": "Thêm đồng đội hoặc cộng tác viên vào tổ chức của bạn. Bắt đầu làm việc cùng nhau",
"invite": "Mời",
"placeholder": "email được phân tách bằng dấu phẩy",
"placeholder": "user1@domain.com, user2@domain.com",
"role": "Vai trò",
"send_invite": "Gửi lời mời",
"members": "Thành viên",
@@ -1066,6 +1081,7 @@
"description": "Bất kỳ ai có liên kết này đều có thể tham gia tổ chức của bạn.",
"generate": "Tạo liên kết",
"copy": "Sao chép",
"copy_invite_link": "Sao chép liên kết mời",
"copied": "Đã sao chép!",
"toggle_label": "Liên kết lời mời đang hoạt động",
"disabled_notice": "Liên kết này bị vô hiệu hóa. Kích hoạt nó để cho phép thành viên mới tham gia thông qua liên kết.",
@@ -1775,7 +1791,13 @@
"settings_completion_policy": "Quy tắc hoàn thành",
"settings_completion_submitted": "Đã gửi - mọi lần gửi đều được tính",
"settings_completion_passed": "Đạt - yêu cầu điểm tối thiểu",
"settings_pass_threshold": "Ngưỡng vượt qua (%)"
"settings_pass_threshold": "Ngưỡng vượt qua (%)",
"notify": {
"action": "Thông báo cho sinh viên",
"sending": "Thông báo cho học sinh…",
"sent": "Đã thông báo cho {count} sinh viên",
"failed": "Không thể thông báo cho sinh viên"
}
},
"new_exercise_modal": {
"heading": "Bài tập mới",
@@ -2046,6 +2068,41 @@
"sections": "Phần",
"lessons": "Bài học",
"exercises": "Bài tập"
},
"session": {
"join": "Tham gia phiên",
"heading": "Phiên trực tiếp",
"intro": "Đặt liên kết tham gia và thời gian dự kiến cho lớp học trực tiếp này. Học sinh nhận được lời nhắc 24 giờ và 1 giờ trước.",
"link_label": "Liên kết tham gia (Zoom, Meet, v.v.)",
"datetime_label": "Ngày và giờ",
"timezone_label": "Múi giờ",
"timezone_helper": "Lời nhắc và lời mời lịch sử dụng múi giờ này để hiển thị.",
"save": "Lưu phiên",
"saved": "Đã lưu phiên",
"notified": "Sinh viên được thông báo về phiên cập nhật",
"notify_failed": "Không thể thông báo cho sinh viên về sự thay đổi",
"confirm_title": "Thông báo cho sinh viên về sự thay đổi?",
"confirm_body": "Việc lưu sẽ gửi email cho tất cả sinh viên đã đăng ký về phiên cập nhật, kèm theo lời mời lịch mới cập nhật sự kiện trên lịch của họ.",
"confirm_cancel": "Hủy bỏ",
"confirm_save": "Lưu và thông báo",
"live_indicator": "Bài học này là một buổi học trực tiếp",
"live_session": "Phiên trực tiếp",
"live_now": "Đang trực tiếp",
"live_event": "Phiên trực tiếp",
"started": "Đã bắt đầu",
"min_ago": "phút trước",
"join_now": "Tham gia ngay bây giờ",
"copy_link": "Sao chép liên kết",
"copy": "Sao chép",
"add_to_calendar": "Thêm vào lịch",
"add_google": "Lịch Google",
"add_outlook": "Outlook.com",
"add_office365": "Văn phòng 365",
"add_yahoo": "Lịch Yahoo",
"add_apple": "Lịch Apple (.ics)",
"starts_in": "Bắt đầu vào",
"session_ended": "Phiên kết thúc",
"link_copied": "Đã sao chép liên kết"
}
},
"news_feed": {
@@ -2211,7 +2268,10 @@
"title": "Yêu cầu khóa học đã hoàn tất!",
"subtitle": "Xin chúc mừng — bạn có thể xem và tải xuống chứng chỉ của mình bất kỳ lúc nào.",
"view_certificate": "Xem chứng chỉ",
"later": "Đóng"
"later": "Đóng",
"checking": "Đang kiểm tra tính đủ điều kiện…",
"not_eligible_title": "Gần như ở đó",
"retake_exercise": "Làm lại bài tập"
}
},
"certificates": {
@@ -2236,7 +2296,8 @@
"blocker_final_score": "Điểm cao nhất của bạn trong \"{exerciseTitle}\" là {bestPercent}%; {requiredPercent}% là bắt buộc.",
"blocker_final_misconfigured": "Bài tập chứng nhận \"{exerciseTitle}\" không có cấu hình điểm nào; nhờ người hướng dẫn khắc phục.",
"email_message_label": "Tin nhắn email",
"email_message_placeholder": "ví dụ: Chúng tôi tự hào về sự tiến bộ của bạn - hãy tiếp tục học hỏi!"
"email_message_placeholder": "ví dụ: Chúng tôi tự hào về sự tiến bộ của bạn - hãy tiếp tục học hỏi!",
"final_exercise_multiple_attempts_note": "Học sinh sẽ được phép thử không giới hạn bài tập đã chọn."
},
"creator": {
"heading": "Bạn muốn tạo khóa học nào?",
@@ -2440,8 +2501,10 @@
"learner": "sinh viên",
"progress": "Tiến độ",
"pick_up_where_you_left_off": "Tiếp tục nơi bạn đã dừng lại",
"get_your_certificate": "Nhận chứng chỉ của bạn",
"course_awaits_you": "{title} đang chờ bạn",
"learning_awaits_you": "Khóa học tiếp theo đang chờ bạn",
"my_certificate": "Chứng chỉ của tôi",
"lms_today_progress": "Bạn đã đạt được {progress}% trong quá trình học tập - mỗi bước đều có giá trị.",
"lms_today_empty": "Con đường học tập của bạn đã sẵn sàng khi bạn sẵn sàng.",
"compliance_score": "Điểm tuân thủ",
@@ -2459,7 +2522,8 @@
"login_activity_logins": "thông tin đăng nhập",
"open_academy": "Học viện mở",
"explore_more_courses": "Khám phá thêm các khóa học",
"view_more": "Xem thêm"
"view_more": "Xem thêm",
"upcoming_sessions_heading": "Phiên trực tiếp"
},
"schedule": {
"title": "Lịch trình của bạn",