chore: ai, public course and other ui improvements

This commit is contained in:
Rotimi Best
2026-05-09 06:05:03 +01:00
parent 5717dd8004
commit c31ad63955
318 changed files with 20668 additions and 4788 deletions
+206 -11
View File
@@ -63,7 +63,32 @@
"self_paced_label": "Self Paced",
"self_paced_subtitle": "Best for courses where students can take lessons at their own pace",
"compliance_label": "Compliance",
"compliance_subtitle": "Recurring training with retakes, reminders, and renewal tracking"
"compliance_subtitle": "Recurring training with retakes, reminders, and renewal tracking",
"public_label": "Public",
"public_subtitle": "Free, no-signup course pages you can share publicly — great for lead gen"
},
"public_course": {
"header": {
"explore_courses": "Explore courses",
"sign_in": "Sign in"
},
"footer_nav": {
"previous": "Previous",
"next": "Next"
},
"powered_by": {
"label": "Powered by",
"brand": "ClassroomIO"
},
"exercise": {
"submit": "Check my answers",
"try_again": "Try again",
"practice_again": "Practice again",
"attempt_option": "Attempt {attemptNumber} - {correct}/{total}",
"attempts_select_aria": "Your attempts",
"privacy_hint": "Graded instantly in your browser — nothing is submitted.",
"summary_template": "You got [[correct]] / [[total]] correct."
}
},
"onboarding": {
"sell": "Sell courses online",
@@ -181,6 +206,7 @@
"organization_tab": "Organization",
"landing_page_tab": "Landing Page",
"billing_tab": "Billing",
"ai_credits_tab": "AI Credits",
"integrations_tab": "Integrations",
"language_tab": "Language",
"auth_tab": "Authentication",
@@ -579,10 +605,46 @@
"active": "You don't have any active billing",
"provider": "We use Polar to help manage your billing",
"open_billing": "Open billing",
"error": "An error occurred while opening billing",
"ai_credits": "AI Assistant Usage",
"ai_tokens_used": "tokens used this month",
"ai_bonus_credits": "bonus credits available"
"error": "An error occurred while opening billing"
},
"ai_credits": {
"sub_title": "AI credits",
"page_subtitle": "Track AI assistant usage, team consumption, and purchase token packs.",
"cost_note": "Credit usage is weighted by model cost. Gemini 2.5 Flash and GPT-5.4 Mini count as 1 credit unit per token. Claude Sonnet 4.6 counts as 36× per token, reflecting its higher API cost.",
"included": {
"title": "Your included usage",
"subtitle": "Monthly tokens included with your plan.",
"resets_on": "Resets {date}"
},
"purchased": {
"title": "Purchased usage",
"subtitle": "Extra tokens you bought roll over until used.",
"lifetime": "{tokens} tokens purchased · ${dollars} spent",
"buy_more": "Buy more"
},
"chart": {
"heading": "Usage",
"subheading": "Daily token consumption this month.",
"tokens": "Tokens",
"total_tokens": "Total tokens",
"total_requests": "Total requests",
"empty": "No usage recorded this month yet."
},
"leaderboard": {
"title": "Team usage",
"this_month": "Current month",
"user": "User",
"favorite_model": "Favorite model",
"tokens": "Tokens",
"empty": "Nobody on your team has used the AI assistant this month."
},
"buy_tokens": {
"title": "Buy more tokens",
"description": "Each pack adds 5,000,000 credits for $5 USD. Choose how many packs you need.",
"quantity_hint": "packs",
"preview": "{quantity} pack(s) · {tokens} tokens · ${dollars}",
"buy_button": "Buy for ${dollars}"
}
}
},
"media_manager": {
@@ -1416,7 +1478,8 @@
"share": "Share",
"invite": "Invite",
"delete": "Delete",
"open_course_site": "Open course site"
"open_public_course": "Open public course",
"copy_course_url": "Copy course URL"
},
"error_message": "An error occurred.",
"lessons_number": "lessons",
@@ -1426,6 +1489,8 @@
"unpublished": "Unpublished",
"continue_course": "Continue",
"learn_more": "Learn more",
"public_badge": "Public",
"actions_menu_aria": "Course actions",
"due_date": "Due",
"valid_until": "Valid until",
"tags_overflow_aria": "{count} more tags",
@@ -1464,6 +1529,26 @@
}
},
"course": {
"creator": {
"heading": "What course do you want to create?",
"placeholder": "Ask ClassroomIO to create a course for you...",
"drafting": {
"heading": "Drafting your course idea",
"subtext": "We're turning your prompt into a course title and workspace.",
"step_reading": "Reading your prompt",
"step_naming": "Naming your course",
"step_building": "Creating your workspace"
},
"level": {
"beginner": "Beginner",
"intermediate": "Intermediate",
"advanced": "Advanced"
},
"type": {
"self_paced": "Self Paced",
"live_class": "Live Class"
}
},
"navItems": {
"nav_news_feed": "News Feed",
"nav_content": "Content",
@@ -1528,7 +1613,8 @@
},
"header": {
"preview": "Preview course",
"preview_missing_slug": "Generate and save a course slug before previewing."
"preview_missing_slug": "Generate and save a course slug before previewing.",
"public_course_helper": "Visible on your public course site"
},
"navItem": {
"news_feed": {
@@ -1575,6 +1661,11 @@
"lessons": {
"heading": "Lessons",
"heading_v2": "Content",
"stats": {
"sections": "Sections",
"lessons": "Lessons",
"exercises": "Exercises"
},
"drag": "drag a card to reorder",
"no_lesson": "No lessons yet",
"content_locked_title": "This content is locked",
@@ -1604,6 +1695,7 @@
"save": "Save",
"edit": "Edit",
"delete": "Delete",
"delete_tooltip": "Delete this lesson",
"cancel": "Cancel"
},
"add_content": "Add content",
@@ -1812,8 +1904,11 @@
"submissions": "Submissions",
"save": "Save",
"preview": "Preview",
"add": "Add",
"add_question": "Add a question",
"add_section": "Add section",
"reorder": "Reorder Questions",
"reorder_done": "Done reordering",
"delete_exercise": "Delete Exercise",
"order_questions": "Order questions",
"write_your_answer": "Write your answer",
@@ -1848,9 +1943,27 @@
"delete_confirmation": {
"title": "Delete question",
"sure": "Are you sure you want to delete this question",
"section_title": "Delete section",
"section_sure": "This section will be deleted. Its questions will be moved to the nearest section.",
"no": "No, please don't",
"yes": "Yes, delete"
},
"section": {
"fallback_title": "Section",
"questions": "questions",
"short_questions": "q",
"required": "required",
"add_question": "Add question",
"delete": "Delete section",
"move_up": "Move section up",
"move_down": "Move section down",
"color": "Section color",
"description_placeholder": "Describe this section",
"after_section": "After section",
"continue": "Continue to next section",
"go_to_section": "Go to section",
"submit": "Submit exercise"
},
"edit_mode": {
"delete_modal": "Delete Exercise",
"sure": "Are you sure you want to delete this exercise?",
@@ -1879,7 +1992,8 @@
"hotspot": "Hotspot",
"link": "Links",
"word_bank": "Word bank",
"star": "Star rating"
"star": "Star rating",
"video_recording": "Video recording"
}
},
"view_mode": {
@@ -1908,7 +2022,10 @@
"status_graded": "Status: Review Completed",
"status_submitted": "Status: Submitted",
"checking_submission": "Checking your submission...",
"instructor_feedback": "Instructor feedback"
"instructor_feedback": "Instructor feedback",
"back": "Back",
"begin_section": "Start section",
"complete_section": "Complete section"
},
"analytics": {
"summary": {
@@ -2107,6 +2224,51 @@
"max_size_label": "Max size (MB)"
}
},
"video_recording": {
"edit": {
"max_duration_label": "Max duration",
"max_duration_helper": "Students record in the browser and can retake before submitting. Maximum is 2 minutes.",
"max_duration_placeholder": "60",
"manual_grading": "Requires manual grading"
},
"take": {
"unsupported": "Video recording is not supported in this browser.",
"permission_prompt": "Allow camera and microphone access to record your answer.",
"permission_denied": "Camera or microphone access was blocked. Check browser permissions.",
"start_camera": "Set up camera",
"camera_label": "Camera",
"camera_placeholder": "Select camera",
"play_preview": "Play recording preview",
"pause_preview": "Pause recording preview",
"start_recording": "Start recording",
"stop_recording": "Stop recording",
"elapsed": "Elapsed",
"remaining": "Remaining",
"max_duration": "Max",
"too_short": "Record for at least 1 second.",
"use_recording": "Use recording",
"retake": "Retake",
"delete": "Delete recording",
"retry_upload": "Retry upload",
"uploading": "Uploading recording...",
"uploaded": "Recording uploaded",
"upload_failed": "Upload failed. Try again.",
"replaces_previous": "A new accepted take replaces the previous answer after upload."
},
"preview": {
"max_duration_label": "Max duration",
"manual_grading": "Learners record a short video response. Manual grading required."
},
"submission": {
"no_video": "No video submitted.",
"unavailable": "Video unavailable.",
"duration": "Duration",
"file_size": "File size",
"recorded_at": "Recorded",
"uploaded_at": "Uploaded",
"retake_count": "Retakes"
}
},
"link": {
"edit": {
"instructions_placeholder": "Optional instructions for learners",
@@ -2686,6 +2848,29 @@
"live_class": "Live class",
"self_paced": "Self paced",
"compliance": "Compliance",
"public": "Public",
"convert_to_public_blocked": "This course has questions that can’t be auto-graded, so it can’t be made Public yet.",
"fix_blocking_questions": "Fix blocking questions",
"callout": {
"legend": "Public course callout",
"description": "Shown at the bottom of each lesson and in place of locked items. Use it to drive learners to your site or a paid course.",
"title_label": "Title",
"title_placeholder": "Want to go deeper on this?",
"description_label": "Description",
"description_placeholder": "Join the full cohort to ship a production-grade project in 4 weeks.",
"button_label": "Button label",
"button_label_placeholder": "Read more on my site",
"button_url_label": "Button URL",
"button_url_placeholder": "https://example.com",
"clear": "Clear callout",
"public_only": "Callouts only appear on Public courses."
},
"slug": {
"label": "URL slug",
"description": "The last segment of this item’s public URL. Only letters, numbers, and dashes.",
"public_only": "Slugs are only editable on Public courses.",
"in_use": "That slug is already used by another item in this course."
},
"tags": {
"title": "Tags",
"description": "Assign tags so learners can discover this course with filters.",
@@ -3027,6 +3212,14 @@
"activated": "Token auth enabled.",
"deactivated": "Token auth disabled."
},
"ai_credits": {
"purchase_success": "Token pack added to your balance.",
"checkout_failed": "Could not start checkout. Please try again."
},
"public_course": {
"url_copied": "Course URL copied",
"url_copy_failed": "Could not copy URL"
},
"something": "Something went wrong - Please try later",
"update": "Update",
"update_failed": "Update failed",
@@ -3423,7 +3616,8 @@
"input_placeholder": "Ask the AI assistant...",
"attach_document": "Attach a document (PDF, DOCX, PPTX)",
"upgrade_to_upload": "Upgrade to upload documents",
"tokens_exhausted": "Monthly AI token limit reached. Buy more credits in Settings > Billing or wait for reset.",
"tokens_exhausted": "Monthly AI token limit reached.",
"tokens_exhausted_buy_more": "Buy more",
"chat_history": "Chat History",
"no_conversations": "No conversations yet",
"untitled": "Untitled",
@@ -3436,6 +3630,7 @@
"mention_exercise": "Exercise",
"mention_section": "Section",
"mention_no_results": "No matching content",
"uploading_document": "Uploading document..."
"uploading_document": "Uploading document...",
"agent_running_warning": "The changes will appear in the course once the agent is done. Don't reload the page."
}
}