import { Language, Scenario } from "../types"; export const getScenarios = (language: Language): Scenario[] => { switch(language) { case 'ja': return [ { id: 'cafe_order', title: 'カフェで注文', icon: '☕', description: '東京のカフェでコーヒーと軽食を注文する練習。', initialMessage: 'いらっしゃいませ!ご注文はお決まりですか?', role: '店員' }, { id: 'train_station', title: '駅での道案内', icon: '🚄', description: '駅員に行き先を尋ねる練習。', initialMessage: 'はい、どうされましたか?', role: '駅員' }, { id: 'conbini', title: 'コンビニでの買い物', icon: '🏪', description: 'コンビニで支払いをする練習。', initialMessage: 'お弁当温めますか?', role: '店員' }, { id: 'hotel_checkin', title: 'ホテルのチェックイン', icon: '🏨', description: 'ホテルのフロントでチェックインをする。', initialMessage: 'いらっしゃいませ。チェックインでございますか?', role: 'フロント係' }, { id: 'immigration', title: '入国審査', icon: '🛂', description: '空港の入国審査で質問に答える練習。', initialMessage: '次の方どうぞ。パスポートを見せてください。', role: '審査官' }, { id: 'boarding', title: '搭乗手続き', icon: '✈️', description: '搭乗ゲートでのやり取り。', initialMessage: 'ご搭乗ありがとうございます。パスポートと搭乗券を拝見します。', role: '地上係員' } ]; case 'zh': return [ { id: 'cafe_order', title: '咖啡厅点单', icon: '☕', description: '练习在东京的咖啡厅点咖啡和小吃。', initialMessage: 'いらっしゃいませ!ご注文はお決まりですか?', initialTranslation: '欢迎光临!决定好要点什么了吗?', role: '店员' }, { id: 'train_station', title: '车站问路', icon: '🚄', description: '练习询问车站工作人员路线。', initialMessage: 'はい、どうされましたか?', initialTranslation: '您好,有什么可以帮您的吗?', role: '站务员' }, { id: 'conbini', title: '便利店购物', icon: '🏪', description: '练习在便利店结账。', initialMessage: 'お弁当温めますか?', initialTranslation: '便当需要加热吗?', role: '店员' }, { id: 'hotel_checkin', title: '酒店入住', icon: '🏨', description: '在酒店前台办理入住手续。', initialMessage: 'いらっしゃいませ。チェックインでございますか?', initialTranslation: '欢迎光临。是办理入住吗?', role: '前台接待' }, { id: 'immigration', title: '入境审查', icon: '🛂', description: '练习在机场回答入境审查官的提问。', initialMessage: '次の方どうぞ。パスポートを見せてください。', initialTranslation: '下一位。请出示您的护照。', role: '审查官' }, { id: 'boarding', title: '登机手续', icon: '✈️', description: '练习登机口的对话。', initialMessage: 'ご搭乗ありがとうございます。パスポートと搭乗券を拝见します。', initialTranslation: '感谢您的搭乘。请出示护照和登机牌。', role: '地勤人员' } ]; default: // en return [ { id: 'cafe_order', title: 'Ordering at a Cafe', icon: '☕', description: 'Practice ordering coffee and snacks at a cafe in Tokyo.', initialMessage: 'いらっしゃいませ!ご注文はお決まりですか?', initialTranslation: 'Welcome! Have you decided on your order?', role: 'Barista' }, { id: 'train_station', title: 'Asking Directions', icon: '🚄', description: 'Practice asking a station attendant for help finding a platform.', initialMessage: 'はい、どうされましたか?', initialTranslation: 'Yes, how can I help you?', role: 'Station Attendant' }, { id: 'conbini', title: 'Convenience Store', icon: '🏪', description: 'Buying items at a Konbini.', initialMessage: 'お弁当温めますか?', initialTranslation: 'Would you like your bento warmed up?', role: 'Clerk' }, { id: 'hotel_checkin', title: 'Hotel Check-in', icon: '🏨', description: 'Checking into a hotel.', initialMessage: 'いらっしゃいませ。チェックインでございますか?', initialTranslation: 'Welcome. Are you checking in?', role: 'Receptionist' }, { id: 'immigration', title: 'Immigration', icon: '🛂', description: 'Answering questions at airport immigration control.', initialMessage: '次の方どうぞ。パスポートを見せてください。', initialTranslation: 'Next person, please. Show me your passport.', role: 'Officer' }, { id: 'boarding', title: 'Boarding Gate', icon: '✈️', description: 'Interacting with staff at the boarding gate.', initialMessage: 'ご搭乗ありがとうございます。パスポートと搭乗券を拝見します。', initialTranslation: 'Thank you for boarding. May I see your passport and boarding pass?', role: 'Ground Staff' } ]; } }; export const translations = { en: { appTitle: "Sakura Sensei 🌸", nav: { sectionStudy: "Study & Input", sectionPractice: "Practice & Output", sectionTools: "Toolbox", sectionImmersion: "Immersion", chat: "Tutor Dojo", reading: "Reading Hall", listening: "Listening Lab", speaking: "Roleplay", creative: "Atelier", translation: "Translator", ocr: "Scanner", settings: "Settings" }, common: { cancel: "Cancel", confirm: "Confirm", delete: "Delete", next: "Next", generatedBy: "Generated by", error: "Error occurred", poweredBy: "Powered by Gemini", deleteItemConfirm: "Are you sure you want to delete this item?", clearHistoryConfirm: "Are you sure you want to clear the entire history?", save: "Save", download: "Download", content: "Content", tutor: "Tutor", text: "Text", explanation: "Explanation", clear: "Clear", copy: "Copy", copied: "Copied!", share: "Share", shareImage: "Image", shareText: "Text", shareFile: "File (TXT)", aiLanguage: "AI Language", langJa: "Japanese", langNative: "User Language", today: "Today", yesterday: "Yesterday", storageFull: "Storage full. History may not be saved.", storageOptimized: "Storage full. Cleared audio cache to save text." }, onboarding: { welcome: "Welcome to Sakura Sensei!", desc1: "Your AI-powered companion for mastering Japanese.", step1Title: "Conversational Tutor", step1Desc: "Chat with Sakura (Gemini 3 Pro) to practice grammar or ask cultural questions.", step2Title: "Immersive Practice", step2Desc: "Roleplay realistic scenarios, generate reading materials, and scan real-world text.", step3Title: "Creative Tools", step3Desc: "Generate images and videos to visualize your learning journey.", startBtn: "Start Learning", selectLang: "Select Interface Language" }, chat: { welcome: "Konnichiwa! 🌸 I am Sakura. How can I help you with your Japanese today?", inputPlaceholder: "Send a message...", thinkingPlaceholder: "Reasoning about grammar...", imageAttached: "Image attached", sending: "Sakura is thinking...", error: "Connection lost.", locationError: "Region not supported. Please configure a Proxy URL in Settings.", playUserAudio: "Play Recording", listenPronunciation: "Listen", deepThinking: "Deep Thought", imageAnalyzed: "Image Analyzed", thinkingToggle: "Thinking Mode", newChat: "New Chat", history: "Chat History", noHistory: "No previous chats.", deleteChat: "Delete", deleteConfirm: "Are you sure you want to delete this chat session?", untitled: "Untitled Chat", transcribedPrefix: "(Transcribed): " }, creative: { title: "Creative Atelier 🎨", genImage: "Paint", editImage: "Magic Edit", genVideo: "Dream Video", promptLabel: "Your Vision", editLabel1: "1. Base Photo", editLabel2: "2. Instruction", uploadPlaceholder: "Drop an image here", generateBtn: "Generate", creatingBtn: "Creating...", download: "Download", videoWarning: "* Video generation (Veo) takes time.", emptyState: "Your masterpiece will appear here", imagePrompt: "Cyberpunk samurai cat in neon Tokyo...", editPrompt: "Turn trees into cherry blossoms...", videoPrompt: "Traditional tea ceremony in a futuristic garden...", uploadAlert: "Please upload an image first!" }, speaking: { title: "Conversation Dojo 🗣️", subtitle: "Roleplay in realistic scenarios. Get instant feedback on accent and fluency.", back: "Exit", listening: "Listening...", tapSpeak: "Tap to Speak", processing: "Analyzing...", feedbackTitle: "Sensei's Report", score: "Fluency", toImprove: "Corrections", advice: "Advice", transcription: "You Said", meaning: "Meaning", perfect: "Sugoi! Perfect pronunciation! 🎉", emptyFeedback: "Speak clearly to get feedback.", replay: "Replay", start: "Start", roleplay: "Role", translation: "Translation" }, reading: { title: "Reading Hall 📜", subtitle: "Generate custom reading lessons based on your level.", topicLabel: "Topic", difficultyLabel: "Level", levels: { beginner: "Beginner (N5-N4)", intermediate: "Intermediate (N3-N2)", advanced: "Advanced (N1)" }, generate: "Create Lesson", generating: "Writing...", translationToggle: "Translation", vocabTitle: "Vocabulary", grammarHeader: "Grammar", qaTitle: "Tutor Chat", qaPlaceholder: "Ask about this text...", qaWelcome: "Lesson generated. Ask me anything about the text!", historyTitle: "Library", loadMore: "Open", emptyHistory: "Empty Library", clear: "Clear", placeholder: "e.g. Kyoto History, Anime Culture", translationLabel: "Translation", thinking: "thinking...", playAudio: "Listen", stopAudio: "Stop", contentMissing: "No text generated. Please try creating a new lesson with a more specific topic.", translationMissing: "No translation available." }, listening: { title: "Listening Lab 🎧", subtitle: "Train your ears with AI-generated conversations and quizzes.", generate: "Create Practice", generating: "Composing...", play: "Play Audio", pause: "Pause", replay: "Replay", showScript: "Show Transcript", hideScript: "Hide Transcript", quizTitle: "Comprehension Quiz", check: "Check Answer", correct: "Correct!", incorrect: "Incorrect, try again.", scriptTitle: "Transcript", historyTitle: "Practice Log", emptyHistory: "No practice logs", qaWelcome: "I've generated a listening exercise. Listen to the audio first, try the quiz, then ask me anything!", noScript: "No script available to play.", scriptMissing: "No script generated. Please try generating again.", vocabTitle: "Vocabulary", grammarHeader: "Grammar" }, ocr: { title: "Text Scanner 🔍", subtitle: "Scan text (books, menus) to create study guides.", uploadBtn: "Upload", cameraBtn: "Camera", processing: "Scanning...", extractedTitle: "Extracted Text", analysisTitle: "Study Notes", vocabHeader: "Vocabulary", grammarHeader: "Grammar", summaryHeader: "Summary", chatPlaceholder: "Ask about this text...", reScan: "New Scan", error: "Could not analyze image.", history: "Scan History", emptyHistory: "No scans yet", clear: "Clear", analyzedIntro: "Analyzed (Language: $lang). Ask me anything!", historyIntro: "Loaded from history (Language: $lang).", tutorChat: "Tutor Chat", thinking: "thinking...", analysisFailed: "Analysis failed." }, translation: { title: "Translator", inputLabel: "Input", outputLabel: "Translation", translateBtn: "Translate", translating: "Translating...", extracting: "Scanning...", scanImage: "Camera", uploadImage: "Image", sourceLang: "Source", targetLang: "Target", history: "Translator History", clear: "Clear", copy: "Copy", langs: { auto: "Auto Detect", en: "English", ja: "Japanese", zh: "Chinese", ko: "Korean", fr: "French", es: "Spanish" }, errorTranslating: "Error translating.", imageReadError: "Could not read text from image.", imageTransError: "Image translation failed." }, settings: { title: "Settings & Data", backupTitle: "Backup", backupDesc: "Download all data locally.", backupBtn: "Backup", restoreDesc: "Restore from backup file.", restoreBtn: "Restore", exportTitle: "Export", exportChatBtn: "Chat Log (TXT)", exportTransBtn: "Translations (CSV)", exportReadingBtn: "Reading History (JSON)", exportOCRBtn: "Scan History (JSON)", successRestore: "Restored successfully!", errorRestore: "Invalid file.", apiKeyTitle: "API Configuration", apiKeyDesc: "Configure your Gemini API access.", apiKeyPlaceholder: "Paste API Key", baseUrlPlaceholder: "Base URL (Optional, e.g. for Proxy)", apiKeyMissing: "API Key is required.", saveKey: "Save", removeKey: "Remove", keySaved: "Settings saved!", keyRemoved: "Settings cleared.", modelTitle: "AI Model", modelDesc: "Select model for chat/reasoning.", modelSaved: "Model updated!" }, recorder: { start: "Start Mic", stop: "Stop Mic" } }, ja: { appTitle: "さくら先生 🌸", nav: { sectionStudy: "学習とインプット", sectionPractice: "練習とアウトプット", sectionTools: "ツールボックス", sectionImmersion: "没入体験", chat: "学習道場", reading: "読書の間", listening: "聴解ラボ", speaking: "ロールプレイ", creative: "アトリエ", translation: "翻訳機", ocr: "スキャナー", settings: "設定" }, common: { cancel: "キャンセル", confirm: "確認", delete: "削除", next: "次へ", generatedBy: "生成モデル:", error: "エラーが発生しました", poweredBy: "Powered by Gemini", deleteItemConfirm: "この項目を削除してもよろしいですか?", clearHistoryConfirm: "履歴をすべて消去してもよろしいですか?", save: "保存", download: "ダウンロード", content: "コンテンツ", tutor: "チューター", text: "テキスト", explanation: "解説", clear: "クリア", copy: "コピー", copied: "コピーしました!", share: "共有", shareImage: "画像", shareText: "テキスト", shareFile: "ファイル (TXT)", aiLanguage: "AIの使用言語", langJa: "日本語", langNative: "ユーザー言語", today: "今日", yesterday: "昨日", storageFull: "保存容量がいっぱいです。履歴が保存されない可能性があります。", storageOptimized: "保存容量がいっぱいのため、音声キャッシュを削除してテキストのみ保存しました。" }, onboarding: { welcome: "さくら先生へようこそ!", desc1: "あなたのためのAI日本語学習パートナーです。", step1Title: "会話チューター", step1Desc: "さくら先生(Gemini 3 Pro)とチャットして、文法や文化について学びましょう。", step2Title: "没入型練習", step2Desc: "リアルなシナリオでのロールプレイ、読み物の作成、現実世界のテキストのスキャン。", step3Title: "クリエイティブツール", step3Desc: "学習の旅を視覚化するために画像やビデオを生成します。", startBtn: "学習を始める", selectLang: "言語を選択" }, chat: { welcome: "こんにちは!🌸 さくらです。日本語の勉強をお手伝いします。", inputPlaceholder: "メッセージを送信...", thinkingPlaceholder: "文法を推論中...", imageAttached: "画像が添付されました", sending: "さくら先生が考え中...", error: "接続が失われました。", locationError: "この地域はサポートされていません。設定でプロキシURLを設定してください。", playUserAudio: "録音を再生", listenPronunciation: "聞く", deepThinking: "深い思考", imageAnalyzed: "画像を分析しました", thinkingToggle: "思考モード", newChat: "新しいチャット", history: "チャット履歴", noHistory: "履歴はありません。", deleteChat: "削除", deleteConfirm: "このチャットセッションを削除してもよろしいですか?", untitled: "無題のチャット", transcribedPrefix: "(書き起こし): " }, creative: { title: "クリエイティブアトリエ 🎨", genImage: "描画", editImage: "マジック編集", genVideo: "夢のビデオ", promptLabel: "あなたのビジョン", editLabel1: "1. 元の画像", editLabel2: "2. 指示", uploadPlaceholder: "ここに画像をドロップ", generateBtn: "生成", creatingBtn: "作成中...", download: "ダウンロード", videoWarning: "* ビデオ生成 (Veo) には時間がかかります。", emptyState: "ここに作品が表示されます", imagePrompt: "ネオン輝く東京のサイバーパンク侍猫...", editPrompt: "木を桜に変えて...", videoPrompt: "未来的な庭園での伝統的な茶道...", uploadAlert: "まずは画像をアップロードしてください!" }, speaking: { title: "会話道場 🗣️", subtitle: "リアルなシナリオでロールプレイ。アクセントや流暢さを即座にフィードバック。", back: "終了", listening: "聞いています...", tapSpeak: "タップして話す", processing: "分析中...", feedbackTitle: "先生のレポート", score: "流暢さ", toImprove: "修正点", advice: "アドバイス", transcription: "あなたの発言", meaning: "意味", perfect: "すごい!完璧な発音です!🎉", emptyFeedback: "はっきりと話してください。", replay: "再生", start: "開始", roleplay: "役割", translation: "翻訳" }, reading: { title: "読書の間 📜", subtitle: "レベルに合わせて読み物を生成します。", topicLabel: "トピック", difficultyLabel: "レベル", levels: { beginner: "初級 (N5-N4)", intermediate: "中級 (N3-N2)", advanced: "上級 (N1)" }, generate: "レッスン作成", generating: "執筆中...", translationToggle: "翻訳", vocabTitle: "語彙", grammarHeader: "文法", qaTitle: "チューターチャット", qaPlaceholder: "このテキストについて質問...", qaWelcome: "レッスンを作成しました。テキストについて何でも聞いてください!", historyTitle: "ライブラリ", loadMore: "開く", emptyHistory: "ライブラリは空です", clear: "クリア", placeholder: "例:京都の歴史、アニメ文化", translationLabel: "翻訳", thinking: "考え中...", playAudio: "聞く", stopAudio: "停止", contentMissing: "コンテンツが生成されませんでした。新しいトピックで試してください。", translationMissing: "翻訳がありません。" }, listening: { title: "聴解ラボ 🎧", subtitle: "AIが生成した会話とクイズで耳を鍛えましょう。", generate: "練習を作成", generating: "作成中...", play: "音声を再生", pause: "一時停止", replay: "もう一度", showScript: "スクリプトを表示", hideScript: "スクリプトを隠す", quizTitle: "理解度クイズ", check: "答え合わせ", correct: "正解!", incorrect: "不正解、もう一度。", scriptTitle: "スクリプト", historyTitle: "練習ログ", emptyHistory: "練習ログなし", qaWelcome: "リスニング練習を作成しました。まず音声を聞いてクイズに挑戦し、その後何でも質問してください!", noScript: "再生できるスクリプトがありません。", scriptMissing: "スクリプトが生成されませんでした。もう一度試してください。", vocabTitle: "語彙", grammarHeader: "文法" }, ocr: { title: "テキストスキャナー 🔍", subtitle: "テキスト(本、メニュー)をスキャンして学習ガイドを作成。", uploadBtn: "アップロード", cameraBtn: "カメラ", processing: "スキャン中...", extractedTitle: "抽出されたテキスト", analysisTitle: "学習ノート", vocabHeader: "語彙", grammarHeader: "文法", summaryHeader: "要約", chatPlaceholder: "このテキストについて質問...", reScan: "新しいスキャン", error: "画像を分析できませんでした。", history: "スキャン履歴", emptyHistory: "スキャン履歴なし", clear: "クリア", analyzedIntro: "分析しました(言語:$lang)。何でも聞いてください!", historyIntro: "履歴から読み込みました(言語:$lang)。", tutorChat: "チューターチャット", thinking: "考え中...", analysisFailed: "分析に失敗しました。" }, translation: { title: "翻訳機", inputLabel: "入力", outputLabel: "翻訳", translateBtn: "翻訳", translating: "翻訳中...", extracting: "スキャン中...", scanImage: "カメラ", uploadImage: "画像", sourceLang: "翻訳元", targetLang: "翻訳先", history: "翻訳履歴", clear: "クリア", copy: "コピー", langs: { auto: "自動検出", en: "英語", ja: "日本語", zh: "中国語", ko: "韓国語", fr: "フランス語", es: "スペイン語" }, errorTranslating: "翻訳エラー。", imageReadError: "テキストを読み取れませんでした。", imageTransError: "画像の翻訳に失敗しました。" }, settings: { title: "設定とデータ", backupTitle: "バックアップ", backupDesc: "すべてのデータをローカルにダウンロード。", backupBtn: "バックアップ", restoreDesc: "バックアップファイルから復元。", restoreBtn: "復元", exportTitle: "エクスポート", exportChatBtn: "チャットログ (TXT)", exportTransBtn: "翻訳 (CSV)", exportReadingBtn: "読書履歴 (JSON)", exportOCRBtn: "スキャン履歴 (JSON)", successRestore: "正常に復元されました!", errorRestore: "無効なファイルです。", apiKeyTitle: "API構成", apiKeyDesc: "Gemini APIアクセスを構成します。", apiKeyPlaceholder: "APIキーを貼り付け", baseUrlPlaceholder: "ベースURL (オプション、プロキシ用)", apiKeyMissing: "APIキーが必要です。", saveKey: "保存", removeKey: "削除", keySaved: "設定を保存しました!", keyRemoved: "設定をクリアしました。", modelTitle: "AIモデル", modelDesc: "チャット/推論用のモデルを選択。", modelSaved: "モデルを更新しました!" }, recorder: { start: "マイク開始", stop: "マイク停止" } }, zh: { appTitle: "樱花老师 🌸", nav: { sectionStudy: "学习与输入", sectionPractice: "练习与输出", sectionTools: "工具箱", sectionImmersion: "沉浸体验", chat: "学习道场", reading: "阅读室", listening: "听力实验室", speaking: "角色扮演", creative: "工作室", translation: "翻译机", ocr: "扫描仪", settings: "设置" }, common: { cancel: "取消", confirm: "确认", delete: "删除", next: "下一步", generatedBy: "生成模型:", error: "发生错误", poweredBy: "Powered by Gemini", deleteItemConfirm: "您确定要删除此项目吗?", clearHistoryConfirm: "您确定要清空历史记录吗?", save: "保存", download: "下载", content: "内容", tutor: "导师", text: "文本", explanation: "解析", clear: "清除", copy: "复制", copied: "已复制!", share: "分享", shareImage: "图片", shareText: "文本", shareFile: "文件 (TXT)", aiLanguage: "AI使用语言", langJa: "日语", langNative: "用户语言", today: "今天", yesterday: "昨天", storageFull: "存储空间已满,历史记录可能无法保存。", storageOptimized: "存储空间已满,已自动清除音频缓存以保存文本。" }, onboarding: { welcome: "欢迎来到樱花老师!", desc1: "您的AI日语学习伙伴。", step1Title: "对话导师", step1Desc: "与樱花老师(Gemini 3 Pro)聊天,学习语法或文化。", step2Title: "沉浸式练习", step2Desc: "角色扮演现实场景,生成阅读材料,扫描现实世界的文本。", step3Title: "创意工具", step3Desc: "生成图像和视频以可视化您的学习之旅。", startBtn: "开始学习", selectLang: "选择界面语言" }, chat: { welcome: "你好!🌸 我是樱花。今天我可以帮你学习日语吗?", inputPlaceholder: "发送消息...", thinkingPlaceholder: "正在推理由法...", imageAttached: "已附上图片", sending: "樱花老师正在思考...", error: "连接丢失。", locationError: "不支持该地区。请在设置中配置代理URL。", playUserAudio: "播放录音", listenPronunciation: "听", deepThinking: "深度思考", imageAnalyzed: "图像已分析", thinkingToggle: "思考模式", newChat: "新聊天", history: "聊天记录", noHistory: "没有以前的聊天。", deleteChat: "删除", deleteConfirm: "您确定要删除此聊天会话吗?", untitled: "未命名聊天", transcribedPrefix: "(转录): " }, creative: { title: "创意工作室 🎨", genImage: "绘画", editImage: "魔法编辑", genVideo: "梦境视频", promptLabel: "你的愿景", editLabel1: "1. 基础照片", editLabel2: "2. 指令", uploadPlaceholder: "在这里拖放图像", generateBtn: "生成", creatingBtn: "正在创建...", download: "下载", videoWarning: "* 视频生成 (Veo) 需要时间。", emptyState: "你的杰作将出现在这里", imagePrompt: "霓虹灯闪烁的东京赛博朋克武士猫...", editPrompt: "把树变成樱花...", videoPrompt: "未来花园中的传统茶道...", uploadAlert: "请先上传图片!" }, speaking: { title: "对话道场 🗣️", subtitle: "在现实场景中进行角色扮演。即时反馈口音和流利度。", back: "退出", listening: "正在听...", tapSpeak: "点击说话", processing: "正在分析...", feedbackTitle: "老师的报告", score: "流利度", toImprove: "修正", advice: "建议", transcription: "你说了", meaning: "意思", perfect: "太棒了!完美的发音!🎉", emptyFeedback: "请清楚地说出以获得反馈。", replay: "重播", start: "开始", roleplay: "角色", translation: "翻译" }, reading: { title: "阅读室 📜", subtitle: "根据您的水平生成自定义阅读课程。", topicLabel: "主题", difficultyLabel: "等级", levels: { beginner: "初级 (N5-N4)", intermediate: "中级 (N3-N2)", advanced: "高级 (N1)" }, generate: "创建课程", generating: "正在写作...", translationToggle: "翻译", vocabTitle: "词汇", grammarHeader: "语法", qaTitle: "导师聊天", qaPlaceholder: "关于此文本的问题...", qaWelcome: "课程已生成。关于文本的问题尽管问我!", historyTitle: "图书馆", loadMore: "打开", emptyHistory: "图书馆为空", clear: "清除", placeholder: "例如:京都历史,动漫文化", translationLabel: "翻译", thinking: "思考中...", playAudio: "听", stopAudio: "停止", contentMissing: "未生成内容。请尝试新的主题。", translationMissing: "暂无翻译。" }, listening: { title: "听力实验室 🎧", subtitle: "通过AI生成的对话和测验训练您的耳朵。", generate: "创建练习", generating: "正在创作...", play: "播放音频", pause: "暂停", replay: "重播", showScript: "显示脚本", hideScript: "隐藏脚本", quizTitle: "理解测验", check: "检查答案", correct: "正确!", incorrect: "不正确,请重试。", scriptTitle: "脚本", historyTitle: "练习日志", emptyHistory: "暂无练习记录", qaWelcome: "我已生成听力练习。先听音频,尝试测验,然后尽管问我任何问题!", noScript: "暂无脚本可播放。", scriptMissing: "未生成脚本。请重试。", vocabTitle: "词汇", grammarHeader: "语法" }, ocr: { title: "文本扫描仪 🔍", subtitle: "扫描文本(书籍,菜单)以创建学习指南。", uploadBtn: "上传", cameraBtn: "相机", processing: "正在扫描...", extractedTitle: "提取的文本", analysisTitle: "学习笔记", vocabHeader: "词汇", grammarHeader: "语法", summaryHeader: "摘要", chatPlaceholder: "关于此文本的问题...", reScan: "新扫描", error: "无法分析图像。", history: "扫描记录", emptyHistory: "暂无扫描", clear: "清除", analyzedIntro: "已分析(语言:$lang)。尽管问我!", historyIntro: "从历史记录加载(语言:$lang)。", tutorChat: "导师聊天", thinking: "思考中...", analysisFailed: "分析失败。" }, translation: { title: "翻译机", inputLabel: "输入", outputLabel: "翻译", translateBtn: "翻译", translating: "正在翻译...", extracting: "正在扫描...", scanImage: "相机", uploadImage: "图像", sourceLang: "源语言", targetLang: "目标语言", history: "翻译记录", clear: "清除", copy: "复制", langs: { auto: "自动检测", en: "英语", ja: "日语", zh: "中文", ko: "韩语", fr: "法语", es: "西班牙语" }, errorTranslating: "翻译错误。", imageReadError: "无法读取文本。", imageTransError: "图片翻译失败。" }, settings: { title: "设置和数据", backupTitle: "备份", backupDesc: "下载所有数据到本地。", backupBtn: "备份", restoreDesc: "从备份文件恢复。", restoreBtn: "恢复", exportTitle: "导出", exportChatBtn: "聊天记录 (TXT)", exportTransBtn: "翻译 (CSV)", exportReadingBtn: "阅读记录 (JSON)", exportOCRBtn: "扫描记录 (JSON)", successRestore: "恢复成功!", errorRestore: "无效文件。", apiKeyTitle: "API配置", apiKeyDesc: "配置您的Gemini API访问。", apiKeyPlaceholder: "粘贴API密钥", baseUrlPlaceholder: "Base URL (可选,用于代理)", apiKeyMissing: "需要API密钥。", saveKey: "保存", removeKey: "删除", keySaved: "设置已保存!", keyRemoved: "设置已清除。", modelTitle: "AI模型", modelDesc: "选择聊天/推理模型。", modelSaved: "模型已更新!" }, recorder: { start: "开始录音", stop: "停止录音" } } };