en-US.json 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879
  1. {
  2. "common": {
  3. "you": "You",
  4. "confirm": "Confirm",
  5. "cancel": "Cancel",
  6. "loading": "Loading..."
  7. },
  8. "home": {
  9. "slogan": "Generative Learning in Multi-Agent Interactive Classroom",
  10. "greetingWithName": "Hi, {{name}}"
  11. },
  12. "toolbar": {
  13. "languageHint": "Course will be generated in this language",
  14. "pdfParser": "Parser",
  15. "pdfUpload": "Upload PDF",
  16. "removePdf": "Remove file",
  17. "webSearchOn": "Enabled",
  18. "webSearchOff": "Click to enable",
  19. "webSearchDesc": "Search the web for up-to-date information before generation",
  20. "webSearchProvider": "Search engine",
  21. "webSearchNoProvider": "Configure search API key in Settings",
  22. "selectProvider": "Select provider",
  23. "configureProvider": "Set up model",
  24. "configureProviderHint": "Configure at least one model provider to generate courses",
  25. "enterClassroom": "Enter Classroom",
  26. "advancedSettings": "Advanced Settings",
  27. "ttsTitle": "Text-to-Speech",
  28. "ttsHint": "Choose a voice for the AI teacher",
  29. "ttsPreview": "Preview",
  30. "ttsPreviewing": "Playing..."
  31. },
  32. "export": {
  33. "pptx": "Export PPTX",
  34. "resourcePack": "Export Resource Pack",
  35. "resourcePackDesc": "PPTX + interactive pages",
  36. "exporting": "Exporting...",
  37. "exportSuccess": "Export successful",
  38. "exportFailed": "Export failed"
  39. },
  40. "chat": {
  41. "lecture": "Lecture",
  42. "noConversations": "No conversations",
  43. "startConversation": "Type a message below to begin chatting",
  44. "noMessages": "No messages yet",
  45. "ended": "ended",
  46. "unknown": "Unknown",
  47. "stopDiscussion": "Stop Discussion",
  48. "endQA": "End Q&A",
  49. "tabs": {
  50. "lecture": "Notes",
  51. "chat": "Chat"
  52. },
  53. "lectureNotes": {
  54. "empty": "Notes will appear here after lecture playback",
  55. "emptyHint": "Press play to start the lecture",
  56. "pageLabel": "Page {{n}}",
  57. "currentPage": "Current"
  58. },
  59. "badge": {
  60. "qa": "Q&A",
  61. "discussion": "DISC",
  62. "lecture": "LEC"
  63. }
  64. },
  65. "actions": {
  66. "names": {
  67. "spotlight": "Spotlight",
  68. "laser": "Laser",
  69. "wb_open": "Open Whiteboard",
  70. "wb_draw_text": "Whiteboard Text",
  71. "wb_draw_shape": "Whiteboard Shape",
  72. "wb_draw_chart": "Whiteboard Chart",
  73. "wb_draw_latex": "Whiteboard Formula",
  74. "wb_draw_table": "Whiteboard Table",
  75. "wb_draw_line": "Whiteboard Line",
  76. "wb_clear": "Clear Whiteboard",
  77. "wb_delete": "Delete Element",
  78. "wb_close": "Close Whiteboard",
  79. "discussion": "Discussion"
  80. },
  81. "status": {
  82. "inputStreaming": "Waiting",
  83. "inputAvailable": "Executing",
  84. "outputAvailable": "Completed",
  85. "outputError": "Error",
  86. "outputDenied": "Denied",
  87. "running": "Executing",
  88. "result": "Completed",
  89. "error": "Error"
  90. }
  91. },
  92. "agentBar": {
  93. "readyToLearn": "Ready to learn together?",
  94. "expandedTitle": "Classroom Role Config",
  95. "configTooltip": "Click to configure classroom roles",
  96. "voiceLabel": "Voice",
  97. "voiceLoading": "Loading...",
  98. "voiceAutoAssign": "Voices will be auto-assigned"
  99. },
  100. "proactiveCard": {
  101. "discussion": "Discussion",
  102. "join": "Join",
  103. "skip": "Skip",
  104. "pause": "Pause",
  105. "resume": "Resume"
  106. },
  107. "voice": {
  108. "startListening": "Voice input",
  109. "stopListening": "Stop recording"
  110. },
  111. "stage": {
  112. "currentScene": "Current Scene",
  113. "generating": "Generating...",
  114. "paused": "Paused",
  115. "generationFailed": "Generation failed",
  116. "confirmSwitchTitle": "Switch Scene",
  117. "confirmSwitchMessage": "A topic is currently in progress. Switching scenes will end the current topic. Are you sure?",
  118. "generatingNextPage": "Scene is being generated, please wait...",
  119. "fullscreen": "Fullscreen",
  120. "exitFullscreen": "Exit Fullscreen"
  121. },
  122. "whiteboard": {
  123. "title": "Interactive Whiteboard",
  124. "open": "Open Whiteboard",
  125. "clear": "Clear Whiteboard",
  126. "minimize": "Minimize Whiteboard",
  127. "ready": "Whiteboard is ready",
  128. "readyHint": "Elements will appear here when added by AI",
  129. "clearSuccess": "Whiteboard cleared successfully",
  130. "clearError": "Failed to clear whiteboard: ",
  131. "resetView": "Reset View",
  132. "restoreError": "Failed to restore whiteboard: ",
  133. "history": "History",
  134. "restore": "Restore",
  135. "noHistory": "No history yet",
  136. "restored": "Whiteboard restored",
  137. "elementCount": "{{count}} elements"
  138. },
  139. "quiz": {
  140. "title": "Quiz",
  141. "subtitle": "Test your knowledge",
  142. "questionsCount": "questions",
  143. "totalPrefix": "",
  144. "pointsSuffix": "pts",
  145. "startQuiz": "Start Quiz",
  146. "multipleChoiceHint": "(Multiple choice — select all correct answers)",
  147. "inputPlaceholder": "Type your answer here...",
  148. "charCount": "chars",
  149. "yourAnswer": "Your answer:",
  150. "notAnswered": "Not answered",
  151. "aiComment": "AI Feedback",
  152. "singleChoice": "Single",
  153. "multipleChoice": "Multiple",
  154. "shortAnswer": "Short answer",
  155. "analysis": "Analysis: ",
  156. "excellent": "Excellent!",
  157. "keepGoing": "Keep going!",
  158. "needsReview": "Needs review",
  159. "correct": "correct",
  160. "incorrect": "incorrect",
  161. "answering": "In Progress",
  162. "submitAnswers": "Submit Answers",
  163. "aiGrading": "AI is grading...",
  164. "aiGradingWait": "Please wait, analyzing your answers",
  165. "quizReport": "Quiz Report",
  166. "retry": "Retry"
  167. },
  168. "roundtable": {
  169. "teacher": "TEACHER",
  170. "you": "YOU",
  171. "inputPlaceholder": "Type your message...",
  172. "listening": "Listening...",
  173. "processing": "Processing...",
  174. "noSpeechDetected": "No speech detected, please try again",
  175. "discussionEnded": "Discussion ended",
  176. "qaEnded": "Q&A ended",
  177. "thinking": "Thinking",
  178. "yourTurn": "Your turn",
  179. "stopDiscussion": "Stop Discussion",
  180. "autoPlay": "Auto-play",
  181. "autoPlayOff": "Stop auto-play",
  182. "speed": "Speed",
  183. "voiceInput": "Voice input",
  184. "voiceInputDisabled": "Voice input disabled",
  185. "textInput": "Text input",
  186. "stopRecording": "Stop recording",
  187. "startRecording": "Start recording"
  188. },
  189. "pbl": {
  190. "legacyFormat": "This PBL scene uses a legacy format. Please regenerate the course.",
  191. "emptyProject": "PBL project has not been generated yet. Please create via course generation.",
  192. "roleSelection": {
  193. "title": "Choose Your Role",
  194. "description": "Select a role to start collaborating on the project"
  195. },
  196. "workspace": {
  197. "restart": "Restart",
  198. "confirmRestart": "Reset all progress?",
  199. "confirm": "Confirm",
  200. "cancel": "Cancel"
  201. },
  202. "issueboard": {
  203. "title": "Issue Board",
  204. "noIssues": "No issues yet",
  205. "statusDone": "Done",
  206. "statusActive": "Active",
  207. "statusPending": "Pending"
  208. },
  209. "chat": {
  210. "title": "Project Discussion",
  211. "currentIssue": "Current Issue",
  212. "mentionHint": "Use @question to ask, @judge to submit for review",
  213. "placeholder": "Type a message...",
  214. "send": "Send",
  215. "welcomeMessage": "Hello! I'm your Question Agent for this issue: \"{{title}}\"\n\nTo help guide your work, I've prepared some questions for you:\n\n{{questions}}\n\nFeel free to @question me anytime if you need help or clarification!",
  216. "issueCompleteMessage": "Issue \"{{completed}}\" completed! Moving to next issue: \"{{next}}\"",
  217. "allCompleteMessage": "🎉 All issues completed! Great work on the project!"
  218. },
  219. "guide": {
  220. "howItWorks": "How it works",
  221. "help": "Help",
  222. "title": "Help",
  223. "step1": {
  224. "title": "Step 1: Choose a Role",
  225. "desc": "After the project is generated, select a role from the list (non-system roles marked with 🟢)"
  226. },
  227. "step2": {
  228. "title": "Step 2: Complete Issues",
  229. "desc": "Each issue represents a learning task:",
  230. "s1": {
  231. "title": "View current Issue",
  232. "desc": "Check the issue's title, description, and assignee"
  233. },
  234. "s2": {
  235. "title": "Get guidance",
  236. "example": "@question Where should I start?\n@question How do I implement this feature?",
  237. "desc": "The Question Agent provides guiding questions and hints (no direct answers)"
  238. },
  239. "s3": {
  240. "title": "Submit your work",
  241. "example": "@judge I'm done, please check my Notes",
  242. "desc": "The Judge Agent evaluates your work and gives feedback:",
  243. "complete": "Automatically moves to the next issue",
  244. "revision": "Improve based on feedback"
  245. }
  246. },
  247. "step3": {
  248. "title": "Step 3: Complete the Project",
  249. "desc": "When all issues are done, the system displays \"🎉 Project Complete!\""
  250. }
  251. }
  252. },
  253. "share": {
  254. "notReady": "Available after generation completes"
  255. },
  256. "classroom": {
  257. "recentClassrooms": "Recent",
  258. "today": "Today",
  259. "yesterday": "Yesterday",
  260. "daysAgo": "days ago",
  261. "slides": "slides",
  262. "nameCopied": "Name copied",
  263. "deleteConfirmTitle": "Delete",
  264. "delete": "Delete",
  265. "rename": "Rename",
  266. "renamePlaceholder": "Enter classroom name",
  267. "renameFailed": "Failed to rename classroom"
  268. },
  269. "upload": {
  270. "pdfSizeLimit": "Supports PDF files up to 50MB",
  271. "generateFailed": "Failed to generate classroom, please try again",
  272. "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\"",
  273. "requirementRequired": "Please enter course requirements",
  274. "fileTooLarge": "File too large. Please select a PDF file smaller than 50MB"
  275. },
  276. "generation": {
  277. "analyzingPdf": "Analyzing PDF Document",
  278. "analyzingPdfDesc": "Extracting document structure and content...",
  279. "pdfLoadFailed": "Failed to load PDF file, please try again",
  280. "pdfParseFailed": "PDF parsing failed",
  281. "streamNotReadable": "Unable to read generation stream",
  282. "generatingOutlines": "Drafting Course Outline",
  283. "generatingOutlinesDesc": "Structuring the learning path...",
  284. "generatingSlideContent": "Generating Page Content",
  285. "generatingSlideContentDesc": "Creating slides, quizzes, and interactive content...",
  286. "generatingActions": "Generating Teaching Actions",
  287. "generatingActionsDesc": "Orchestrating narration, spotlights, and interactions...",
  288. "generationComplete": "Generation complete!",
  289. "generationFailed": "Generation failed",
  290. "generatingCourse": "Generating course",
  291. "openingClassroom": "Opening classroom...",
  292. "outlineReady": "Course outline generated",
  293. "generatingFirstPage": "Generating first page...",
  294. "firstPageReady": "First page ready! Opening classroom...",
  295. "speechFailed": "Speech generation failed",
  296. "retryScene": "Retry",
  297. "retryingScene": "Regenerating...",
  298. "backToHome": "Back to Home",
  299. "sessionNotFound": "Session Not Found",
  300. "sessionNotFoundDesc": "Please fill in course requirements to start the generation process.",
  301. "goBackAndRetry": "Go Back and Retry",
  302. "classroomReady": "Your personalized AI learning environment has been generated successfully.",
  303. "aiWorking": "AI Agents Working...",
  304. "textTruncated": "Document text is long, using first {{n}} characters for generation",
  305. "imageTruncated": "{{total}} images found, exceeding the {{max}} image limit. Extra images will use text descriptions only",
  306. "agentGeneration": "Generating Classroom Roles",
  307. "agentGenerationDesc": "Generating roles based on course content...",
  308. "agentRevealTitle": "Your Classroom Roles",
  309. "viewAgents": "View Roles",
  310. "continue": "Continue",
  311. "outlineRetrying": "Outline generation issue, retrying...",
  312. "outlineEmptyResponse": "Model returned no valid outlines. Please check model configuration and try again",
  313. "outlineGenerateFailed": "Outline generation failed, please try again later",
  314. "webSearching": "Web Search",
  315. "webSearchingDesc": "Searching the web for up-to-date information",
  316. "webSearchFailed": "Web search failed"
  317. },
  318. "settings": {
  319. "title": "Settings",
  320. "description": "Configure application settings",
  321. "language": "Language",
  322. "languageDesc": "Select interface language",
  323. "theme": "Theme",
  324. "themeDesc": "Select theme mode (Light/Dark/System)",
  325. "themeOptions": {
  326. "light": "Light",
  327. "dark": "Dark",
  328. "system": "System"
  329. },
  330. "apiKey": "API Key",
  331. "apiKeyDesc": "Configure your API key",
  332. "apiBaseUrl": "API Endpoint URL",
  333. "apiBaseUrlDesc": "Configure your API endpoint URL",
  334. "apiKeyRequired": "API key cannot be empty",
  335. "model": "Model Configuration",
  336. "modelDesc": "Configure AI models",
  337. "modelPlaceholder": "Enter or select model name",
  338. "ttsModel": "TTS Model",
  339. "ttsModelDesc": "Configure TTS models",
  340. "ttsModelPlaceholder": "Enter or select TTS model name",
  341. "ttsModelOptions": {
  342. "openaiTts": "OpenAI TTS",
  343. "azureTts": "Azure TTS"
  344. },
  345. "availableModels": "Available Models",
  346. "modelSelectedViaVoice": "Model is determined by voice selection",
  347. "testConnection": "Test Connection",
  348. "testConnectionDesc": "Test current API configuration is available",
  349. "testing": "Testing...",
  350. "agentSettings": "Agent Settings",
  351. "agentSettingsDesc": "Select the agents to participate in the conversation. Select 1 for single agent mode, select multiple for multi-agent collaborative mode.",
  352. "agentMode": "Agent Mode",
  353. "agentModePreset": "Preset",
  354. "agentModeAuto": "Auto-generate",
  355. "agentModeAutoDesc": "AI will automatically generate appropriate roles",
  356. "autoAgentCount": "Agent Count",
  357. "autoAgentCountDesc": "Number of agents to auto-generate (including teacher)",
  358. "atLeastOneAgent": "Please select at least 1 agent",
  359. "singleAgentMode": "Single Agent Mode",
  360. "directAnswer": "Direct Answer",
  361. "multiAgentMode": "Multi-Agent Mode",
  362. "agentsCollaborating": "Collaborative Discussion",
  363. "agentsCollaboratingCount": "{{count}} agents selected for collaborative discussion",
  364. "maxTurns": "Max Discussion Turns",
  365. "maxTurnsDesc": "The maximum number of discussion turns between agents (each agent completes actions and reply counts as one turn)",
  366. "priority": "Priority",
  367. "actions": "Actions",
  368. "actionCount": "{{count}} actions",
  369. "selectedAgent": "Selected Agent",
  370. "selectedAgents": "Selected Agents",
  371. "required": "Required",
  372. "agentNames": {
  373. "default-1": "AI Teacher",
  374. "default-2": "AI Assistant",
  375. "default-3": "Class Clown",
  376. "default-4": "Curious Mind",
  377. "default-5": "Note Taker",
  378. "default-6": "Deep Thinker"
  379. },
  380. "agentRoles": {
  381. "teacher": "Teacher",
  382. "assistant": "Assistant",
  383. "student": "Student"
  384. },
  385. "agentDescriptions": {
  386. "default-1": "Lead teacher with clear and structured explanations",
  387. "default-2": "Supports learning and helps clarify key points",
  388. "default-3": "Brings humor and energy to the classroom",
  389. "default-4": "Always curious, loves asking why and how",
  390. "default-5": "Diligently records and organizes class notes",
  391. "default-6": "Thinks deeply and explores the essence of topics"
  392. },
  393. "close": "Close",
  394. "save": "Save",
  395. "providers": "LLM",
  396. "addProviderDescription": "Add custom model providers to extend available AI models",
  397. "providerNames": {
  398. "openai": "OpenAI",
  399. "anthropic": "Claude",
  400. "google": "Gemini",
  401. "deepseek": "DeepSeek",
  402. "qwen": "Qwen",
  403. "kimi": "Kimi",
  404. "minimax": "MiniMax",
  405. "glm": "GLM",
  406. "siliconflow": "SiliconFlow",
  407. "doubao": "Doubao",
  408. "ollama": "Ollama (Local)"
  409. },
  410. "providerTypes": {
  411. "openai": "OpenAI Protocol",
  412. "anthropic": "Claude Protocol",
  413. "google": "Gemini Protocol"
  414. },
  415. "modelCount": "models",
  416. "modelSingular": "model",
  417. "defaultModel": "Default Model",
  418. "webSearch": "Web Search",
  419. "mcp": "MCP",
  420. "knowledgeBase": "Knowledge Base",
  421. "documentParser": "Document Parser",
  422. "conversationSettings": "Conversation",
  423. "keyboardShortcuts": "Shortcuts",
  424. "generalSettings": "General",
  425. "systemSettings": "System",
  426. "addProvider": "Add",
  427. "importFromClipboard": "Import from Clipboard",
  428. "apiSecret": "API Key",
  429. "apiHost": "Base URL",
  430. "requestUrl": "Request URL",
  431. "models": "Models",
  432. "addModel": "New",
  433. "reset": "Reset",
  434. "fetch": "Fetch",
  435. "connectionSuccess": "Connection successful",
  436. "connectionFailed": "Connection failed",
  437. "capabilities": {
  438. "vision": "Vision",
  439. "tools": "Tools",
  440. "streaming": "Streaming"
  441. },
  442. "contextWindow": "Context",
  443. "contextShort": "ctx",
  444. "outputWindow": "Output",
  445. "addProviderButton": "Add",
  446. "addProviderDialog": "Add Model Provider",
  447. "providerName": "Name",
  448. "providerNamePlaceholder": "e.g., My OpenAI Proxy",
  449. "providerNameRequired": "Please enter provider name",
  450. "providerApiMode": "API Mode",
  451. "apiModeOpenAI": "OpenAI Protocol",
  452. "apiModeAnthropic": "Claude Protocol",
  453. "apiModeGoogle": "Gemini Protocol",
  454. "defaultBaseUrl": "Default Base URL",
  455. "providerIcon": "Provider Icon URL",
  456. "requiresApiKey": "Requires API Key",
  457. "deleteProvider": "Delete Provider",
  458. "deleteProviderConfirm": "Are you sure you want to delete this provider?",
  459. "cannotDeleteBuiltIn": "Cannot delete built-in provider",
  460. "resetToDefault": "Reset to Default",
  461. "resetToDefaultDescription": "Restore model list to default configuration (API key and Base URL will be preserved)",
  462. "resetConfirmDescription": "This will remove all custom models and restore the built-in default model list. API key and Base URL will be preserved.",
  463. "confirmReset": "Confirm Reset",
  464. "resetSuccess": "Successfully reset to default configuration",
  465. "saveSuccess": "Settings saved",
  466. "saveFailed": "Failed to save settings, please try again",
  467. "cannotDeleteBuiltInModel": "Cannot delete built-in model",
  468. "cannotEditBuiltInModel": "Cannot edit built-in model",
  469. "modelIdRequired": "Please enter model ID",
  470. "noModelsAvailable": "No models available for testing",
  471. "providerMetadata": "Provider Metadata",
  472. "editModel": "Edit Model",
  473. "editModelDescription": "Edit model configuration and capabilities",
  474. "addNewModel": "New Model",
  475. "addNewModelDescription": "Add a new model configuration",
  476. "modelId": "Model ID",
  477. "modelIdPlaceholder": "e.g., gpt-4o",
  478. "modelName": "Display Name",
  479. "modelNamePlaceholder": "Optional",
  480. "modelCapabilities": "Capabilities",
  481. "advancedSettings": "Advanced Settings",
  482. "contextWindowLabel": "Context Window",
  483. "contextWindowPlaceholder": "e.g., 128000",
  484. "outputWindowLabel": "Max Output Tokens",
  485. "outputWindowPlaceholder": "e.g., 4096",
  486. "testModel": "Test Model",
  487. "deleteModel": "Delete",
  488. "cancelEdit": "Cancel",
  489. "saveModel": "Save",
  490. "modelsManagementDescription": "Manage models for this provider. To select the active model, go to \"General\".",
  491. "howToUse": "How to Use",
  492. "step1ConfigureProvider": "Go to \"Model Providers\", select or add a provider, and configure connection settings (API key, Base URL, etc.)",
  493. "step2SelectModel": "Select the model you want to use in \"Active Model\" below",
  494. "step3StartUsing": "After saving, the system will use your selected model",
  495. "activeModel": "Active Model",
  496. "activeModelDescription": "Select the model for AI conversations and content generation",
  497. "selectModel": "Select Model",
  498. "searchModels": "Search models",
  499. "noModelsFound": "No matching models found",
  500. "noConfiguredProviders": "No configured providers",
  501. "configureProvidersFirst": "Please configure provider connection settings in \"Model Providers\" on the left",
  502. "currentlyUsing": "Currently using",
  503. "ttsSettings": "Text-to-Speech",
  504. "asrSettings": "Speech Recognition",
  505. "audioSettings": "Audio Settings",
  506. "ttsSection": "Text-to-Speech (TTS)",
  507. "asrSection": "Automatic Speech Recognition (ASR)",
  508. "ttsDescription": "TTS (Text-to-Speech) - Convert text to speech",
  509. "asrDescription": "ASR (Automatic Speech Recognition) - Convert speech to text",
  510. "enableTTS": "Enable Text-to-Speech",
  511. "ttsEnabledDescription": "When enabled, speech audio will be generated during course creation",
  512. "ttsVoiceConfigHint": "Per-agent voice can be configured in \"Classroom Role Config\" on the homepage",
  513. "enableASR": "Enable Speech Recognition",
  514. "asrEnabledDescription": "When enabled, students can use microphone for voice input",
  515. "ttsProvider": "TTS Provider",
  516. "ttsLanguageFilter": "Language Filter",
  517. "allLanguages": "All Languages",
  518. "ttsVoice": "Voice",
  519. "ttsSpeed": "Speed",
  520. "ttsBaseUrl": "Base URL",
  521. "ttsApiKey": "API Key",
  522. "doubaoAppId": "App ID",
  523. "doubaoAccessKey": "Access Key",
  524. "asrProvider": "ASR Provider",
  525. "asrLanguage": "Recognition Language",
  526. "asrBaseUrl": "Base URL",
  527. "asrApiKey": "API Key",
  528. "enterApiKey": "Enter API Key",
  529. "enterCustomBaseUrl": "Enter custom Base URL",
  530. "browserNativeNote": "Browser Native ASR requires no configuration and is completely free",
  531. "providerOpenAITTS": "OpenAI TTS (gpt-4o-mini-tts)",
  532. "providerAzureTTS": "Azure TTS",
  533. "providerGLMTTS": "GLM TTS",
  534. "providerQwenTTS": "Qwen TTS (Alibaba Cloud Bailian)",
  535. "providerDoubaoTTS": "Doubao TTS 2.0 (Volcengine)",
  536. "providerElevenLabsTTS": "ElevenLabs TTS",
  537. "providerMiniMaxTTS": "MiniMax TTS",
  538. "providerBrowserNativeTTS": "Browser Native TTS",
  539. "providerOpenAIWhisper": "OpenAI ASR (gpt-4o-mini-transcribe)",
  540. "providerBrowserNative": "Browser Native ASR",
  541. "providerQwenASR": "Qwen ASR (Alibaba Cloud Bailian)",
  542. "providerUnpdf": "unpdf (Built-in)",
  543. "providerMinerU": "MinerU",
  544. "browserNativeTTSNote": "Browser Native TTS requires no configuration and is completely free, using system built-in voices",
  545. "testTTS": "Test TTS",
  546. "testASR": "Test ASR",
  547. "testSuccess": "Test Successful",
  548. "testFailed": "Test Failed",
  549. "ttsTestText": "TTS Test Text",
  550. "ttsTestSuccess": "TTS test successful, audio played",
  551. "ttsTestFailed": "TTS test failed",
  552. "asrTestSuccess": "Speech recognition successful",
  553. "asrTestFailed": "Speech recognition failed",
  554. "asrResult": "Recognition Result",
  555. "asrNotSupported": "Browser does not support Speech Recognition API",
  556. "browserTTSNotSupported": "Browser does not support Speech Synthesis API",
  557. "browserTTSNoVoices": "Current browser has no available TTS voices",
  558. "microphoneAccessDenied": "Microphone access denied",
  559. "microphoneAccessFailed": "Failed to access microphone",
  560. "asrResultPlaceholder": "Recognition result will be displayed after recording",
  561. "useThisProvider": "Use This Provider",
  562. "fetchVoices": "Fetch Voice List",
  563. "fetchingVoices": "Fetching...",
  564. "voicesFetched": "Voices fetched",
  565. "fetchVoicesFailed": "Failed to fetch voices",
  566. "voiceApiKeyRequired": "API Key required",
  567. "voiceBaseUrlRequired": "Base URL required",
  568. "ttsTestTextPlaceholder": "Enter text to convert",
  569. "ttsTestTextDefault": "Hello, this is a test speech.",
  570. "startRecording": "Start Recording",
  571. "stopRecording": "Stop Recording",
  572. "recording": "Recording...",
  573. "transcribing": "Transcribing...",
  574. "transcriptionResult": "Transcription Result",
  575. "noTranscriptionResult": "No transcription result",
  576. "baseUrlOptional": "Base URL (Optional)",
  577. "defaultValue": "Default",
  578. "voiceMarin": "Recommended - Best Quality",
  579. "voiceCedar": "Recommended - Best Quality",
  580. "voiceAlloy": "Neutral, Balanced",
  581. "voiceAsh": "Steady, Professional",
  582. "voiceBallad": "Elegant, Lyrical",
  583. "voiceCoral": "Warm, Friendly",
  584. "voiceEcho": "Male, Clear",
  585. "voiceFable": "Narrative, Vivid",
  586. "voiceNova": "Female, Bright",
  587. "voiceOnyx": "Male, Deep",
  588. "voiceSage": "Wise, Composed",
  589. "voiceShimmer": "Female, Soft",
  590. "voiceVerse": "Natural, Smooth",
  591. "glmVoiceTongtong": "Default voice",
  592. "glmVoiceChuichui": "Chuichui voice",
  593. "glmVoiceXiaochen": "Xiaochen voice",
  594. "glmVoiceJam": "Jam voice",
  595. "glmVoiceKazi": "Kazi voice",
  596. "glmVoiceDouji": "Douji voice",
  597. "glmVoiceLuodo": "Luodo voice",
  598. "qwenVoiceCherry": "Sunny, warm and natural",
  599. "qwenVoiceSerena": "Gentle and soft",
  600. "qwenVoiceEthan": "Energetic and vibrant",
  601. "qwenVoiceChelsie": "Anime virtual girlfriend",
  602. "qwenVoiceMomo": "Playful and cheerful",
  603. "qwenVoiceVivian": "Cute and sassy",
  604. "qwenVoiceMoon": "Cool and handsome",
  605. "qwenVoiceMaia": "Intellectual and gentle",
  606. "qwenVoiceKai": "A SPA for your ears",
  607. "qwenVoiceNofish": "Designer who can't pronounce retroflex sounds",
  608. "qwenVoiceBella": "Little loli who doesn't get drunk",
  609. "qwenVoiceJennifer": "Brand-level, cinematic American female voice",
  610. "qwenVoiceRyan": "Fast-paced, dramatic performance",
  611. "qwenVoiceKaterina": "Mature lady with memorable rhythm",
  612. "qwenVoiceAiden": "American boy who masters cooking",
  613. "qwenVoiceEldricSage": "Steady and wise elder",
  614. "qwenVoiceMia": "Gentle as spring water, well-behaved as snow",
  615. "qwenVoiceMochi": "Smart little adult with childlike innocence",
  616. "qwenVoiceBellona": "Loud voice, clear pronunciation, vivid characters",
  617. "qwenVoiceVincent": "Unique hoarse voice telling tales of war and honor",
  618. "qwenVoiceBunny": "Super cute loli",
  619. "qwenVoiceNeil": "Professional news anchor",
  620. "qwenVoiceElias": "Professional instructor",
  621. "qwenVoiceArthur": "Simple voice soaked by years and dry tobacco",
  622. "qwenVoiceNini": "Soft and sticky voice like glutinous rice cake",
  623. "qwenVoiceEbona": "Her whisper is like a rusty key",
  624. "qwenVoiceSeren": "Gentle and soothing voice to help you sleep",
  625. "qwenVoicePip": "Naughty but full of childlike innocence",
  626. "qwenVoiceStella": "Sweet confused girl voice that becomes just when shouting",
  627. "qwenVoiceBodega": "Enthusiastic Spanish uncle",
  628. "qwenVoiceSonrisa": "Enthusiastic Latin American lady",
  629. "qwenVoiceAlek": "Cold of battle nation, warm under woolen coat",
  630. "qwenVoiceDolce": "Lazy Italian uncle",
  631. "qwenVoiceSohee": "Gentle, cheerful Korean unnie",
  632. "qwenVoiceOnoAnna": "Mischievous childhood friend",
  633. "qwenVoiceLenn": "Rational German youth who wears suit and listens to post-punk",
  634. "qwenVoiceEmilien": "Romantic French big brother",
  635. "qwenVoiceAndre": "Magnetic, natural and calm male voice",
  636. "qwenVoiceRadioGol": "Football poet Rádio Gol!",
  637. "qwenVoiceJada": "Lively Shanghai lady",
  638. "qwenVoiceDylan": "Beijing boy",
  639. "qwenVoiceLi": "Patient yoga teacher",
  640. "qwenVoiceMarcus": "Broad face, short words, solid heart - old Shaanxi taste",
  641. "qwenVoiceRoy": "Humorous and straightforward Taiwanese boy",
  642. "qwenVoicePeter": "Tianjin cross-talk professional supporter",
  643. "qwenVoiceSunny": "Sweet Sichuan girl",
  644. "qwenVoiceEric": "Chengdu gentleman",
  645. "qwenVoiceRocky": "Humorous Hong Kong guy",
  646. "qwenVoiceKiki": "Sweet Hong Kong girl",
  647. "lang_auto": "Auto Detect",
  648. "lang_zh": "中文",
  649. "lang_yue": "粤語",
  650. "lang_en": "English",
  651. "lang_ja": "日本語",
  652. "lang_ko": "한국어",
  653. "lang_es": "Español",
  654. "lang_fr": "Français",
  655. "lang_de": "Deutsch",
  656. "lang_ru": "Русский",
  657. "lang_ar": "العربية",
  658. "lang_pt": "Português",
  659. "lang_it": "Italiano",
  660. "lang_af": "Afrikaans",
  661. "lang_hy": "Հայերեն",
  662. "lang_az": "Azərbaycan",
  663. "lang_be": "Беларуская",
  664. "lang_bs": "Bosanski",
  665. "lang_bg": "Български",
  666. "lang_ca": "Català",
  667. "lang_hr": "Hrvatski",
  668. "lang_cs": "Čeština",
  669. "lang_da": "Dansk",
  670. "lang_nl": "Nederlands",
  671. "lang_et": "Eesti",
  672. "lang_fi": "Suomi",
  673. "lang_gl": "Galego",
  674. "lang_el": "Ελληνικά",
  675. "lang_he": "עברית",
  676. "lang_hi": "हिन्दी",
  677. "lang_hu": "Magyar",
  678. "lang_is": "Íslenska",
  679. "lang_id": "Bahasa Indonesia",
  680. "lang_kn": "ಕನ್ನಡ",
  681. "lang_kk": "Қазақша",
  682. "lang_lv": "Latviešu",
  683. "lang_lt": "Lietuvių",
  684. "lang_mk": "Македонски",
  685. "lang_ms": "Bahasa Melayu",
  686. "lang_mr": "मराठी",
  687. "lang_mi": "Te Reo Māori",
  688. "lang_ne": "नेपाली",
  689. "lang_no": "Norsk",
  690. "lang_fa": "فارسی",
  691. "lang_pl": "Polski",
  692. "lang_ro": "Română",
  693. "lang_sr": "Српски",
  694. "lang_sk": "Slovenčina",
  695. "lang_sl": "Slovenščina",
  696. "lang_sw": "Kiswahili",
  697. "lang_sv": "Svenska",
  698. "lang_tl": "Tagalog",
  699. "lang_fil": "Filipino",
  700. "lang_ta": "தமிழ்",
  701. "lang_th": "ไทย",
  702. "lang_tr": "Türkçe",
  703. "lang_uk": "Українська",
  704. "lang_ur": "اردو",
  705. "lang_vi": "Tiếng Việt",
  706. "lang_cy": "Cymraeg",
  707. "lang_zh-CN": "中文(简体,中国)",
  708. "lang_zh-TW": "中文(繁體,台灣)",
  709. "lang_zh-HK": "粵語(香港)",
  710. "lang_yue-Hant-HK": "粵語(繁體)",
  711. "lang_en-US": "English (United States)",
  712. "lang_en-GB": "English (United Kingdom)",
  713. "lang_en-AU": "English (Australia)",
  714. "lang_en-CA": "English (Canada)",
  715. "lang_en-IN": "English (India)",
  716. "lang_en-NZ": "English (New Zealand)",
  717. "lang_en-ZA": "English (South Africa)",
  718. "lang_ja-JP": "日本語(日本)",
  719. "lang_ko-KR": "한국어(대한민국)",
  720. "lang_de-DE": "Deutsch (Deutschland)",
  721. "lang_fr-FR": "Français (France)",
  722. "lang_es-ES": "Español (España)",
  723. "lang_es-MX": "Español (México)",
  724. "lang_es-AR": "Español (Argentina)",
  725. "lang_es-CO": "Español (Colombia)",
  726. "lang_it-IT": "Italiano (Italia)",
  727. "lang_pt-BR": "Português (Brasil)",
  728. "lang_pt-PT": "Português (Portugal)",
  729. "lang_ru-RU": "Русский (Россия)",
  730. "lang_nl-NL": "Nederlands (Nederland)",
  731. "lang_pl-PL": "Polski (Polska)",
  732. "lang_cs-CZ": "Čeština (Česko)",
  733. "lang_da-DK": "Dansk (Danmark)",
  734. "lang_fi-FI": "Suomi (Suomi)",
  735. "lang_sv-SE": "Svenska (Sverige)",
  736. "lang_no-NO": "Norsk (Norge)",
  737. "lang_tr-TR": "Türkçe (Türkiye)",
  738. "lang_el-GR": "Ελληνικά (Ελλάδα)",
  739. "lang_hu-HU": "Magyar (Magyarország)",
  740. "lang_ro-RO": "Română (România)",
  741. "lang_sk-SK": "Slovenčina (Slovensko)",
  742. "lang_bg-BG": "Български (България)",
  743. "lang_hr-HR": "Hrvatski (Hrvatska)",
  744. "lang_ca-ES": "Català (Espanya)",
  745. "lang_ar-SA": "العربية (السعودية)",
  746. "lang_ar-EG": "العربية (مصر)",
  747. "lang_he-IL": "עברית (ישראל)",
  748. "lang_hi-IN": "हिन्दी (भारत)",
  749. "lang_th-TH": "ไทย (ประเทศไทย)",
  750. "lang_vi-VN": "Tiếng Việt (Việt Nam)",
  751. "lang_id-ID": "Bahasa Indonesia (Indonesia)",
  752. "lang_ms-MY": "Bahasa Melayu (Malaysia)",
  753. "lang_fil-PH": "Filipino (Pilipinas)",
  754. "lang_af-ZA": "Afrikaans (Suid-Afrika)",
  755. "lang_uk-UA": "Українська (Україна)",
  756. "pdfSettings": "PDF Parsing",
  757. "pdfParsingSettings": "PDF Parsing Settings",
  758. "pdfDescription": "Choose PDF parsing engine with support for text extraction, image processing, and table recognition",
  759. "pdfProvider": "PDF Parser",
  760. "pdfFeatures": "Supported Features",
  761. "pdfApiKey": "API Key",
  762. "pdfBaseUrl": "Base URL",
  763. "mineruDescription": "MinerU is a commercial PDF parsing service that supports advanced features such as table extraction, formula recognition, and layout analysis.",
  764. "mineruApiKeyRequired": "You need to apply for an API Key on the MinerU website before use.",
  765. "mineruWarning": "Warning",
  766. "mineruCostWarning": "MinerU is a commercial service and may incur fees. Please check the MinerU website for pricing details.",
  767. "enterMinerUApiKey": "Enter MinerU API Key",
  768. "mineruLocalDescription": "MinerU supports local deployment with advanced PDF parsing (tables, formulas, layout analysis). Requires deploying MinerU service first.",
  769. "mineruServerAddress": "Local MinerU server address (e.g., http://localhost:8080)",
  770. "mineruApiKeyOptional": "Only required if server has authentication enabled",
  771. "optionalApiKey": "Optional API Key",
  772. "featureText": "Text Extraction",
  773. "featureImages": "Image Extraction",
  774. "featureTables": "Table Extraction",
  775. "featureFormulas": "Formula Recognition",
  776. "featureLayoutAnalysis": "Layout Analysis",
  777. "featureMetadata": "Metadata",
  778. "enableImageGeneration": "Enable AI Image Generation",
  779. "imageGenerationDisabledHint": "When enabled, images will be auto-generated during course creation",
  780. "imageSettings": "Image Generation",
  781. "imageSection": "Text to Image",
  782. "imageProvider": "Image Generation Provider",
  783. "imageModel": "Image Generation Model",
  784. "providerSeedream": "Seedream (ByteDance)",
  785. "providerQwenImage": "Qwen Image (Alibaba)",
  786. "providerNanoBanana": "Nano Banana (Gemini)",
  787. "providerMiniMaxImage": "MiniMax Image",
  788. "providerGrokImage": "Grok Image (xAI)",
  789. "testImageGeneration": "Test Image Generation",
  790. "testImageConnectivity": "Test Connection",
  791. "imageConnectivitySuccess": "Image service connected successfully",
  792. "imageConnectivityFailed": "Image service connection failed",
  793. "imageTestSuccess": "Image generation test succeeded",
  794. "imageTestFailed": "Image generation test failed",
  795. "imageTestPromptPlaceholder": "Enter image description to test",
  796. "imageTestPromptDefault": "A cute cat sitting on a desk",
  797. "imageGenerating": "Generating image...",
  798. "imageGenerationFailed": "Image generation failed",
  799. "enableVideoGeneration": "Enable AI Video Generation",
  800. "videoGenerationDisabledHint": "When enabled, videos will be auto-generated during course creation",
  801. "videoSettings": "Video Generation",
  802. "videoSection": "Text to Video",
  803. "videoProvider": "Video Generation Provider",
  804. "videoModel": "Video Generation Model",
  805. "providerSeedance": "Seedance (ByteDance)",
  806. "providerKling": "Kling (Kuaishou)",
  807. "providerVeo": "Veo (Google)",
  808. "providerSora": "Sora (OpenAI)",
  809. "providerMiniMaxVideo": "MiniMax Video",
  810. "providerGrokVideo": "Grok Video (xAI)",
  811. "testVideoGeneration": "Test Video Generation",
  812. "testVideoConnectivity": "Test Connection",
  813. "videoConnectivitySuccess": "Video service connected successfully",
  814. "videoConnectivityFailed": "Video service connection failed",
  815. "testingConnection": "Testing...",
  816. "videoTestSuccess": "Video generation test succeeded",
  817. "videoTestFailed": "Video generation test failed",
  818. "videoTestPromptDefault": "A cute cat walking on a desk",
  819. "videoGenerating": "Generating video (est. 1-2 min)...",
  820. "videoGenerationWarning": "Video generation usually takes 1-2 minutes, please be patient",
  821. "mediaRetry": "Retry",
  822. "mediaContentSensitive": "Sorry, this content triggered a safety check.",
  823. "mediaGenerationDisabled": "Generation disabled in settings",
  824. "singleAgent": "Single Agent",
  825. "multiAgent": "Multi-Agent",
  826. "selectAgents": "Select Agents",
  827. "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",
  828. "serverConfigured": "Server",
  829. "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.",
  830. "optionalOverride": "Optional — leave empty to use server config",
  831. "setupNeeded": "Setup required",
  832. "modelNotConfigured": "Please select a model to get started",
  833. "dangerZone": "Danger Zone",
  834. "clearCache": "Clear Local Cache",
  835. "clearCacheDescription": "Delete all locally stored data, including classroom records, chat history, audio cache, and app settings. This action cannot be undone.",
  836. "clearCacheConfirmTitle": "Are you sure you want to clear all cache?",
  837. "clearCacheConfirmDescription": "This will permanently delete all of the following data and cannot be recovered:",
  838. "clearCacheConfirmItems": "Classrooms & scenes, Chat history, Audio & image cache, App settings & preferences",
  839. "clearCacheConfirmInput": "Type \"DELETE\" to continue",
  840. "clearCacheConfirmPhrase": "DELETE",
  841. "clearCacheButton": "Permanently Delete All Data",
  842. "clearCacheSuccess": "Cache cleared, page will refresh shortly",
  843. "clearCacheFailed": "Failed to clear cache, please try again",
  844. "webSearchSettings": "Web Search",
  845. "webSearchApiKey": "Tavily API Key",
  846. "webSearchApiKeyPlaceholder": "Enter your Tavily API Key",
  847. "webSearchApiKeyPlaceholderServer": "Server key configured, optionally override",
  848. "webSearchApiKeyHint": "Get an API key from tavily.com for web search",
  849. "webSearchBaseUrl": "Base URL",
  850. "webSearchServerConfigured": "Server-side Tavily API key is configured",
  851. "optional": "Optional"
  852. },
  853. "profile": {
  854. "title": "Profile",
  855. "defaultNickname": "Learner",
  856. "chooseAvatar": "Choose Avatar",
  857. "uploadAvatar": "Upload",
  858. "bioPlaceholder": "Tell us about yourself — the AI teacher will personalize lessons for you...",
  859. "avatarHint": "Your avatar will appear in classroom discussions and chats",
  860. "fileTooLarge": "Image too large — please choose one under 5 MB",
  861. "invalidFileType": "Please select an image file",
  862. "editTooltip": "Click to edit profile"
  863. },
  864. "media": {
  865. "imageCapability": "Image Generation",
  866. "imageHint": "Generate images in slides",
  867. "videoCapability": "Video Generation",
  868. "videoHint": "Generate videos in slides",
  869. "ttsCapability": "Text-to-Speech",
  870. "ttsHint": "AI teacher speaks aloud",
  871. "asrCapability": "Speech Recognition",
  872. "asrHint": "Voice input for discussion",
  873. "provider": "Provider",
  874. "model": "Model",
  875. "voice": "Voice",
  876. "speed": "Speed",
  877. "language": "Language"
  878. }
  879. }