| { |
| "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." |
| } |
| } |
|
|