From 7129047c3fb94c66aaaba72d904c451d94bd155e Mon Sep 17 00:00:00 2001 From: bdim404 Date: Fri, 13 Mar 2026 11:50:07 +0800 Subject: [PATCH] feat: update localization strings for audiobook features and enhance UI interactions --- .../src/locales/en-US/audiobook.json | 27 ++++++++++--------- .../src/locales/ja-JP/audiobook.json | 27 ++++++++++--------- .../src/locales/ko-KR/audiobook.json | 27 ++++++++++--------- .../src/locales/zh-CN/audiobook.json | 27 ++++++++++--------- .../src/locales/zh-TW/audiobook.json | 27 ++++++++++--------- qwen3-tts-frontend/src/pages/Audiobook.tsx | 23 ++++++++++------ 6 files changed, 90 insertions(+), 68 deletions(-) diff --git a/qwen3-tts-frontend/src/locales/en-US/audiobook.json b/qwen3-tts-frontend/src/locales/en-US/audiobook.json index 0dbe801..3bb1056 100644 --- a/qwen3-tts-frontend/src/locales/en-US/audiobook.json +++ b/qwen3-tts-frontend/src/locales/en-US/audiobook.json @@ -10,7 +10,7 @@ "pending": "Pending", "analyzing": "Analyzing", "characters_ready": "Awaiting Character Review", - "parsing": "Parsing Chapters", + "parsing": "Extracting Dialogue", "ready": "Ready", "processing": "Processing", "generating": "Generating", @@ -97,19 +97,22 @@ "chapters": { "title": "Chapters ({{count}} total)", "processAll": "⚡ Process All", - "parseAll": "Batch Parse", - "generateAll": "Batch Generate", + "parseAll": "Batch Extract", + "parseAllAI": "Batch Rewrite", + "generateAll": "Batch Synthesize", "defaultTitle": "Chapter {{index}}", - "parse": "Parse Chapter", - "parsing": "Parsing", - "parseStarted": "Parsing \"{{title}}\" started", - "parseStartedDefault": "Chapter parsing started", - "reparse": "Re-parse", - "generate": "Generate Chapter", - "generateStarted": "Chapter {{index}} generation started", - "generateAllStarted": "Full book generation started", + "parse": "Extract Dialogue", + "parseAI": "Rewrite Chapter", + "parsing": "Extracting", + "parseStarted": "Extracting \"{{title}}\" started", + "parseStartedDefault": "Chapter extraction started", + "reparse": "Re-extract", + "reparseAI": "Rewrite", + "generate": "Synthesize", + "generateStarted": "Chapter {{index}} synthesis started", + "generateAllStarted": "Full book synthesis started", "processAllStarted": "All tasks triggered", - "parseAllStarted": "Batch parsing started", + "parseAllStarted": "Batch extraction started", "doneBadge": "{{count}} segments done", "segmentProgress": "{{done}}/{{total}} segments" }, diff --git a/qwen3-tts-frontend/src/locales/ja-JP/audiobook.json b/qwen3-tts-frontend/src/locales/ja-JP/audiobook.json index 99ff14d..16367d6 100644 --- a/qwen3-tts-frontend/src/locales/ja-JP/audiobook.json +++ b/qwen3-tts-frontend/src/locales/ja-JP/audiobook.json @@ -10,7 +10,7 @@ "pending": "未分析", "analyzing": "分析中", "characters_ready": "キャラクター確認待ち", - "parsing": "章を解析中", + "parsing": "対話抽出中", "ready": "生成待ち", "processing": "処理中", "generating": "生成中", @@ -96,19 +96,22 @@ "chapters": { "title": "章一覧(全 {{count}} 章)", "processAll": "⚡ すべて処理", - "parseAll": "一括解析", - "generateAll": "一括生成", + "parseAll": "一括抽出", + "parseAllAI": "一括書き直し", + "generateAll": "一括合成", "defaultTitle": "第 {{index}} 章", - "parse": "この章を解析", - "parsing": "解析中", - "parseStarted": "「{{title}}」の解析を開始しました", - "parseStartedDefault": "章の解析を開始しました", - "reparse": "再解析", - "generate": "この章を生成", - "generateStarted": "第 {{index}} 章の生成を開始しました", - "generateAllStarted": "全冊生成を開始しました", + "parse": "対話抽出", + "parseAI": "章を書き直し", + "parsing": "抽出中", + "parseStarted": "「{{title}}」の抽出を開始しました", + "parseStartedDefault": "章の抽出を開始しました", + "reparse": "再抽出", + "reparseAI": "書き直し", + "generate": "音声合成", + "generateStarted": "第 {{index}} 章の合成を開始しました", + "generateAllStarted": "全冊合成を開始しました", "processAllStarted": "すべてのタスクを開始しました", - "parseAllStarted": "一括解析を開始しました", + "parseAllStarted": "一括抽出を開始しました", "doneBadge": "{{count}} セグメント完了", "segmentProgress": "{{done}}/{{total}} セグメント" }, diff --git a/qwen3-tts-frontend/src/locales/ko-KR/audiobook.json b/qwen3-tts-frontend/src/locales/ko-KR/audiobook.json index 3cc9e93..3566baf 100644 --- a/qwen3-tts-frontend/src/locales/ko-KR/audiobook.json +++ b/qwen3-tts-frontend/src/locales/ko-KR/audiobook.json @@ -10,7 +10,7 @@ "pending": "분석 대기", "analyzing": "분석 중", "characters_ready": "캐릭터 확인 대기", - "parsing": "챕터 파싱 중", + "parsing": "대화 추출 중", "ready": "생성 대기", "processing": "처리 중", "generating": "생성 중", @@ -96,19 +96,22 @@ "chapters": { "title": "챕터 목록 (총 {{count}}챕터)", "processAll": "⚡ 전체 처리", - "parseAll": "일괄 파싱", - "generateAll": "일괄 생성", + "parseAll": "일괄 추출", + "parseAllAI": "일괄 재작성", + "generateAll": "일괄 합성", "defaultTitle": "제 {{index}} 장", - "parse": "이 챕터 파싱", - "parsing": "파싱 중", - "parseStarted": "「{{title}}」 파싱이 시작되었습니다", - "parseStartedDefault": "챕터 파싱이 시작되었습니다", - "reparse": "재파싱", - "generate": "이 챕터 생성", - "generateStarted": "제 {{index}} 장 생성이 시작되었습니다", - "generateAllStarted": "전체 책 생성이 시작되었습니다", + "parse": "대화 추출", + "parseAI": "챕터 재작성", + "parsing": "추출 중", + "parseStarted": "「{{title}}」 추출이 시작되었습니다", + "parseStartedDefault": "챕터 추출이 시작되었습니다", + "reparse": "재추출", + "reparseAI": "재작성", + "generate": "음성 합성", + "generateStarted": "제 {{index}} 장 합성이 시작되었습니다", + "generateAllStarted": "전체 책 합성이 시작되었습니다", "processAllStarted": "모든 작업이 시작되었습니다", - "parseAllStarted": "일괄 파싱이 시작되었습니다", + "parseAllStarted": "일괄 추출이 시작되었습니다", "doneBadge": "{{count}}개 세그먼트 완료", "segmentProgress": "{{done}}/{{total}} 세그먼트" }, diff --git a/qwen3-tts-frontend/src/locales/zh-CN/audiobook.json b/qwen3-tts-frontend/src/locales/zh-CN/audiobook.json index 1cc5431..cc2a4a1 100644 --- a/qwen3-tts-frontend/src/locales/zh-CN/audiobook.json +++ b/qwen3-tts-frontend/src/locales/zh-CN/audiobook.json @@ -10,7 +10,7 @@ "pending": "待分析", "analyzing": "分析中", "characters_ready": "角色待确认", - "parsing": "解析章节", + "parsing": "提取对话", "ready": "待生成", "processing": "处理中", "generating": "生成中", @@ -100,19 +100,22 @@ "chapters": { "title": "章节列表(共 {{count}} 章)", "processAll": "⚡ 全部处理", - "parseAll": "批量解析", - "generateAll": "批量生成", + "parseAll": "批量提取", + "parseAllAI": "批量重写", + "generateAll": "批量合成", "defaultTitle": "第 {{index}} 章", - "parse": "解析此章", - "parsing": "解析中", - "parseStarted": "「{{title}}」解析已开始", - "parseStartedDefault": "章节解析已开始", - "reparse": "重新解析", - "generate": "生成此章", - "generateStarted": "第 {{index}} 章生成已开始", - "generateAllStarted": "全书生成已开始", + "parse": "提取对话", + "parseAI": "重写章节", + "parsing": "提取中", + "parseStarted": "「{{title}}」提取已开始", + "parseStartedDefault": "章节提取已开始", + "reparse": "重新提取", + "reparseAI": "重写", + "generate": "合成音频", + "generateStarted": "第 {{index}} 章合成已开始", + "generateAllStarted": "全书合成已开始", "processAllStarted": "全部任务已触发", - "parseAllStarted": "批量解析已开始", + "parseAllStarted": "批量提取已开始", "doneBadge": "已完成 {{count}} 段", "segmentProgress": "{{done}}/{{total}} 段" }, diff --git a/qwen3-tts-frontend/src/locales/zh-TW/audiobook.json b/qwen3-tts-frontend/src/locales/zh-TW/audiobook.json index 09caa60..9760105 100644 --- a/qwen3-tts-frontend/src/locales/zh-TW/audiobook.json +++ b/qwen3-tts-frontend/src/locales/zh-TW/audiobook.json @@ -10,7 +10,7 @@ "pending": "待分析", "analyzing": "分析中", "characters_ready": "角色待確認", - "parsing": "解析章節", + "parsing": "提取對話", "ready": "待生成", "processing": "處理中", "generating": "生成中", @@ -96,19 +96,22 @@ "chapters": { "title": "章節列表(共 {{count}} 章)", "processAll": "⚡ 全部處理", - "parseAll": "批量解析", - "generateAll": "批量生成", + "parseAll": "批量提取", + "parseAllAI": "批量重寫", + "generateAll": "批量合成", "defaultTitle": "第 {{index}} 章", - "parse": "解析此章", - "parsing": "解析中", - "parseStarted": "「{{title}}」解析已開始", - "parseStartedDefault": "章節解析已開始", - "reparse": "重新解析", - "generate": "生成此章", - "generateStarted": "第 {{index}} 章生成已開始", - "generateAllStarted": "全書生成已開始", + "parse": "提取對話", + "parseAI": "重寫章節", + "parsing": "提取中", + "parseStarted": "「{{title}}」提取已開始", + "parseStartedDefault": "章節提取已開始", + "reparse": "重新提取", + "reparseAI": "重寫", + "generate": "合成音訊", + "generateStarted": "第 {{index}} 章合成已開始", + "generateAllStarted": "全書合成已開始", "processAllStarted": "全部任務已觸發", - "parseAllStarted": "批量解析已開始", + "parseAllStarted": "批量提取已開始", "doneBadge": "已完成 {{count}} 段", "segmentProgress": "{{done}}/{{total}} 段" }, diff --git a/qwen3-tts-frontend/src/pages/Audiobook.tsx b/qwen3-tts-frontend/src/pages/Audiobook.tsx index e228264..db18075 100644 --- a/qwen3-tts-frontend/src/pages/Audiobook.tsx +++ b/qwen3-tts-frontend/src/pages/Audiobook.tsx @@ -1,7 +1,7 @@ import { useState, useEffect, useCallback, useRef } from 'react' import { useTranslation } from 'react-i18next' import { toast } from 'sonner' -import { Book, Plus, Trash2, RefreshCw, Download, ChevronDown, ChevronUp, Play, Square, Pencil, Check, X, Loader2, Zap, Settings2, PanelLeftClose, PanelLeftOpen } from 'lucide-react' +import { Book, Plus, Trash2, RefreshCw, Download, ChevronDown, ChevronUp, Play, Square, Pencil, Check, X, Loader2, Zap, Settings2, PanelLeftClose, PanelLeftOpen, Wand2, Volume2, Bot } from 'lucide-react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' @@ -1199,6 +1199,7 @@ function ChaptersPanel({ } }, [segments, detail]) + const isAIMode = project.source_type === 'ai_generated' const hasChapters = detail && detail.chapters.length > 0 && ['ready', 'generating', 'done'].includes(status) return ( @@ -1211,11 +1212,13 @@ function ChaptersPanel({
{detail!.chapters.some(c => ['pending', 'error', 'ready'].includes(c.status)) && ( )} {detail!.chapters.some(c => c.status === 'ready') && ( )} @@ -1260,7 +1263,8 @@ function ChaptersPanel({ e.stopPropagation()}> {ch.status === 'pending' && ( )} {ch.status === 'parsing' && ( @@ -1274,10 +1278,12 @@ function ChaptersPanel({ setExpandedChapters(prev => { const n = new Set(prev); n.add(ch.id); return n }) onGenerate(ch.chapter_index) }}> + {t('projectCard.chapters.generate')} - )} @@ -1289,11 +1295,11 @@ function ChaptersPanel({ {(ch.status === 'done' || (ch.status === 'ready' && chAllDone)) && ( <> {t('projectCard.chapters.doneBadge', { count: chDone })} - )}