Files
brainwave/frontend/src/i18n/en.json
T
LaurensBartelds e906951b06
Test / backend (push) Successful in 13s
Test / frontend (push) Failing after 19s
feat: add new question types and components for fill-in-the-blanks, true/false, code submission, dropdown completion, numeric range, dictation, grammar correction, and flashcards
- Updated QuestionRenderer to support new question types.
- Added FillInTheBlanks, TrueFalse, CodeSubmission, DropdownCompletion, NumericRange, Dictation, GrammarCorrection, and Flashcard components.
- Enhanced grading logic to handle new question types.
- Updated translations for new question types in English and Dutch.
- Added CSS styles for new components and question types.
- Extended Question and related types to accommodate new configurations and answers.
2026-05-02 19:25:28 +02:00

515 lines
20 KiB
JSON

{
"common": {
"appName": "BrainWave",
"appTagline": "practice exam platform",
"cancel": "Cancel",
"confirm": "Confirm",
"close": "Close",
"save": "Save",
"delete": "Delete",
"edit": "Edit",
"back": "Back",
"backToHome": "Back to home",
"loading": "Loading…",
"error": "Error",
"success": "Success",
"yes": "Yes",
"no": "No",
"pts": "pts",
"pt": "pt",
"questions": "questions",
"question": "question"
},
"landing": {
"eyebrow": "BrainWave · practice exam platform",
"title": "Upload an exam. ",
"titleEmphasis": "Practice anything.",
"subtitle": "Drop in a JSON file to run a practice exam — math with full LaTeX, language translation, multiple choice, matching, ordering, essays, and more. Progress saves automatically.",
"dropzoneTitle": "Drop your exam JSON here",
"dropzoneSub": "or click to browse · max 5 MB",
"downloadInstructions": "Download Instructions — How to create your own exam JSON",
"downloadInstructionsIcon": "↓",
"supportedTypes": "Supported types",
"supportedTypesList": "multiple-choice · multiple-select · short-answer · translation · math-input (LaTeX) · essay · match · order · fill-in-the-blanks · true-false · code-submission · dropdown-completion · numeric-range",
"trySample": "Try a sample",
"resumeTitle": "Resume in-progress exam",
"resumeProgress": "{{answered}}/{{total}} answered",
"resumeButton": "Resume →",
"pastAttempts": "Past attempts",
"clearHistory": "Clear history",
"dateTimeFormat": "{{date}} · {{correct}}/{{graded}} correct",
"review": "Review",
"retake": "Retake",
"loadError": "Could not load: {{message}}",
"loadSampleError": "Could not load sample: {{message}}",
"clearHistoryConfirm": "Clear all past attempts?"
},
"auth": {
"signIn": "Sign In",
"signOut": "Sign Out",
"register": "Register",
"welcomeBack": "Welcome back",
"createAccount": "Create account",
"signInSubtitle": "Sign in to access your saved exams and results",
"registerSubtitle": "Create an account to save your progress",
"email": "Email",
"password": "Password",
"confirmPassword": "Confirm Password",
"displayName": "Display Name",
"forgotPassword": "Forgot your password?",
"signingIn": "Signing in…",
"creatingAccount": "Creating account…",
"loginFailed": "Login failed",
"registrationFailed": "Registration failed",
"passwordsDoNotMatch": "Passwords do not match",
"myWorkspace": "My Workspace",
"adminDashboard": "Admin Dashboard",
"userMenu": "User menu",
"resetPassword": "Reset Password",
"resetPasswordDesc": "Enter your email address and we'll send you a link to reset your password.",
"checkYourEmail": "Check Your Email",
"setNewPassword": "Set New Password",
"enterNewPassword": "Enter your new password below.",
"newPassword": "New Password",
"resetting": "Resetting…",
"passwordUpdated": "Password Updated",
"passwordUpdatedDesc": "Your password has been reset successfully. You can now sign in with your new password.",
"requestFailed": "Request failed",
"passwordResetFailed": "Password reset failed",
"sendResetLink": "Send Reset Link",
"sending": "Sending…",
"backToSignIn": "Back to sign in"
},
"exam": {
"submitExam": "Submit exam",
"exitToHome": "Exit to home",
"questionsLabel": "Questions",
"progressLabel": "Progress",
"progressText": "{{answered}} of {{total}} answered",
"questionHeader": "Question {{current}} / {{total}}",
"correct": "Correct",
"notQuite": "Not quite",
"answerLabel": "Answer:",
"previous": "← Previous",
"flagged": "⚑ Flagged",
"flagForReview": "⚐ Flag for review",
"checkAnswer": "Check answer",
"next": "Next →",
"elapsed": "Elapsed",
"remaining": "Remaining",
"pointsPossible": "Points possible",
"mode": "Mode",
"immediateFeedback": "Immediate feedback",
"gradeAtEnd": "Grade at end",
"notes": "Notes",
"notesPlaceholder": "Add short notes while you work…",
"author": "Author",
"navigateHint": "navigate",
"flagHint": "flag",
"selectHint": "select",
"exit": "Exit",
"untimed": "Untimed",
"needHint": "💡 Need a hint?",
"hintLoading": "Thinking…",
"hintShown": "💡 Hint shown",
"hintTitle": "Get a hint without revealing the answer",
"hintLabel": "Hint"
},
"results": {
"ai": {
"button": "AI Review",
"suggestedGrade": "AI Suggested Grade",
"feedback": "AI Feedback",
"accept": "Accept",
"keepOriginal": "Keep original",
"rubricBreakdown": "Rubric breakdown",
"error": "AI grading failed — please grade manually"
},
"tutor": {
"title": "💬 Ask the tutor",
"subtitle": "Ask follow-up questions about this attempt — explanations, similar problems, or rubric details.",
"placeholder": "e.g. \"Why was Q2 wrong?\" or \"Give me a similar problem to practice.\"",
"inputPlaceholder": "Ask a question…",
"send": "Send"
},
"reviewing": "Reviewing past attempt",
"examComplete": "Exam complete",
"scored": "You scored ",
"abovePassing": "Above the {{passing}}% passing mark.",
"belowPassing": "Below the {{passing}}% passing mark. Keep practicing.",
"points": "Points",
"correct": "Correct",
"time": "Time",
"byCategory": "By category",
"uncategorized": "Uncategorized",
"review": "Review",
"explanation": "Explanation",
"rubric": "Rubric (self-grade)",
"retakeExam": "Retake exam",
"redoFailed": "Redo failed questions",
"cantRetake": "Exam no longer saved in workspace",
"backToHome": "Back to home"
},
"tweaks": {
"title": "Tweaks",
"theme": "Theme",
"light": "Light",
"dark": "Dark",
"textSize": "Text size",
"small": "S",
"medium": "M",
"large": "L",
"feedback": "Feedback",
"auto": "Auto",
"immediate": "Immediate",
"end": "End"
},
"workspace": {
"myWorkspace": "My Workspace",
"overview": "Overview",
"myExams": "My Exams",
"results": "Results",
"settings": "Settings",
"newExam": "New Exam",
"noSavedExams": "No saved exams yet",
"noSavedExamsDesc": "Upload an exam from the home page, or create a new one to get started.",
"createFirstExam": "Create Your First Exam",
"takeExam": "Take exam",
"totalAttempts": "Total Attempts",
"avgScore": "Avg. Score",
"questionsAnswered": "Questions Answered",
"uploadExam": "Upload Exam",
"uploadDropzone": "Drop JSON or click to browse",
"studyCoachTitle": "Study Coach",
"streakDay": "day streak",
"streakDays": "day streak",
"studyTips": "Study Tips",
"retakeWeakest": "Retake Weakest Exam",
"performanceTrends": "Performance Trends",
"sharedWithMe": "Shared with Me",
"noSharedExams": "No shared exams yet",
"noSharedExamsDesc": "Exams shared by others will appear here when you save them to your workspace.",
"shareMode": "Share mode",
"shareModeClone": "Cloneable",
"shareModeView": "View only",
"importFromUrl": "Import from URL",
"importUrlPlaceholder": "Paste a raw JSON URL…",
"import": "Import",
"importing": "Importing…",
"viewAllResults": "View all results",
"recentResults": "Recent Results",
"downloadInstructions": "Download Instructions",
"viewAll": "View all",
"noAttempts": "No attempts yet",
"noAttemptsDesc": "Take an exam to see your results here.",
"attempts": "attempt",
"attemptsPlural": "attempts",
"updated": "Updated",
"profile": "Profile",
"security": "Security",
"displayNameLabel": "Display Name",
"displayNameDesc": "Your name shown throughout the app",
"emailLabel": "Email",
"emailDesc": "Your email address",
"saveProfile": "Save Profile",
"saving": "Saving…",
"displayNameUpdated": "Display name updated",
"displayNameRequired": "Display name is required (max 100 characters)",
"currentPassword": "Current Password",
"newPassword": "New Password",
"newPasswordDesc": "Minimum 8 characters",
"confirmNewPassword": "Confirm New Password",
"changePassword": "Change Password",
"changing": "Changing…",
"passwordChanged": "Password changed successfully",
"passwordMinLength": "New password must be at least 8 characters",
"passwordsDoNotMatch": "Passwords do not match",
"language": "Language",
"languageLabel": "Language",
"languageDesc": "Select your preferred display language",
"appearance": "Appearance",
"themeLabel": "Theme",
"themeDesc": "Choose between light and dark mode",
"textSizeLabel": "Text size",
"textSizeDesc": "Adjust the base font size for readability",
"defaultFeedback": "Default Feedback",
"defaultFeedbackLabel": "Feedback mode",
"defaultFeedbackDesc": "Choose when to see answer feedback during exams",
"storage": "Storage",
"storageUsage": "Storage Usage",
"storageOf": "of",
"storageExams": "Saved exams",
"storageResults": "Results",
"showDetails": "Show details",
"hideDetails": "Hide details",
"storageDetails": "Storage Details",
"noStorageItems": "No items using storage.",
"exam": "Exam",
"result": "Result",
"deleteExamConfirm": "Delete this exam? This cannot be undone.",
"deleteResultConfirm": "Delete this result? This cannot be undone.",
"storageWarningHigh": "You are using over 80% of your storage.",
"storageWarningCritical": "You are using over 95% of your storage. Delete some items to free up space.",
"searchExams": "Search exams…",
"noSearchResults": "No exams match your search",
"noSearchResultsDesc": "Try a different keyword or clear the search.",
"pin": "Pin to top",
"unpin": "Unpin",
"duplicate": "Duplicate",
"export": "Export JSON",
"collections": "Collections",
"newCollection": "New Collection",
"allExams": "All Exams",
"uncategorized": "Uncategorized",
"moveTo": "Move to",
"removeFromCollection": "Remove from collection",
"collectionNamePlaceholder": "Collection name…",
"create": "Create",
"rename": "Rename",
"deleteCollectionConfirm": "Delete this collection? Exams will be moved to uncategorized.",
"batchSelectAll": "Select all",
"batchSelected": "{{count}} selected",
"batchDeleteConfirm": "Delete selected exams? This cannot be undone."
},
"admin": {
"aiGrading": {
"title": "AI Grading",
"provider": "Provider",
"model": "Model",
"apiKey": "API Key",
"baseUrl": "Base URL",
"baseUrlDesc": "Custom API base URL for OpenAI-compatible endpoints",
"testButton": "Test connection",
"testSuccess": "Connection successful",
"testFailed": "Connection failed"
},
"administration": "Administration",
"dashboard": "Dashboard",
"backToSite": "← Back to site",
"overview": "Overview",
"settings": "Settings",
"users": "Users",
"totalUsers": "Total Users",
"savedExams": "Saved Exams",
"examsTaken": "Exams Taken",
"avgScore": "Avg. Score",
"recentActivity": "Recent Activity",
"noRecentActivity": "No recent activity yet",
"general": "General",
"siteName": "Site Name",
"siteNameDesc": "The name displayed throughout the application",
"maxUpload": "Max Upload Size (MB)",
"maxUploadDesc": "Maximum file size for exam JSON uploads",
"defaultTheme": "Default Theme",
"defaultThemeDesc": "Default theme for new visitors",
"accessControl": "Access Control",
"allowGuestMode": "Allow Guest Mode",
"allowGuestModeDesc": "Let unauthenticated users take exams without signing in",
"registrationEnabled": "Registration Enabled",
"registrationEnabledDesc": "Allow new users to create accounts",
"emailSmtp": "Email / SMTP",
"appUrl": "App URL",
"appUrlDesc": "Base URL used in email links (e.g. https://brainwave.example.com)",
"smtpHost": "SMTP Host",
"smtpHostDesc": "Hostname of your SMTP server",
"smtpPort": "SMTP Port",
"smtpPortDesc": "Common ports: 587 (STARTTLS), 465 (SSL), 25 (plain)",
"username": "Username",
"usernameDesc": "SMTP authentication username",
"password": "Password",
"passwordDesc": "SMTP authentication password",
"fromAddress": "From Address",
"fromAddressDesc": "The sender name and address shown in emails",
"tlsMode": "TLS Mode",
"tlsModeDesc": "Auto detects from port (465→SSL). Use explicit override if needed.",
"auto": "Auto",
"forceTls": "Force TLS",
"off": "Off",
"sendTestEmail": "Send Test Email",
"sendTestEmailDesc": "Sends a test email using the settings above (uses draft values, no need to save first)",
"sendTest": "Send Test",
"sending": "Sending…",
"maintenance": "Maintenance",
"maintenanceMode": "Maintenance Mode",
"maintenanceModeDesc": "Take the site offline for non-admin users",
"maintenanceMessage": "Maintenance Message",
"maintenanceMessageDesc": "Message displayed to visitors during maintenance",
"discardChanges": "Discard Changes",
"saveSettings": "Save Settings",
"settingsSaved": "Settings saved successfully",
"searchByNameOrEmail": "Search by name or email…",
"search": "Search",
"user": "User",
"role": "Role",
"verified": "Verified",
"exams": "Exams",
"joined": "Joined",
"actions": "Actions",
"noUsersFound": "No users found",
"testEmailSent": "Test email sent successfully! Check your inbox."
},
"editor": {
"back": "← Back",
"examTitlePlaceholder": "Exam title",
"unsavedChanges": "Unsaved changes",
"saving": "Saving…",
"createExam": "Create Exam",
"save": "Save",
"examCreated": "Exam created successfully",
"examSaved": "Exam saved",
"questionsLabel": "Questions",
"addQuestion": "Add Question",
"noQuestions": "No questions yet",
"noQuestionsDesc": "Select a question type from the sidebar to add your first question.",
"questionEditor": "Question Editor",
"prompt": "Prompt",
"promptPlaceholder": "Enter the question prompt…",
"categoryOptional": "Category (optional)",
"categoryPlaceholder": "e.g. Algebra",
"points": "Points",
"explanationOptional": "Explanation (optional)",
"explanationPlaceholder": "Explanation shown after grading…",
"choices": "Choices",
"markAsCorrect": "Mark as correct",
"addChoice": "+ Add Choice",
"remove": "Remove",
"multipleChoice": "Multiple Choice",
"multipleSelect": "Multiple Select",
"shortAnswer": "Short Answer",
"translation": "Translation",
"mathInput": "Math Input",
"essay": "Essay",
"match": "Match",
"order": "Order",
"fillInTheBlanks": "Fill in the Blanks",
"trueFalse": "True / False",
"codeSubmission": "Code Submission",
"dropdownCompletion": "Dropdown Completion",
"numericRange": "Numeric Range",
"dictation": "Dictation",
"grammarCorrection": "Grammar Correction",
"flashcard": "Flashcard",
"textToCorrect": "Text to Correct",
"textToCorrectPlaceholder": "Enter the grammatically incorrect sentence…",
"playbackSpeed": "Speed",
"revealAnswer": "Reveal Answer",
"didntKnow": "Didn't know",
"hard": "Hard",
"good": "Good",
"flashcardFront": "Prompt (front of card)",
"flashcardFrontPlaceholder": "Enter the prompt…",
"correctAnswer": "Correct Answer",
"correctAnswerPlaceholder": "Enter the correct answer",
"acceptedForms": "Accepted Forms (optional alternatives)",
"alternativeAnswer": "Alternative answer",
"addAlternative": "+ Add Alternative",
"caseSensitive": "Case sensitive",
"ignorePunctuation": "Ignore punctuation",
"ignoreAccents": "Ignore accents",
"minWords": "Min Words",
"rubricCriteria": "Rubric Criteria",
"criterion": "Criterion",
"addCriterion": "+ Add Criterion",
"leftColumn": "Left Column",
"rightColumn": "Right Column",
"addLeft": "+ Add Left",
"addRight": "+ Add Right",
"correctPairings": "Correct Pairings",
"select": "— Select —",
"items": "Items (drag not implemented, use arrows to reorder)",
"itemPlaceholder": "Item {{index}}",
"correctOrder": "Correct Order",
"correctOrderHint": "The correct order is the order shown above. Reorder items to set the correct sequence.",
"setCurrentOrder": "Set Current Order as Correct",
"tagsLabel": "Tags",
"tagsPlaceholder": "Add tag…",
"addTag": "Add",
"examTitleRequired": "Exam title is required",
"atLeastOneQuestion": "Add at least one question",
"sourceLanguage": "Source Language",
"sourceLanguagePlaceholder": "e.g. English",
"targetLanguage": "Target Language",
"targetLanguagePlaceholder": "e.g. Spanish",
"choicesCheckCorrect": "Choices (check correct answers)",
"choicePlaceholder": "Choice {{id}}",
"addItem": "+ Add Item",
"leftItemPlaceholder": "Left item {{index}}",
"rightItemPlaceholder": "Right item {{index}}",
"aiGenerate": "✨ Generate with AI",
"aiClose": "✕ Close AI",
"aiPanelTitle": "Generate questions",
"aiTopicPlaceholder": "Topic, e.g. \"Pythagorean theorem\"",
"aiContextPlaceholder": "Optional notes or source material to ground the questions in…",
"aiGenerateNow": "Generate",
"aiGenerating": "Generating…",
"aiTopicRequired": "Please enter a topic"
},
"setup": {
"welcome": "Welcome to BrainWave",
"subtitle": "Let's get your instance set up. This only takes a minute.",
"adminAccount": "Admin Account",
"emailSettings": "Email Settings",
"email": "Email",
"displayName": "Display Name",
"password": "Password",
"confirmPassword": "Confirm Password",
"continue": "Continue →",
"smtpHost": "SMTP Host",
"smtpPort": "SMTP Port",
"smtpUsername": "SMTP Username",
"smtpPassword": "SMTP Password",
"fromAddress": "From Address",
"security": "Security",
"appUrl": "App URL",
"back": "← Back",
"completeSetup": "Complete Setup",
"settingUp": "Setting up…",
"setupHint1": "Configure your outgoing email server so BrainWave can send verification and password-reset emails.",
"setupHint2": "You can leave these blank and configure them later in the admin dashboard.",
"autoSsl": "Auto (use SSL on port 465)",
"sslTls": "SSL/TLS",
"noneStarttls": "None / STARTTLS",
"validEmailRequired": "Please enter a valid email address",
"displayNameRequired": "Display name is required",
"passwordMinLength": "Password must be at least 8 characters",
"passwordsDoNotMatch": "Passwords do not match",
"setupFailed": "Setup failed. Please try again."
},
"verify": {
"verifying": "Verifying your email…",
"pleaseWait": "Please wait while we confirm your email address.",
"emailVerified": "Email Verified",
"signIn": "Sign In →",
"verificationFailed": "Verification Failed",
"backToHome": "Back to Home",
"noToken": "No verification token found."
},
"share": {
"share": "Share",
"shared": "Shared",
"generateLink": "Generate share link",
"copyLink": "Copy link",
"revokeLink": "Revoke link",
"takeExam": "Take this exam",
"saveToWorkspace": "Save to my workspace"
},
"resetPassword": {
"resetPassword": "Reset Password",
"enterEmail": "Enter your email address and we'll send you a link to reset your password.",
"sendResetLink": "Send Reset Link",
"sending": "Sending…",
"backToSignIn": "← Back to sign in",
"checkEmail": "Check Your Email",
"setNewPassword": "Set New Password",
"enterNewPassword": "Enter your new password below.",
"newPassword": "New Password",
"confirmPassword": "Confirm Password",
"resetting": "Resetting…",
"resetPasswordBtn": "Reset Password",
"passwordUpdated": "Password Updated",
"passwordUpdatedDesc": "Your password has been reset successfully. You can now sign in with your new password.",
"requestFailed": "Request failed",
"passwordResetFailed": "Password reset failed"
}
}