OpenMAIC-React / src /lib /i18n /locales /en-US.json
muthuk1's picture
Convert OpenMAIC from Next.js to React (Vite)
f56a29b verified
{
"common": {
"you": "You",
"confirm": "Confirm",
"cancel": "Cancel",
"loading": "Loading..."
},
"home": {
"slogan": "Generative Learning in Multi-Agent Interactive Classroom",
"greetingWithName": "Hi, {{name}}"
},
"toolbar": {
"pdfParser": "Parser",
"pdfUpload": "Upload PDF",
"removePdf": "Remove file",
"webSearchOn": "Enabled",
"webSearchOff": "Click to enable",
"webSearchDesc": "Search the web for up-to-date information before generation",
"webSearchProvider": "Search engine",
"webSearchNoProvider": "Configure search API key in Settings",
"selectProvider": "Select provider",
"configureProvider": "Set up model",
"configureProviderHint": "Configure at least one model provider to generate courses",
"enterClassroom": "Enter Classroom",
"advancedSettings": "Advanced Settings",
"thinking": "Thinking",
"thinkingBudget": "Budget",
"default": "Default",
"on": "On",
"off": "Off",
"auto": "Auto",
"dynamic": "Dynamic",
"ttsTitle": "Text-to-Speech",
"ttsHint": "Choose a voice for the AI teacher",
"ttsPreview": "Preview",
"ttsPreviewing": "Playing...",
"interactiveModeHint": "Enable interactive-first mode for more hands-on content",
"interactiveModeLabel": "Interactive Mode"
},
"export": {
"pptx": "Export PPTX",
"resourcePack": "Export Resource Pack",
"resourcePackDesc": "PPTX + interactive pages",
"exporting": "Exporting...",
"exportSuccess": "Export successful",
"exportFailed": "Export failed",
"classroomZip": "Export Classroom ZIP",
"classroomZipDesc": "Course structure + media files"
},
"import": {
"classroom": "Import Classroom",
"parsing": "Parsing ZIP...",
"validating": "Validating data...",
"writingMedia": "Writing media files...",
"writingCourse": "Writing course data...",
"success": "Classroom imported successfully",
"error": {
"invalidZip": "Invalid file. Please select a valid .maic.zip file.",
"invalidManifest": "Invalid classroom file: manifest.json is missing or corrupted.",
"missingData": "Invalid classroom file: missing required course data.",
"storageFull": "Import failed: browser storage is full. Try clearing old classrooms."
}
},
"chat": {
"lecture": "Lecture",
"noConversations": "No conversations",
"startConversation": "Type a message below to begin chatting",
"noMessages": "No messages yet",
"ended": "ended",
"unknown": "Unknown",
"stopDiscussion": "Stop Discussion",
"endQA": "End Q&A",
"tabs": {
"lecture": "Notes",
"chat": "Chat"
},
"lectureNotes": {
"empty": "Notes will appear here after lecture playback",
"emptyHint": "Press play to start the lecture",
"pageLabel": "Page {{n}}",
"currentPage": "Current"
},
"badge": {
"qa": "Q&A",
"discussion": "DISC",
"lecture": "LEC"
}
},
"actions": {
"names": {
"spotlight": "Spotlight",
"laser": "Laser",
"wb_open": "Open Whiteboard",
"wb_draw_text": "Whiteboard Text",
"wb_draw_shape": "Whiteboard Shape",
"wb_draw_chart": "Whiteboard Chart",
"wb_draw_latex": "Whiteboard Formula",
"wb_draw_table": "Whiteboard Table",
"wb_draw_line": "Whiteboard Line",
"wb_clear": "Clear Whiteboard",
"wb_delete": "Delete Element",
"wb_close": "Close Whiteboard",
"discussion": "Discussion"
},
"status": {
"inputStreaming": "Waiting",
"inputAvailable": "Executing",
"outputAvailable": "Completed",
"outputError": "Error",
"outputDenied": "Denied",
"running": "Executing",
"result": "Completed",
"error": "Error"
}
},
"agentBar": {
"readyToLearn": "Ready to learn together?",
"expandedTitle": "Classroom Role Config",
"configTooltip": "Click to configure classroom roles",
"voiceLabel": "Voice",
"voiceLoading": "Loading...",
"voiceAutoAssign": "Voices will be auto-assigned",
"searchVoice": "Search voices",
"noMatchingVoices": "No matching voices"
},
"proactiveCard": {
"discussion": "Discussion",
"join": "Join",
"skip": "Skip",
"pause": "Pause",
"resume": "Resume"
},
"voice": {
"startListening": "Voice input",
"stopListening": "Stop recording"
},
"stage": {
"currentScene": "Current Scene",
"generating": "Generating...",
"paused": "Paused",
"generationFailed": "Generation failed",
"confirmSwitchTitle": "Switch Scene",
"confirmSwitchMessage": "A topic is currently in progress. Switching scenes will end the current topic. Are you sure?",
"generatingNextPage": "Scene is being generated, please wait...",
"courseComplete": "Course complete",
"fullscreen": "Fullscreen",
"exitFullscreen": "Exit Fullscreen"
},
"classroomComplete": {
"title": "Course complete",
"trailLabels": {
"slide": "pages",
"quiz": "quizzes",
"interactive": "interactives",
"pbl": "projects"
},
"quizScoreLabel": "{{correct}} / {{total}} correct",
"encouragement": {
"high": "Outstanding — you nailed it.",
"mid": "Solid work — keep it up.",
"low": "A good start — review and try again."
}
},
"whiteboard": {
"title": "Interactive Whiteboard",
"open": "Open Whiteboard",
"clear": "Clear Whiteboard",
"minimize": "Minimize Whiteboard",
"ready": "Whiteboard is ready",
"readyHint": "Elements will appear here when added by AI",
"clearSuccess": "Whiteboard cleared successfully",
"clearError": "Failed to clear whiteboard: ",
"resetView": "Reset View",
"restoreError": "Failed to restore whiteboard: ",
"history": "History",
"restore": "Restore",
"noHistory": "No history yet",
"restored": "Whiteboard restored",
"elementCount": "{{count}} elements"
},
"quiz": {
"title": "Quiz",
"subtitle": "Test your knowledge",
"questionsCount": "questions",
"totalPrefix": "",
"pointsSuffix": "pts",
"startQuiz": "Start Quiz",
"multipleChoiceHint": "(Multiple choice — select all correct answers)",
"inputPlaceholder": "Type your answer here...",
"charCount": "chars",
"yourAnswer": "Your answer:",
"notAnswered": "Not answered",
"aiComment": "AI Feedback",
"singleChoice": "Single",
"multipleChoice": "Multiple",
"shortAnswer": "Short answer",
"analysis": "Analysis: ",
"excellent": "Excellent!",
"keepGoing": "Keep going!",
"needsReview": "Needs review",
"correct": "correct",
"incorrect": "incorrect",
"answering": "In Progress",
"submitAnswers": "Submit Answers",
"aiGrading": "AI is grading...",
"aiGradingWait": "Please wait, analyzing your answers",
"quizReport": "Quiz Report",
"retry": "Retry"
},
"roundtable": {
"teacher": "TEACHER",
"you": "YOU",
"inputPlaceholder": "Type your message...",
"listening": "Listening...",
"processing": "Processing...",
"noSpeechDetected": "No speech detected, please try again",
"discussionEnded": "Discussion ended",
"qaEnded": "Q&A ended",
"thinking": "Thinking",
"yourTurn": "Your turn",
"stopDiscussion": "Stop Discussion",
"autoPlay": "Auto-play",
"autoPlayOff": "Stop auto-play",
"speed": "Speed",
"voiceInput": "Voice input",
"voiceInputDisabled": "Voice input disabled",
"textInput": "Text input",
"stopRecording": "Stop recording",
"startRecording": "Start recording"
},
"pbl": {
"legacyFormat": "This PBL scene uses a legacy format. Please regenerate the course.",
"emptyProject": "PBL project has not been generated yet. Please create via course generation.",
"roleSelection": {
"title": "Choose Your Role",
"description": "Select a role to start collaborating on the project"
},
"workspace": {
"restart": "Restart",
"confirmRestart": "Reset all progress?",
"confirm": "Confirm",
"cancel": "Cancel"
},
"issueboard": {
"title": "Issue Board",
"noIssues": "No issues yet",
"statusDone": "Done",
"statusActive": "Active",
"statusPending": "Pending"
},
"chat": {
"title": "Project Discussion",
"currentIssue": "Current Issue",
"mentionHint": "Use @question to ask, @judge to submit for review",
"placeholder": "Type a message...",
"send": "Send",
"issueCompleteMessage": "Issue \"{{completed}}\" completed! Moving to next issue: \"{{next}}\"",
"allCompleteMessage": "🎉 All issues completed! Great work on the project!"
},
"guide": {
"howItWorks": "How it works",
"help": "Help",
"title": "Help",
"step1": {
"title": "Step 1: Choose a Role",
"desc": "After the project is generated, select a role from the list (non-system roles marked with 🟢)"
},
"step2": {
"title": "Step 2: Complete Issues",
"desc": "Each issue represents a learning task:",
"s1": {
"title": "View current Issue",
"desc": "Check the issue's title, description, and assignee"
},
"s2": {
"title": "Get guidance",
"example": "@question Where should I start?\n@question How do I implement this feature?",
"desc": "The Question Agent provides guiding questions and hints (no direct answers)"
},
"s3": {
"title": "Submit your work",
"example": "@judge I'm done, please check my Notes",
"desc": "The Judge Agent evaluates your work and gives feedback:",
"complete": "Automatically moves to the next issue",
"revision": "Improve based on feedback"
}
},
"step3": {
"title": "Step 3: Complete the Project",
"desc": "When all issues are done, the system displays \"🎉 Project Complete!\""
}
}
},
"share": {
"notReady": "Available after generation completes"
},
"classroom": {
"recentClassrooms": "Recent",
"today": "Today",
"yesterday": "Yesterday",
"daysAgo": "days ago",
"slides": "slides",
"nameCopied": "Name copied",
"deleteConfirmTitle": "Delete",
"delete": "Delete",
"rename": "Rename",
"renamePlaceholder": "Enter classroom name",
"renameFailed": "Failed to rename classroom",
"searchPlaceholder": "Search courses...",
"searchAriaLabel": "Search courses",
"clearSearch": "Clear",
"searchEmpty": "No courses match your search"
},
"upload": {
"pdfSizeLimit": "Supports PDF files up to 50MB",
"generateFailed": "Failed to generate classroom, please try again",
"requirementPlaceholder": "Tell me anything you want to learn, e.g.\n\"Teach me Python from scratch in 30 minutes\"\n\"Explain Fourier Transform on the whiteboard\"\n\"How to play the board game Avalon\"",
"requirementRequired": "Please enter course requirements",
"fileTooLarge": "File too large. Please select a PDF file smaller than 50MB"
},
"generation": {
"analyzingPdf": "Analyzing PDF Document",
"analyzingPdfDesc": "Extracting document structure and content...",
"pdfLoadFailed": "Failed to load PDF file, please try again",
"pdfParseFailed": "PDF parsing failed",
"streamNotReadable": "Unable to read generation stream",
"generatingOutlines": "Drafting Course Outline",
"generatingOutlinesDesc": "Structuring the learning path...",
"generatingSlideContent": "Generating Page Content",
"generatingSlideContentDesc": "Creating slides, quizzes, and interactive content...",
"generatingActions": "Generating Teaching Actions",
"generatingActionsDesc": "Orchestrating narration, spotlights, and interactions...",
"generationComplete": "Generation complete!",
"generationFailed": "Generation failed",
"generatingCourse": "Generating course",
"openingClassroom": "Opening classroom...",
"outlineReady": "Course outline generated",
"generatingFirstPage": "Generating first page...",
"firstPageReady": "First page ready! Opening classroom...",
"speechFailed": "Speech generation failed",
"retryScene": "Retry",
"retryingScene": "Regenerating...",
"backToHome": "Back to Home",
"sessionNotFound": "Session Not Found",
"sessionNotFoundDesc": "Please fill in course requirements to start the generation process.",
"goBackAndRetry": "Go Back and Retry",
"classroomReady": "Your personalized AI learning environment has been generated successfully.",
"aiWorking": "AI Agents Working...",
"textTruncated": "Document text is long, using first {{n}} characters for generation",
"imageTruncated": "{{total}} images found, exceeding the {{max}} image limit. Extra images will use text descriptions only",
"agentGeneration": "Generating Classroom Roles",
"agentGenerationDesc": "Generating roles based on course content...",
"agentRevealTitle": "Your Classroom Roles",
"viewAgents": "View Roles",
"continue": "Continue",
"outlineRetrying": "Outline generation issue, retrying...",
"outlineEmptyResponse": "Model returned no valid outlines. Please check model configuration and try again",
"outlineGenerateFailed": "Outline generation failed, please try again later",
"webSearching": "Web Search",
"webSearchingDesc": "Searching the web for up-to-date information",
"webSearchFailed": "Web search failed"
},
"settings": {
"title": "Settings",
"description": "Configure application settings",
"language": "Language",
"languageDesc": "Select interface language",
"theme": "Theme",
"themeDesc": "Select theme mode (Light/Dark/System)",
"themeOptions": {
"light": "Light",
"dark": "Dark",
"system": "System"
},
"apiKey": "API Key",
"apiKeyDesc": "Configure your API key",
"apiBaseUrl": "API Endpoint URL",
"apiBaseUrlDesc": "Configure your API endpoint URL",
"apiKeyRequired": "API key cannot be empty",
"model": "Model Configuration",
"modelDesc": "Configure AI models",
"modelPlaceholder": "Enter or select model name",
"ttsModel": "TTS Model",
"ttsModelDesc": "Configure TTS models",
"ttsModelPlaceholder": "Enter or select TTS model name",
"ttsModelOptions": {
"openaiTts": "OpenAI TTS",
"azureTts": "Azure TTS"
},
"availableModels": "Available Models",
"modelSelectedViaVoice": "Model is determined by voice selection",
"testConnection": "Test Connection",
"testConnectionDesc": "Test current API configuration is available",
"testing": "Testing...",
"agentSettings": "Agent Settings",
"agentSettingsDesc": "Select the agents to participate in the conversation. Select 1 for single agent mode, select multiple for multi-agent collaborative mode.",
"agentMode": "Agent Mode",
"agentModePreset": "Preset",
"agentModeAuto": "Auto-generate",
"agentModeAutoDesc": "AI will automatically generate appropriate roles",
"autoAgentCount": "Agent Count",
"autoAgentCountDesc": "Number of agents to auto-generate (including teacher)",
"atLeastOneAgent": "Please select at least 1 agent",
"singleAgentMode": "Single Agent Mode",
"directAnswer": "Direct Answer",
"multiAgentMode": "Multi-Agent Mode",
"agentsCollaborating": "Collaborative Discussion",
"agentsCollaboratingCount": "{{count}} agents selected for collaborative discussion",
"maxTurns": "Max Discussion Turns",
"maxTurnsDesc": "The maximum number of discussion turns between agents (each agent completes actions and reply counts as one turn)",
"priority": "Priority",
"actions": "Actions",
"actionCount": "{{count}} actions",
"selectedAgent": "Selected Agent",
"selectedAgents": "Selected Agents",
"required": "Required",
"agentNames": {
"default-1": "AI Teacher",
"default-2": "AI Assistant",
"default-3": "Class Clown",
"default-4": "Curious Mind",
"default-5": "Note Taker",
"default-6": "Deep Thinker"
},
"agentRoles": {
"teacher": "Teacher",
"assistant": "Assistant",
"student": "Student"
},
"agentDescriptions": {
"default-1": "Lead teacher with clear and structured explanations",
"default-2": "Supports learning and helps clarify key points",
"default-3": "Brings humor and energy to the classroom",
"default-4": "Always curious, loves asking why and how",
"default-5": "Diligently records and organizes class notes",
"default-6": "Thinks deeply and explores the essence of topics"
},
"close": "Close",
"save": "Save",
"providers": "LLM",
"addProviderDescription": "Add custom model providers to extend available AI models",
"providerNames": {
"openai": "OpenAI",
"anthropic": "Claude",
"google": "Gemini",
"deepseek": "DeepSeek",
"qwen": "Qwen",
"kimi": "Kimi",
"minimax": "MiniMax",
"glm": "GLM",
"siliconflow": "SiliconFlow",
"doubao": "Doubao",
"openrouter": "OpenRouter",
"grok": "Grok",
"tencent-hunyuan": "Tencent Hunyuan",
"xiaomi": "Xiaomi MiMo",
"ollama": "Ollama (Local)"
},
"providerTypes": {
"openai": "OpenAI Protocol",
"anthropic": "Claude Protocol",
"google": "Gemini Protocol"
},
"modelCount": "models",
"modelSingular": "model",
"defaultModel": "Default Model",
"webSearch": "Web Search",
"mcp": "MCP",
"knowledgeBase": "Knowledge Base",
"documentParser": "Document Parser",
"conversationSettings": "Conversation",
"keyboardShortcuts": "Shortcuts",
"generalSettings": "General",
"systemSettings": "System",
"addProvider": "Add",
"importFromClipboard": "Import from Clipboard",
"apiSecret": "API Key",
"apiHost": "Base URL",
"baseUrlRegion": {
"china": "China",
"international": "International"
},
"requestUrl": "Request URL",
"models": "Models",
"addModel": "Add",
"reset": "Reset",
"fetch": "Fetch",
"connectionSuccess": "Connection successful",
"connectionFailed": "Connection failed",
"capabilities": {
"vision": "Vision",
"tools": "Tools",
"streaming": "Streaming"
},
"contextWindow": "Context",
"contextShort": "ctx",
"outputWindow": "Output",
"addProviderButton": "Add",
"addProviderDialog": "Add Model Provider",
"providerName": "Name",
"providerNamePlaceholder": "e.g., My OpenAI Proxy",
"providerNameRequired": "Please enter provider name",
"providerApiMode": "API Mode",
"apiModeOpenAI": "OpenAI Protocol",
"apiModeAnthropic": "Claude Protocol",
"apiModeGoogle": "Gemini Protocol",
"defaultBaseUrl": "Default Base URL",
"providerIcon": "Provider Icon URL",
"requiresApiKey": "Requires API Key",
"deleteProvider": "Delete Provider",
"deleteProviderConfirm": "Are you sure you want to delete this provider?",
"addCustomTTSProvider": "Add Custom TTS Provider",
"addCustomASRProvider": "Add Custom ASR Provider",
"addCustomAudioProviderDescription": "Add a custom OpenAI-compatible audio provider",
"customVoices": "Voices",
"voiceIdPlaceholder": "Voice ID (e.g. alloy)",
"voiceNamePlaceholder": "Display Name",
"addVoice": "Add",
"modelNamePlaceholder": "Optional",
"defaultModelHint": "Model name sent in API requests (e.g. kokoro, tts-1)",
"noVoicesAdded": "No voices added yet. Add voices below for per-agent selection.",
"noModelsAdded": "No models added yet. Add models below to enable model selection.",
"noModelsWarning": "Please add at least one model below before using this provider.",
"asrNoTranscription": "No transcription generated. Try speaking louder or longer.",
"cannotDeleteBuiltIn": "Cannot delete built-in provider",
"resetToDefault": "Reset to Default",
"resetToDefaultDescription": "Restore model list to default configuration (API key and Base URL will be preserved)",
"resetConfirmDescription": "This will remove all custom models and restore the built-in default model list. API key and Base URL will be preserved.",
"confirmReset": "Confirm Reset",
"resetSuccess": "Successfully reset to default configuration",
"saveSuccess": "Settings saved",
"saveFailed": "Failed to save settings, please try again",
"cannotDeleteBuiltInModel": "Cannot delete built-in model",
"cannotEditBuiltInModel": "Cannot edit built-in model",
"modelIdRequired": "Please enter model ID",
"noModelsAvailable": "No models available for testing",
"providerMetadata": "Provider Metadata",
"editModel": "Edit Model",
"editModelDescription": "Edit model configuration and capabilities",
"addNewModel": "New Model",
"modelsManagementDescription": "Manage the models and capabilities available for this provider.",
"addNewModelDescription": "Add a new model configuration",
"modelId": "Model ID",
"modelIdPlaceholder": "e.g., gpt-4o",
"modelName": "Display Name",
"modelCapabilities": "Capabilities",
"advancedSettings": "Advanced Settings",
"contextWindowLabel": "Context Window",
"contextWindowPlaceholder": "e.g., 128000",
"outputWindowLabel": "Max Output Tokens",
"outputWindowPlaceholder": "e.g., 4096",
"testModel": "Test Model",
"deleteModel": "Delete",
"cancelEdit": "Cancel",
"saveModel": "Save",
"howToUse": "How to Use",
"step1ConfigureProvider": "Go to \"Model Providers\", select or add a provider, and configure connection settings (API key, Base URL, etc.)",
"step2SelectModel": "Select the model you want to use in \"Active Model\" below",
"step3StartUsing": "After saving, the system will use your selected model",
"activeModel": "Active Model",
"activeModelDescription": "Select the model for AI conversations and content generation",
"selectModel": "Select Model",
"searchModels": "Search models",
"noModelsFound": "No matching models found",
"noConfiguredProviders": "No configured providers",
"configureProvidersFirst": "Please configure provider connection settings in \"Model Providers\" on the left",
"currentlyUsing": "Currently using",
"ttsSettings": "Text-to-Speech",
"asrSettings": "Speech Recognition",
"audioSettings": "Audio Settings",
"ttsSection": "Text-to-Speech (TTS)",
"asrSection": "Automatic Speech Recognition (ASR)",
"ttsDescription": "TTS (Text-to-Speech) - Convert text to speech",
"asrDescription": "ASR (Automatic Speech Recognition) - Convert speech to text",
"enableTTS": "Enable Text-to-Speech",
"ttsEnabledDescription": "When enabled, speech audio will be generated during course creation",
"ttsVoiceConfigHint": "Per-agent voice can be configured in \"Classroom Role Config\" on the homepage",
"enableASR": "Enable Speech Recognition",
"asrEnabledDescription": "When enabled, students can use microphone for voice input",
"ttsProvider": "TTS Provider",
"ttsLanguageFilter": "Language Filter",
"allLanguages": "All Languages",
"ttsVoice": "Voice",
"ttsSpeed": "Speed",
"ttsBaseUrl": "Base URL",
"ttsApiKey": "API Key",
"doubaoAppId": "App ID",
"doubaoAccessKey": "Access Key",
"asrProvider": "ASR Provider",
"asrLanguage": "Recognition Language",
"asrBaseUrl": "Base URL",
"asrApiKey": "API Key",
"enterApiKey": "Enter API Key",
"enterCustomBaseUrl": "Enter custom Base URL",
"browserNativeNote": "Browser Native ASR requires no configuration and is completely free",
"providerOpenAITTS": "OpenAI TTS (gpt-4o-mini-tts)",
"providerAzureTTS": "Azure TTS",
"providerGLMTTS": "GLM TTS",
"providerQwenTTS": "Qwen TTS (Alibaba Cloud Bailian)",
"providerVoxCPMTTS": "VoxCPM2",
"providerDoubaoTTS": "Doubao TTS 2.0 (Volcengine)",
"providerElevenLabsTTS": "ElevenLabs TTS",
"providerMiniMaxTTS": "MiniMax TTS",
"providerBrowserNativeTTS": "Browser Native TTS",
"voxcpmBackend": "Backend",
"voxcpmBaseUrlPending": "Enter a Base URL to generate the request URL",
"voxcpmAutoVoiceNoPreview": "Auto Voice is generated from agent context and cannot be previewed directly",
"voxcpmVoicesTitle": "VoxCPM Voices",
"voxcpmVoicesDescription": "Saved in this browser and added to the shared Agent Bar voice pool.",
"voxcpmAutoVoicePrivacyNote": "Auto Voice sends the agent persona to your configured VoxCPM backend as the voice prompt.",
"voxcpmPromptCount": "Prompt {{count}}",
"voxcpmCloneCount": "Clone {{count}}",
"voxcpmCloneUnsupported": "Current backend does not support cloning",
"voxcpmVoicePool": "Voice Pool",
"voxcpmVoiceCount": "{{count}} voices",
"voxcpmAutoVoice": "Auto Voice",
"voxcpmAutoVoiceDescription": "Use the agent persona as the voice prompt",
"voxcpmUnavailable": "Unavailable",
"voxcpmClone": "Clone",
"voxcpmCloneUnsupportedDetail": "Current backend does not support cloning",
"voxcpmNoCustomVoices": "No custom voices yet",
"voxcpmCloneSaveOnly": "Saved only for this backend",
"voxcpmVoiceNamePlaceholder": "Voice name",
"voxcpmPromptPlaceholder": "Example: clear, natural teacher voice with moderate pace",
"voxcpmAddVoice": "Add Voice",
"voxcpmCloneVoiceNamePlaceholder": "Cloned voice name",
"voxcpmUploadReferenceAudio": "Upload reference audio",
"voxcpmRecord": "Record",
"voxcpmReferenceAudioLimitHint": "Reference audio must be 10 MB / 60 seconds or smaller and is converted to WAV before saving.",
"voxcpmReferenceTextPlaceholder": "Reference audio transcript, optional",
"voxcpmVoiceDescriptionPlaceholder": "Voice description, optional",
"voxcpmAddClone": "Add Clone",
"voxcpmRecordingUnsupported": "This browser does not support recording",
"voxcpmRecordedVoiceName": "Recorded Voice",
"voxcpmRecordingFailed": "Recording conversion failed",
"voxcpmRecordingStartFailed": "Unable to start recording",
"voxcpmBaseUrlRequired": "Enter a VoxCPM Base URL first",
"voxcpmPreviewFailed": "Preview failed",
"voxcpmVoiceSaved": "VoxCPM voice saved",
"voxcpmVoiceSaveFailed": "Failed to save voice",
"voxcpmReferenceAudioInvalid": "Invalid reference audio",
"voxcpmCloneSaved": "VoxCPM cloned voice saved",
"voxcpmCloneSaveFailed": "Failed to save cloned voice",
"voxcpmStopPreview": "Stop preview",
"voxcpmPreviewVoice": "Preview voice",
"voxcpmDeleteVoice": "Delete voice",
"providerOpenAIWhisper": "OpenAI ASR (gpt-4o-mini-transcribe)",
"providerBrowserNative": "Browser Native ASR",
"providerQwenASR": "Qwen ASR (Alibaba Cloud Bailian)",
"providerUnpdf": "unpdf (Built-in)",
"providerMinerU": "MinerU",
"providerMinerUCloud": "MinerU (Cloud)",
"browserNativeTTSNote": "Browser Native TTS requires no configuration and is completely free, using system built-in voices",
"testTTS": "Test TTS",
"testASR": "Test ASR",
"testSuccess": "Test Successful",
"testFailed": "Test Failed",
"ttsTestText": "TTS Test Text",
"ttsTestSuccess": "TTS test successful, audio played",
"ttsTestFailed": "TTS test failed",
"asrTestSuccess": "Speech recognition successful",
"asrTestFailed": "Speech recognition failed",
"asrProcessing": "Processing...",
"asrResult": "Recognition Result",
"asrNotSupported": "Browser does not support Speech Recognition API",
"browserTTSNotSupported": "Browser does not support Speech Synthesis API",
"browserTTSNoVoices": "Current browser has no available TTS voices",
"microphoneAccessDenied": "Microphone access denied",
"microphoneAccessFailed": "Failed to access microphone",
"asrResultPlaceholder": "Recognition result will be displayed after recording",
"useThisProvider": "Use This Provider",
"fetchVoices": "Fetch Voice List",
"fetchingVoices": "Fetching...",
"voicesFetched": "Voices fetched",
"fetchVoicesFailed": "Failed to fetch voices",
"voiceApiKeyRequired": "API Key required",
"voiceBaseUrlRequired": "Base URL required",
"ttsTestTextPlaceholder": "Enter text to convert",
"ttsTestTextDefault": "Hello, this is a test speech.",
"startRecording": "Start Recording",
"stopRecording": "Stop Recording",
"recording": "Recording...",
"transcribing": "Transcribing...",
"transcriptionResult": "Transcription Result",
"noTranscriptionResult": "No transcription result",
"baseUrlOptional": "Base URL (Optional)",
"defaultValue": "Default",
"voiceMarin": "Recommended - Best Quality",
"voiceCedar": "Recommended - Best Quality",
"voiceAlloy": "Neutral, Balanced",
"voiceAsh": "Steady, Professional",
"voiceBallad": "Elegant, Lyrical",
"voiceCoral": "Warm, Friendly",
"voiceEcho": "Male, Clear",
"voiceFable": "Narrative, Vivid",
"voiceNova": "Female, Bright",
"voiceOnyx": "Male, Deep",
"voiceSage": "Wise, Composed",
"voiceShimmer": "Female, Soft",
"voiceVerse": "Natural, Smooth",
"glmVoiceTongtong": "Default voice",
"glmVoiceChuichui": "Chuichui voice",
"glmVoiceXiaochen": "Xiaochen voice",
"glmVoiceJam": "Jam voice",
"glmVoiceKazi": "Kazi voice",
"glmVoiceDouji": "Douji voice",
"glmVoiceLuodo": "Luodo voice",
"qwenVoiceCherry": "Sunny, warm and natural",
"qwenVoiceSerena": "Gentle and soft",
"qwenVoiceEthan": "Energetic and vibrant",
"qwenVoiceChelsie": "Anime virtual girlfriend",
"qwenVoiceMomo": "Playful and cheerful",
"qwenVoiceVivian": "Cute and sassy",
"qwenVoiceMoon": "Cool and handsome",
"qwenVoiceMaia": "Intellectual and gentle",
"qwenVoiceKai": "A SPA for your ears",
"qwenVoiceNofish": "Designer who can't pronounce retroflex sounds",
"qwenVoiceBella": "Little loli who doesn't get drunk",
"qwenVoiceJennifer": "Brand-level, cinematic American female voice",
"qwenVoiceRyan": "Fast-paced, dramatic performance",
"qwenVoiceKaterina": "Mature lady with memorable rhythm",
"qwenVoiceAiden": "American boy who masters cooking",
"qwenVoiceEldricSage": "Steady and wise elder",
"qwenVoiceMia": "Gentle as spring water, well-behaved as snow",
"qwenVoiceMochi": "Smart little adult with childlike innocence",
"qwenVoiceBellona": "Loud voice, clear pronunciation, vivid characters",
"qwenVoiceVincent": "Unique hoarse voice telling tales of war and honor",
"qwenVoiceBunny": "Super cute loli",
"qwenVoiceNeil": "Professional news anchor",
"qwenVoiceElias": "Professional instructor",
"qwenVoiceArthur": "Simple voice soaked by years and dry tobacco",
"qwenVoiceNini": "Soft and sticky voice like glutinous rice cake",
"qwenVoiceEbona": "Her whisper is like a rusty key",
"qwenVoiceSeren": "Gentle and soothing voice to help you sleep",
"qwenVoicePip": "Naughty but full of childlike innocence",
"qwenVoiceStella": "Sweet confused girl voice that becomes just when shouting",
"qwenVoiceBodega": "Enthusiastic Spanish uncle",
"qwenVoiceSonrisa": "Enthusiastic Latin American lady",
"qwenVoiceAlek": "Cold of battle nation, warm under woolen coat",
"qwenVoiceDolce": "Lazy Italian uncle",
"qwenVoiceSohee": "Gentle, cheerful Korean unnie",
"qwenVoiceOnoAnna": "Mischievous childhood friend",
"qwenVoiceLenn": "Rational German youth who wears suit and listens to post-punk",
"qwenVoiceEmilien": "Romantic French big brother",
"qwenVoiceAndre": "Magnetic, natural and calm male voice",
"qwenVoiceRadioGol": "Football poet Rádio Gol!",
"qwenVoiceJada": "Lively Shanghai lady",
"qwenVoiceDylan": "Beijing boy",
"qwenVoiceLi": "Patient yoga teacher",
"qwenVoiceMarcus": "Broad face, short words, solid heart - old Shaanxi taste",
"qwenVoiceRoy": "Humorous and straightforward Taiwanese boy",
"qwenVoicePeter": "Tianjin cross-talk professional supporter",
"qwenVoiceSunny": "Sweet Sichuan girl",
"qwenVoiceEric": "Chengdu gentleman",
"qwenVoiceRocky": "Humorous Hong Kong guy",
"qwenVoiceKiki": "Sweet Hong Kong girl",
"lang_auto": "Auto Detect",
"lang_zh": "中文",
"lang_yue": "粤語",
"lang_en": "English",
"lang_ja": "日本語",
"lang_ko": "한국어",
"lang_es": "Español",
"lang_fr": "Français",
"lang_de": "Deutsch",
"lang_ru": "Русский",
"lang_ar": "العربية",
"lang_pt": "Português",
"lang_it": "Italiano",
"lang_af": "Afrikaans",
"lang_hy": "Հայերեն",
"lang_az": "Azərbaycan",
"lang_be": "Беларуская",
"lang_bs": "Bosanski",
"lang_bg": "Български",
"lang_ca": "Català",
"lang_hr": "Hrvatski",
"lang_cs": "Čeština",
"lang_da": "Dansk",
"lang_nl": "Nederlands",
"lang_et": "Eesti",
"lang_fi": "Suomi",
"lang_gl": "Galego",
"lang_el": "Ελληνικά",
"lang_he": "עברית",
"lang_hi": "हिन्दी",
"lang_hu": "Magyar",
"lang_is": "Íslenska",
"lang_id": "Bahasa Indonesia",
"lang_kn": "ಕನ್ನಡ",
"lang_kk": "Қазақша",
"lang_lv": "Latviešu",
"lang_lt": "Lietuvių",
"lang_mk": "Македонски",
"lang_ms": "Bahasa Melayu",
"lang_mr": "मराठी",
"lang_mi": "Te Reo Māori",
"lang_ne": "नेपाली",
"lang_no": "Norsk",
"lang_fa": "فارسی",
"lang_pl": "Polski",
"lang_ro": "Română",
"lang_sr": "Српски",
"lang_sk": "Slovenčina",
"lang_sl": "Slovenščina",
"lang_sw": "Kiswahili",
"lang_sv": "Svenska",
"lang_tl": "Tagalog",
"lang_fil": "Filipino",
"lang_ta": "தமிழ்",
"lang_th": "ไทย",
"lang_tr": "Türkçe",
"lang_uk": "Українська",
"lang_ur": "اردو",
"lang_vi": "Tiếng Việt",
"lang_cy": "Cymraeg",
"lang_zh-CN": "中文(简体,中国)",
"lang_zh-TW": "中文(繁體,台灣)",
"lang_zh-HK": "粵語(香港)",
"lang_yue-Hant-HK": "粵語(繁體)",
"lang_en-US": "English (United States)",
"lang_en-GB": "English (United Kingdom)",
"lang_en-AU": "English (Australia)",
"lang_en-CA": "English (Canada)",
"lang_en-IN": "English (India)",
"lang_en-NZ": "English (New Zealand)",
"lang_en-ZA": "English (South Africa)",
"lang_ja-JP": "日本語(日本)",
"lang_ko-KR": "한국어(대한민국)",
"lang_de-DE": "Deutsch (Deutschland)",
"lang_fr-FR": "Français (France)",
"lang_es-ES": "Español (España)",
"lang_es-MX": "Español (México)",
"lang_es-AR": "Español (Argentina)",
"lang_es-CO": "Español (Colombia)",
"lang_it-IT": "Italiano (Italia)",
"lang_pt-BR": "Português (Brasil)",
"lang_pt-PT": "Português (Portugal)",
"lang_ru-RU": "Русский (Россия)",
"lang_nl-NL": "Nederlands (Nederland)",
"lang_pl-PL": "Polski (Polska)",
"lang_cs-CZ": "Čeština (Česko)",
"lang_da-DK": "Dansk (Danmark)",
"lang_fi-FI": "Suomi (Suomi)",
"lang_sv-SE": "Svenska (Sverige)",
"lang_no-NO": "Norsk (Norge)",
"lang_tr-TR": "Türkçe (Türkiye)",
"lang_el-GR": "Ελληνικά (Ελλάδα)",
"lang_hu-HU": "Magyar (Magyarország)",
"lang_ro-RO": "Română (România)",
"lang_sk-SK": "Slovenčina (Slovensko)",
"lang_bg-BG": "Български (България)",
"lang_hr-HR": "Hrvatski (Hrvatska)",
"lang_ca-ES": "Català (Espanya)",
"lang_ar-SA": "العربية (السعودية)",
"lang_ar-EG": "العربية (مصر)",
"lang_he-IL": "עברית (ישראל)",
"lang_hi-IN": "हिन्दी (भारत)",
"lang_th-TH": "ไทย (ประเทศไทย)",
"lang_vi-VN": "Tiếng Việt (Việt Nam)",
"lang_id-ID": "Bahasa Indonesia (Indonesia)",
"lang_ms-MY": "Bahasa Melayu (Malaysia)",
"lang_fil-PH": "Filipino (Pilipinas)",
"lang_af-ZA": "Afrikaans (Suid-Afrika)",
"lang_uk-UA": "Українська (Україна)",
"pdfSettings": "PDF Parsing",
"pdfParsingSettings": "PDF Parsing Settings",
"pdfDescription": "Choose PDF parsing engine with support for text extraction, image processing, and table recognition",
"pdfProvider": "PDF Parser",
"pdfFeatures": "Supported Features",
"pdfApiKey": "API Key",
"pdfBaseUrl": "Base URL",
"mineruDescription": "MinerU is a commercial PDF parsing service that supports advanced features such as table extraction, formula recognition, and layout analysis.",
"mineruApiKeyRequired": "You need to apply for an API Key on the MinerU website before use.",
"mineruWarning": "Warning",
"mineruCostWarning": "MinerU is a commercial service and may incur fees. Please check the MinerU website for pricing details.",
"enterMinerUApiKey": "Enter MinerU API Key",
"mineruLocalDescription": "MinerU supports local deployment with advanced PDF parsing (tables, formulas, layout analysis). Requires deploying MinerU service first.",
"mineruServerAddress": "Local MinerU server address (e.g., http://localhost:8080)",
"mineruApiKeyOptional": "Only required if server has authentication enabled",
"mineruCloudApiKeyPlaceholder": "Enter MinerU Cloud API Key",
"optionalApiKey": "Optional API Key",
"featureText": "Text Extraction",
"featureImages": "Image Extraction",
"featureTables": "Table Extraction",
"featureFormulas": "Formula Recognition",
"featureLayoutAnalysis": "Layout Analysis",
"featureMetadata": "Metadata",
"enableImageGeneration": "Enable AI Image Generation",
"imageGenerationDisabledHint": "When enabled, images will be auto-generated during course creation",
"imageSettings": "Image Generation",
"imageSection": "Text to Image",
"imageProvider": "Image Generation Provider",
"imageModel": "Image Generation Model",
"providerSeedream": "Seedream (ByteDance)",
"providerOpenAIImage": "OpenAI Image",
"providerQwenImage": "Qwen Image (Alibaba)",
"providerNanoBanana": "Nano Banana (Gemini)",
"providerMiniMaxImage": "MiniMax Image",
"providerGrokImage": "Grok Image (xAI)",
"testImageGeneration": "Test Image Generation",
"testImageConnectivity": "Test Connection",
"imageConnectivitySuccess": "Image service connected successfully",
"imageConnectivityFailed": "Image service connection failed",
"imageTestSuccess": "Image generation test succeeded",
"imageTestFailed": "Image generation test failed",
"imageTestPromptPlaceholder": "Enter image description to test",
"imageTestPromptDefault": "A cute cat sitting on a desk",
"imageGenerating": "Generating image...",
"imageGenerationFailed": "Image generation failed",
"enableVideoGeneration": "Enable AI Video Generation",
"videoGenerationDisabledHint": "When enabled, videos will be auto-generated during course creation",
"videoSettings": "Video Generation",
"videoSection": "Text to Video",
"videoProvider": "Video Generation Provider",
"videoModel": "Video Generation Model",
"providerSeedance": "Seedance (ByteDance)",
"providerKling": "Kling (Kuaishou)",
"providerVeo": "Veo (Google)",
"providerSora": "Sora (OpenAI)",
"providerMiniMaxVideo": "MiniMax Video",
"providerGrokVideo": "Grok Video (xAI)",
"testVideoGeneration": "Test Video Generation",
"testVideoConnectivity": "Test Connection",
"videoConnectivitySuccess": "Video service connected successfully",
"videoConnectivityFailed": "Video service connection failed",
"testingConnection": "Testing...",
"videoTestSuccess": "Video generation test succeeded",
"videoTestFailed": "Video generation test failed",
"videoTestPromptDefault": "A cute cat walking on a desk",
"videoGenerating": "Generating video (est. 1-2 min)...",
"videoGenerationWarning": "Video generation usually takes 1-2 minutes, please be patient",
"mediaRetry": "Retry",
"mediaContentSensitive": "Sorry, this content triggered a safety check.",
"mediaGenerationDisabled": "Generation disabled in settings",
"singleAgent": "Single Agent",
"multiAgent": "Multi-Agent",
"selectAgents": "Select Agents",
"noVisionWarning": "Current model does not support vision. Images can still be placed in slides, but the model cannot understand image content to optimize selection and layout",
"serverConfigured": "Server",
"serverConfiguredNotice": "Admin has configured an API key for this provider on the server. You can use it directly or enter your own key to override.",
"optionalOverride": "Optional — leave empty to use server config",
"setupNeeded": "Setup required",
"modelNotConfigured": "Please select a model to get started",
"dangerZone": "Danger Zone",
"clearCache": "Clear Local Cache",
"clearCacheDescription": "Delete all locally stored data, including classroom records, chat history, audio cache, and app settings. This action cannot be undone.",
"clearCacheConfirmTitle": "Are you sure you want to clear all cache?",
"clearCacheConfirmDescription": "This will permanently delete all of the following data and cannot be recovered:",
"clearCacheConfirmItems": "Classrooms & scenes, Chat history, Audio & image cache, App settings & preferences",
"clearCacheConfirmInput": "Type \"DELETE\" to continue",
"clearCacheConfirmPhrase": "DELETE",
"clearCacheButton": "Permanently Delete All Data",
"clearCacheSuccess": "Cache cleared, page will refresh shortly",
"clearCacheFailed": "Failed to clear cache, please try again",
"webSearchSettings": "Web Search",
"webSearchApiKey": "Tavily API Key",
"webSearchApiKeyPlaceholder": "Enter your Tavily API Key",
"webSearchApiKeyPlaceholderServer": "Server key configured, optionally override",
"webSearchApiKeyHint": "Get an API key from tavily.com for web search",
"webSearchBaseUrl": "Base URL",
"webSearchServerConfigured": "Server-side Tavily API key is configured",
"optional": "Optional"
},
"profile": {
"title": "Profile",
"defaultNickname": "Learner",
"chooseAvatar": "Choose Avatar",
"uploadAvatar": "Upload",
"bioPlaceholder": "Tell us about yourself — the AI teacher will personalize lessons for you...",
"avatarHint": "Your avatar will appear in classroom discussions and chats",
"fileTooLarge": "Image too large — please choose one under 5 MB",
"invalidFileType": "Please select an image file",
"editTooltip": "Click to edit profile"
},
"media": {
"imageCapability": "Image Generation",
"imageHint": "Generate images in slides",
"videoCapability": "Video Generation",
"videoHint": "Generate videos in slides",
"ttsCapability": "Text-to-Speech",
"ttsHint": "AI teacher speaks aloud",
"asrCapability": "Speech Recognition",
"asrHint": "Voice input for discussion",
"provider": "Provider",
"model": "Model",
"voice": "Voice",
"speed": "Speed",
"language": "Language"
},
"accessCode": {
"title": "Enter Access Code",
"placeholder": "Access code",
"error": "Invalid access code. Please try again."
}
}