arena-learning / studyArena /lib /i18n /settings.ts
Nitish kumar
Upload folder using huggingface_hub
c20f20c verified
export const settingsZhCN = {
settings: {
title: '设置',
description: '配置应用程序设置',
language: '语言',
languageDesc: '选择界面语言',
theme: '主题',
themeDesc: '选择主题模式(浅色/深色/跟随系统)',
themeOptions: {
light: '浅色',
dark: '深色',
system: '跟随系统',
},
apiKey: 'API密钥',
apiKeyDesc: '配置你的API密钥',
apiBaseUrl: 'API端点地址',
apiBaseUrlDesc: '配置你的API端点地址',
apiKeyRequired: 'API密钥不能为空',
model: '模型配置',
modelDesc: '配置AI模型',
modelPlaceholder: '输入或选择模型名称',
ttsModel: 'TTS模型',
ttsModelDesc: '配置TTS模型',
ttsModelPlaceholder: '输入或选择TTS模型名称',
ttsModelOptions: {
openaiTts: 'OpenAI TTS',
azureTts: 'Azure TTS',
},
testConnection: '测试连接',
testConnectionDesc: '测试当前API配置是否可用',
testing: '测试中...',
agentSettings: '智能体设置',
agentSettingsDesc: '选择参与对话的智能体。选择1个为单智能体模式,选择多个为多智能体协作模式。',
agentMode: '智能体模式',
agentModePreset: '预设模式',
agentModeAuto: '自动生成',
agentModeAutoDesc: 'AI 将根据课程内容自动生成适合的课堂角色',
autoAgentCount: '生成数量',
autoAgentCountDesc: '自动生成的角色数量(包含教师)',
atLeastOneAgent: '请至少选择1个智能体',
singleAgentMode: '单智能体模式',
directAnswer: '直接回答',
multiAgentMode: '多智能体模式',
agentsCollaborating: '协作讨论',
agentsCollaboratingCount: '已选择 {count} 个智能体协作讨论',
maxTurns: '最大讨论轮数',
maxTurnsDesc: '智能体之间最多讨论多少轮(每个智能体完成动作并回复算一轮)',
priority: '优先级',
actions: '动作',
actionCount: '{count} 个动作',
selectedAgent: '选中的智能体',
selectedAgents: '选中的智能体',
required: '必选',
agentNames: {
'default-1': 'AI教师',
'default-2': 'AI助教',
'default-3': '显眼包',
'default-4': '好奇宝宝',
'default-5': '笔记员',
'default-6': '思考者',
},
agentRoles: {
teacher: '教师',
assistant: '助教',
student: '学生',
},
agentDescriptions: {
'default-1': '主讲教师,清晰有条理地讲解知识',
'default-2': '辅助讲解,帮助同学理解重点',
'default-3': '活跃气氛,用幽默让课堂更有趣',
'default-4': '充满好奇心,总爱追问为什么',
'default-5': '认真记录,整理课堂重点笔记',
'default-6': '深入思考,喜欢探讨问题本质',
},
close: '关闭',
save: '保存',
// Provider settings
providers: '语言模型',
addProviderDescription: '添加自定义模型提供方以扩展可用的AI模型',
providerNames: {
openai: 'OpenAI',
anthropic: 'Claude',
google: 'Gemini',
deepseek: 'DeepSeek',
qwen: '通义千问',
kimi: 'Kimi',
minimax: 'MiniMax',
glm: 'GLM',
siliconflow: '硅基流动',
},
providerTypes: {
openai: 'OpenAI 协议',
anthropic: 'Claude 协议',
google: 'Gemini 协议',
},
modelCount: '个模型',
modelSingular: '个模型',
defaultModel: '默认模型',
webSearch: '联网搜索',
mcp: 'MCP',
knowledgeBase: '知识库',
documentParser: '文档解析器',
conversationSettings: '对话设置',
keyboardShortcuts: '键盘快捷键',
generalSettings: '常规设置',
systemSettings: '系统设置',
addProvider: '添加',
importFromClipboard: '从剪贴板导入',
apiSecret: 'API 密钥',
apiHost: 'Base URL',
requestUrl: '请求地址',
models: '模型',
addModel: '新建',
reset: '重置',
fetch: '获取',
connectionSuccess: '连接成功',
connectionFailed: '连接失败',
// Model capabilities
capabilities: {
vision: '视觉',
tools: '工具',
streaming: '流式',
},
contextWindow: '上下文',
contextShort: '上下文',
outputWindow: '输出',
// Provider management
addProviderButton: '添加',
addProviderDialog: '添加模型提供方',
providerName: '名称',
providerNamePlaceholder: '例如:我的OpenAI代理',
providerNameRequired: '请输入提供方名称',
providerApiMode: 'API 模式',
apiModeOpenAI: 'OpenAI 协议',
apiModeAnthropic: 'Claude 协议',
apiModeGoogle: 'Gemini 协议',
defaultBaseUrl: '默认 Base URL',
providerIcon: 'Provider 图标 URL',
requiresApiKey: '需要 API 密钥',
deleteProvider: '删除提供方',
deleteProviderConfirm: '确定要删除此提供方吗?',
cannotDeleteBuiltIn: '无法删除内置提供方',
resetToDefault: '重置为默认配置',
resetToDefaultDescription: '将模型列表恢复到默认状态(保留 API 密钥和 Base URL)',
resetConfirmDescription:
'此操作将清除所有自定义模型,恢复到内置的默认模型列表。API 密钥和 Base URL 将被保留。',
confirmReset: '确认重置',
resetSuccess: '已成功重置为默认配置',
saveSuccess: '配置已保存',
saveFailed: '保存失败,请重试',
cannotDeleteBuiltInModel: '无法删除内置模型',
cannotEditBuiltInModel: '无法编辑内置模型',
modelIdRequired: '请输入模型 ID',
noModelsAvailable: '没有可用于测试的模型',
providerMetadata: 'Provider 元数据',
// Model editing
editModel: '编辑模型',
editModelDescription: '编辑模型配置和能力',
addNewModel: '新建模型',
addNewModelDescription: '添加新的模型配置',
modelId: '模型ID',
modelIdPlaceholder: '例如:gpt-4o',
modelName: '显示名称',
modelNamePlaceholder: '可选',
modelCapabilities: '能力',
advancedSettings: '高级设置',
contextWindowLabel: '上下文窗口',
contextWindowPlaceholder: '例如 128000',
outputWindowLabel: '最大输出Token数',
outputWindowPlaceholder: '例如 4096',
testModel: '测试模型',
deleteModel: '删除',
cancelEdit: '取消',
saveModel: '保存',
modelsManagementDescription:
'在此管理该提供方的模型列表。若需选择使用的模型,请前往"常规设置"。',
// General settings
howToUse: '使用说明',
step1ConfigureProvider:
'前往"模型提供方"页面,选择或添加一个提供方,配置连接信息(API 密钥、Base URL 等)',
step2SelectModel: '在下方"使用模型"中选择要使用的模型',
step3StartUsing: '保存设置后,系统将使用您选择的模型',
activeModel: '使用模型',
activeModelDescription: '选择当前用于 AI 对话和内容生成的模型',
selectModel: '选择模型',
searchModels: '搜索模型',
noModelsFound: '未找到匹配的模型',
noConfiguredProviders: '暂无已配置的提供方',
configureProvidersFirst: '请先在左侧"模型提供方"中配置提供方连接信息',
currentlyUsing: '当前使用',
// TTS settings
ttsSettings: '语音合成',
// ASR settings
asrSettings: '语音识别',
// Audio settings (legacy)
audioSettings: '音频设置',
ttsSection: '文字转语音 (TTS)',
asrSection: '语音识别 (ASR)',
ttsDescription: 'TTS (Text-to-Speech) - 将文字转换为语音',
asrDescription: 'ASR (Automatic Speech Recognition) - 将语音转换为文字',
enableTTS: '启用语音合成',
ttsEnabledDescription: '开启后,课程生成时将自动合成语音',
enableASR: '启用语音识别',
asrEnabledDescription: '开启后,学生可使用麦克风进行语音输入',
ttsProvider: 'TTS 提供商',
ttsLanguageFilter: '语言筛选',
allLanguages: '全部语言',
ttsVoice: '音色',
ttsSpeed: '语速',
ttsBaseUrl: 'Base URL',
ttsApiKey: 'API 密钥',
asrProvider: 'ASR 提供商',
asrLanguage: '识别语言',
asrBaseUrl: 'Base URL',
asrApiKey: 'API 密钥',
enterApiKey: '输入 API Key',
enterCustomBaseUrl: '输入自定义 Base URL',
browserNativeNote: '浏览器原生 ASR 无需配置,完全免费',
// Audio provider names
providerOpenAITTS: 'OpenAI TTS (gpt-4o-mini-tts)',
providerAzureTTS: 'Azure TTS',
providerGLMTTS: 'GLM TTS',
providerQwenTTS: 'Qwen TTS(阿里云百炼)',
providerBrowserNativeTTS: '浏览器原生 TTS',
providerOpenAIWhisper: 'OpenAI ASR (gpt-4o-mini-transcribe)',
providerBrowserNative: '浏览器原生 ASR',
providerQwenASR: 'Qwen ASR(阿里云百炼)',
providerUnpdf: 'unpdf(内置)',
providerMinerU: 'MinerU',
browserNativeTTSNote: '浏览器原生 TTS 无需配置,完全免费,使用系统内置语音',
testTTS: '测试 TTS',
testASR: '测试 ASR',
testSuccess: '测试成功',
testFailed: '测试失败',
ttsTestText: 'TTS 测试文本',
ttsTestSuccess: 'TTS 测试成功,音频已播放',
ttsTestFailed: 'TTS 测试失败',
asrTestSuccess: '语音识别成功',
asrTestFailed: '语音识别失败',
asrResult: '识别结果',
asrNotSupported: '浏览器不支持语音识别 API',
browserTTSNotSupported: '浏览器不支持语音合成 API',
browserTTSNoVoices: '当前浏览器没有可用的 TTS voice',
microphoneAccessDenied: '麦克风访问被拒绝',
microphoneAccessFailed: '无法访问麦克风',
asrResultPlaceholder: '录音后将显示识别结果',
useThisProvider: '使用此提供商',
fetchVoices: '获取音色列表',
fetchingVoices: '获取中...',
voicesFetched: '已获取音色',
fetchVoicesFailed: '获取音色失败',
voiceApiKeyRequired: '需要 API 密钥',
voiceBaseUrlRequired: '需要 Base URL',
ttsTestTextPlaceholder: '输入要转换的文本',
ttsTestTextDefault: '你好,这是一段测试语音。',
startRecording: '开始录音',
stopRecording: '停止录音',
recording: '录音中...',
transcribing: '识别中...',
transcriptionResult: '识别结果',
noTranscriptionResult: '无识别结果',
baseUrlOptional: 'Base URL(可选)',
defaultValue: '默认',
// TTS Voice descriptions (OpenAI)
voiceMarin: '推荐 - 最佳质量',
voiceCedar: '推荐 - 最佳质量',
voiceAlloy: '中性、平衡',
voiceAsh: '沉稳、专业',
voiceBallad: '优雅、抒情',
voiceCoral: '温暖、友好',
voiceEcho: '男性、清晰',
voiceFable: '叙事、生动',
voiceNova: '女性、明亮',
voiceOnyx: '男性、深沉',
voiceSage: '智慧、沉着',
voiceShimmer: '女性、柔和',
voiceVerse: '自然、流畅',
// TTS Voice descriptions (GLM)
glmVoiceTongtong: '默认音色',
glmVoiceChuichui: '锤锤音色',
glmVoiceXiaochen: '小陈音色',
glmVoiceJam: '动动动物圈jam音色',
glmVoiceKazi: '动动动物圈kazi音色',
glmVoiceDouji: '动动动物圈douji音色',
glmVoiceLuodo: '动动动物圈luodo音色',
// TTS Voice descriptions (Qwen)
qwenVoiceCherry: '阳光积极、亲切自然小姐姐',
qwenVoiceSerena: '温柔小姐姐',
qwenVoiceEthan: '阳光、温暖、活力、朝气',
qwenVoiceChelsie: '二次元虚拟女友',
qwenVoiceMomo: '撒娇搞怪,逗你开心',
qwenVoiceVivian: '拽拽的、可爱的小暴躁',
qwenVoiceMoon: '率性帅气',
qwenVoiceMaia: '知性与温柔的碰撞',
qwenVoiceKai: '耳朵的一场SPA',
qwenVoiceNofish: '不会翘舌音的设计师',
qwenVoiceBella: '喝酒不打醉拳的小萝莉',
qwenVoiceJennifer: '品牌级、电影质感般美语女声',
qwenVoiceRyan: '节奏拉满,戏感炸裂,真实与张力共舞',
qwenVoiceKaterina: '御姐音色,韵律回味十足',
qwenVoiceAiden: '精通厨艺的美语大男孩',
qwenVoiceEldricSage: '沉稳睿智的老者,沧桑如松却心明如镜',
qwenVoiceMia: '温顺如春水,乖巧如初雪',
qwenVoiceMochi: '聪明伶俐的小大人,童真未泯却早慧如禅',
qwenVoiceBellona: '声音洪亮,吐字清晰,人物鲜活,听得人热血沸腾',
qwenVoiceVincent: '一口独特的沙哑烟嗓,一开口便道尽了千军万马与江湖豪情',
qwenVoiceBunny: '"萌属性"爆棚的小萝莉',
qwenVoiceNeil: '专业新闻主持人',
qwenVoiceElias: '专业讲师音色',
qwenVoiceArthur: '被岁月和旱烟浸泡过的质朴嗓音',
qwenVoiceNini: '糯米糍一样又软又黏的嗓音,那一声声拉长了的"哥哥"',
qwenVoiceEbona: '她的低语像一把生锈的钥匙,缓慢转动你内心最深处的幽暗角落',
qwenVoiceSeren: '温和舒缓的声线,助你更快地进入睡眠',
qwenVoicePip: '调皮捣蛋却充满童真的他来了',
qwenVoiceStella:
'平时是甜到发腻的迷糊少女音,但在喊出"代表月亮消灭你"时,瞬间充满不容置疑的爱与正义',
qwenVoiceBodega: '热情的西班牙大叔',
qwenVoiceSonrisa: '热情开朗的拉美大姐',
qwenVoiceAlek: '一开口,是战斗民族的冷,也是毛呢大衣下的暖',
qwenVoiceDolce: '慵懒的意大利大叔',
qwenVoiceSohee: '温柔开朗,情绪丰富的韩国欧尼',
qwenVoiceOnoAnna: '鬼灵精怪的青梅竹马',
qwenVoiceLenn: '理性是底色,叛逆藏在细节里——穿西装也听后朋克的德国青年',
qwenVoiceEmilien: '浪漫的法国大哥哥',
qwenVoiceAndre: '声音磁性,自然舒服、沉稳男生',
qwenVoiceRadioGol: '足球诗人Rádio Gol!今天我要用名字为你们解说足球',
qwenVoiceJada: '风风火火的沪上阿姐',
qwenVoiceDylan: '北京胡同里长大的少年',
qwenVoiceLi: '耐心的瑜伽老师',
qwenVoiceMarcus: '面宽话短,心实声沉——老陕的味道',
qwenVoiceRoy: '诙谐直爽、市井活泼的台湾哥仔形象',
qwenVoicePeter: '天津相声,专业捧哏',
qwenVoiceSunny: '甜到你心里的川妹子',
qwenVoiceEric: '跳脱市井的成都男子',
qwenVoiceRocky: '幽默风趣的阿强',
qwenVoiceKiki: '甜美的港妹闺蜜',
// ASR Language names (native forms - autoglossonyms)
lang_auto: '自动检测',
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',
// BCP-47 format language codes (for Web Speech API)
'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': 'Українська (Україна)',
// PDF settings
pdfSettings: 'PDF 解析',
pdfParsingSettings: 'PDF 解析设置',
pdfDescription: '选择 PDF 解析引擎,支持文本提取、图片处理和表格识别',
pdfProvider: 'PDF 解析器',
pdfFeatures: '支持功能',
pdfApiKey: 'API Key',
pdfBaseUrl: 'Base URL',
mineruDescription:
'MinerU 是一个商用 PDF 解析服务,支持高级功能如表格提取、公式识别和布局分析。',
mineruApiKeyRequired: '使用前需要在 MinerU 官网申请 API Key。',
mineruWarning: '注意',
mineruCostWarning: 'MinerU 为商用服务,使用可能产生费用。请查看 MinerU 官网了解定价详情。',
enterMinerUApiKey: '输入 MinerU API Key',
mineruLocalDescription:
'MinerU 支持本地部署,提供高级 PDF 解析功能(表格、公式、布局分析)。需要先部署 MinerU 服务。',
mineruServerAddress: '本地 MinerU 服务器地址(如:http://localhost:8080)',
mineruApiKeyOptional: '仅在服务器启用认证时需要',
optionalApiKey: '可选的 API Key',
featureText: '文本提取',
featureImages: '图片提取',
featureTables: '表格提取',
featureFormulas: '公式识别',
featureLayoutAnalysis: '布局分析',
featureMetadata: '元数据',
// Image Generation settings
enableImageGeneration: '启用 AI 图片生成',
imageGenerationDisabledHint: '启用后,课程生成时将自动生成配图',
imageSettings: '图像生成',
imageSection: '文生图',
imageProvider: '图像生成提供商',
imageModel: '图像生成模型',
providerSeedream: 'Seedream(字节豆包)',
providerQwenImage: 'Qwen Image(阿里通义)',
providerNanoBanana: 'Nano Banana(Gemini)',
testImageGeneration: '测试图像生成',
testImageConnectivity: '测试连接',
imageConnectivitySuccess: '图像服务连接成功',
imageConnectivityFailed: '图像服务连接失败',
imageTestSuccess: '图像生成测试成功',
imageTestFailed: '图像生成测试失败',
imageTestPromptPlaceholder: '输入图像描述进行测试',
imageTestPromptDefault: '一只可爱的猫咪坐在书桌上',
imageGenerating: '正在生成图像...',
imageGenerationFailed: '图像生成失败',
// Video Generation settings
enableVideoGeneration: '启用 AI 视频生成',
videoGenerationDisabledHint: '启用后,课程生成时将自动生成视频',
videoSettings: '视频生成',
videoSection: '文生视频',
videoProvider: '视频生成提供商',
videoModel: '视频生成模型',
providerSeedance: 'Seedance(字节跳动)',
providerKling: '可灵(快手)',
providerVeo: 'Veo(Google)',
providerSora: 'Sora(OpenAI)',
testVideoGeneration: '测试视频生成',
testVideoConnectivity: '测试连接',
videoConnectivitySuccess: '视频服务连接成功',
videoConnectivityFailed: '视频服务连接失败',
testingConnection: '正在测试...',
videoTestSuccess: '视频生成测试成功',
videoTestFailed: '视频生成测试失败',
videoTestPromptDefault: '一只可爱的猫咪在书桌上行走',
videoGenerating: '正在生成视频(预计1-2分钟)...',
videoGenerationWarning: '视频生成通常需要1-2分钟,请耐心等待',
mediaRetry: '重试',
mediaContentSensitive: '抱歉,该内容触发了安全检查',
mediaGenerationDisabled: '已在设置中关闭生成',
// Agent settings (kept with main settings block above)
singleAgent: '单智能体模式',
multiAgent: '多智能体模式',
selectAgents: '选择智能体',
noVisionWarning:
'当前模型不支持视觉能力,图片仍可放入幻灯片,但模型无法理解图片内容来优化选择和布局',
// Server provider configuration
serverConfigured: '服务端',
serverConfiguredNotice:
'管理员已在服务端配置了此提供方的 API Key,可直接使用。也可输入自己的 Key 覆盖。',
optionalOverride: '可选,留空则使用服务端配置',
// Access code
setupNeeded: '请先完成配置',
modelNotConfigured: '请选择一个模型以开始使用',
// Clear cache
dangerZone: '危险区域',
clearCache: '清空本地缓存',
clearCacheDescription:
'删除所有本地存储的数据,包括课堂记录、对话历史、音频缓存和应用配置。此操作不可撤销。',
clearCacheConfirmTitle: '确定要清空所有缓存吗?',
clearCacheConfirmDescription: '此操作将永久删除以下所有数据,且无法恢复:',
clearCacheConfirmItems: '课堂和场景数据、对话历史记录、音频和图片缓存、应用设置和偏好',
clearCacheConfirmInput: '请输入「确认删除」以继续',
clearCacheConfirmPhrase: '确认删除',
clearCacheButton: '永久删除所有数据',
clearCacheSuccess: '缓存已清空,页面即将刷新',
clearCacheFailed: '清空缓存失败,请重试',
// Web Search settings
webSearchSettings: '网络搜索',
webSearchApiKey: 'Tavily API Key',
webSearchApiKeyPlaceholder: '输入你的 Tavily API Key',
webSearchApiKeyPlaceholderServer: '已配置服务端密钥,可选填覆盖',
webSearchApiKeyHint: '从 tavily.com 获取 API Key,用于网络搜索',
webSearchBaseUrl: 'Base URL',
webSearchServerConfigured: '服务端已配置 Tavily API Key',
optional: '可选',
},
profile: {
title: '个人资料',
defaultNickname: '同学',
chooseAvatar: '选择头像',
uploadAvatar: '上传',
bioPlaceholder: '介绍一下自己,AI老师会根据你的背景个性化教学...',
avatarHint: '你的头像将显示在课堂讨论和对话中',
fileTooLarge: '图片过大,请选择小于 5MB 的图片',
invalidFileType: '请选择图片文件',
editTooltip: '点击编辑个人资料',
},
media: {
imageCapability: '图像生成',
imageHint: '课件中生成配图',
videoCapability: '视频生成',
videoHint: '课件中生成视频',
ttsCapability: '语音合成',
ttsHint: 'AI 老师语音讲解',
asrCapability: '语音识别',
asrHint: '语音输入参与讨论',
provider: '服务商',
model: '模型',
voice: '音色',
speed: '语速',
language: '语言',
},
} as const;
export const settingsEnUS = {
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',
},
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',
// Provider settings
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',
},
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',
requestUrl: 'Request URL',
models: 'Models',
addModel: 'New',
reset: 'Reset',
fetch: 'Fetch',
connectionSuccess: 'Connection successful',
connectionFailed: 'Connection failed',
// Model capabilities
capabilities: {
vision: 'Vision',
tools: 'Tools',
streaming: 'Streaming',
},
contextWindow: 'Context',
contextShort: 'ctx',
outputWindow: 'Output',
// Provider management
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?',
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',
// Model editing
editModel: 'Edit Model',
editModelDescription: 'Edit model configuration and capabilities',
addNewModel: 'New Model',
addNewModelDescription: 'Add a new model configuration',
modelId: 'Model ID',
modelIdPlaceholder: 'e.g., gpt-4o',
modelName: 'Display Name',
modelNamePlaceholder: 'Optional',
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',
modelsManagementDescription:
'Manage models for this provider. To select the active model, go to "General".',
// General settings
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',
// TTS settings
ttsSettings: 'Text-to-Speech',
// ASR settings
asrSettings: 'Speech Recognition',
// Audio settings (legacy)
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',
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',
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',
// Audio provider names
providerOpenAITTS: 'OpenAI TTS (gpt-4o-mini-tts)',
providerAzureTTS: 'Azure TTS',
providerGLMTTS: 'GLM TTS',
providerQwenTTS: 'Qwen TTS (Alibaba Cloud Bailian)',
providerBrowserNativeTTS: 'Browser Native TTS',
providerOpenAIWhisper: 'OpenAI ASR (gpt-4o-mini-transcribe)',
providerBrowserNative: 'Browser Native ASR',
providerQwenASR: 'Qwen ASR (Alibaba Cloud Bailian)',
providerUnpdf: 'unpdf (Built-in)',
providerMinerU: 'MinerU',
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',
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',
// TTS Voice descriptions (OpenAI)
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',
// TTS Voice descriptions (GLM)
glmVoiceTongtong: 'Default voice',
glmVoiceChuichui: 'Chuichui voice',
glmVoiceXiaochen: 'Xiaochen voice',
glmVoiceJam: 'Jam voice',
glmVoiceKazi: 'Kazi voice',
glmVoiceDouji: 'Douji voice',
glmVoiceLuodo: 'Luodo voice',
// TTS Voice descriptions (Qwen)
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',
// ASR Language names (native forms - autoglossonyms)
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',
// BCP-47 format language codes (for Web Speech API)
'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': 'Українська (Україна)',
// PDF settings
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',
optionalApiKey: 'Optional API Key',
featureText: 'Text Extraction',
featureImages: 'Image Extraction',
featureTables: 'Table Extraction',
featureFormulas: 'Formula Recognition',
featureLayoutAnalysis: 'Layout Analysis',
featureMetadata: 'Metadata',
// Image Generation settings
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)',
providerQwenImage: 'Qwen Image (Alibaba)',
providerNanoBanana: 'Nano Banana (Gemini)',
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',
// Video Generation settings
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)',
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',
// Agent settings (kept with main settings block above)
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',
// Server provider configuration
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',
// Access code
setupNeeded: 'Setup required',
modelNotConfigured: 'Please select a model to get started',
// Clear cache
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',
// Web Search settings
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: 'Student',
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',
},
} as const;