Phase 14 구현: 회의 모드 (Meeting Mode)

실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기.
CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원.
DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
This commit is contained in:
Yun Chan 2026-04-08 01:16:52 +09:00
parent dd68fc9ccd
commit d0c4f9ee53
38 changed files with 2550 additions and 769 deletions

View file

@ -1,13 +1,11 @@
{
"app.name": "D3RO Voice",
"app.tagline": "ผู้ช่วยเสียง AI ในเครื่อง",
"nav.dashboard": "แดชบอร์ด",
"nav.history": "ประวัติ",
"nav.dictionary": "พจนานุกรม",
"nav.commands": "คำสั่ง",
"nav.settings": "การตั้งค่า",
"dashboard.sessionOverview": "ภาพรวมเซสชัน",
"dashboard.systemStatus": "สถานะระบบ",
"dashboard.sessionsToday": "เซสชันวันนี้",
@ -26,7 +24,6 @@
"dashboard.entries": "{{count}} รายการ",
"dashboard.stat": "สถิติ",
"dashboard.sys": "ระบบ",
"history.title": "ประวัติการถอดความ",
"history.search": "ค้นหา...",
"history.entries": "{{count}} รายการ",
@ -34,7 +31,6 @@
"history.noResults": "ไม่พบผลลัพธ์",
"history.noHistory": "ไม่มีประวัติ — เริ่มบันทึกเสียง",
"history.count": "{{count}} รายการ",
"dictionary.title": "พจนานุกรมที่กำหนดเอง",
"dictionary.words": "{{count}} คำ",
"dictionary.add": "เพิ่ม",
@ -47,7 +43,6 @@
"dictionary.addTitle": "เพิ่มคำ",
"dictionary.word": "คำ",
"dictionary.pronunciation": "การออกเสียง (ไม่บังคับ)",
"commands.title": "คำสั่ง LLM",
"commands.count": "{{count}} รายการ",
"commands.add": "เพิ่ม",
@ -62,14 +57,12 @@
"commands.promptTemplate": "เทมเพลตพรอมต์",
"commands.promptHelp": "{{text}} จะถูกแทนที่ด้วยข้อความที่ถอดความ",
"commands.defaultPrompt": "กรุณาปรับปรุง {{text}}",
"settings.title": "การตั้งค่า",
"settings.tabs.general": "ทั่วไป",
"settings.tabs.audio": "เสียง",
"settings.tabs.stt": "STT",
"settings.tabs.llm": "LLM",
"settings.tabs.about": "เกี่ยวกับ",
"settings.shortcuts": "ปุ่มลัด",
"settings.dictation": "การบอกเล่า",
"settings.dictation.desc": "กดค้างไว้แล้วพูด เมื่อปล่อยจะเริ่มถอดความ",
@ -82,20 +75,17 @@
"settings.notSet": "ยังไม่ได้ตั้งค่า",
"settings.enabled": "เปิดใช้งาน",
"settings.disabled": "ปิดใช้งาน",
"settings.interface": "อินเทอร์เฟซ",
"settings.theme": "ธีม",
"settings.theme.system": "ระบบ",
"settings.theme.light": "สว่าง",
"settings.theme.dark": "มืด",
"settings.language": "ภาษา",
"settings.appBehavior": "พฤติกรรมแอป",
"settings.closeToTray": "ย่อลงถาดระบบ",
"settings.autoLaunch": "เปิดอัตโนมัติเมื่อเริ่มระบบ",
"settings.autoInsert": "แทรกข้อความอัตโนมัติหลังถอดความ",
"settings.soundEffects": "เอฟเฟกต์เสียง",
"settings.microphone": "ไมโครโฟน",
"settings.inputDevice": "อุปกรณ์อินพุต",
"settings.deviceDefault": "(ค่าเริ่มต้น)",
@ -103,7 +93,6 @@
"settings.insertMethod": "วิธีการแทรก",
"settings.insertClipboard": "คลิปบอร์ด (Ctrl+V)",
"settings.insertKeyboard": "จำลองการพิมพ์",
"settings.whisperModel": "โมเดล Whisper",
"settings.model.tiny": "tiny (39 MB, เร็วที่สุด)",
"settings.model.base": "base (74 MB, สมดุล)",
@ -112,7 +101,6 @@
"settings.model.large": "large-v3 (1.5 GB, ดีที่สุด)",
"settings.sttLanguage": "ภาษาที่รู้จัก",
"settings.sttLang.auto": "ตรวจจับอัตโนมัติ",
"settings.ollamaServer": "เซิร์ฟเวอร์ Ollama",
"settings.ollamaUrl": "URL เซิร์ฟเวอร์ Ollama",
"settings.ollamaHint": "หาก Ollama กำลังทำงาน จะเชื่อมต่ออัตโนมัติ ดาวน์โหลดโมเดลโดยตรงจาก Ollama (เช่น: ollama pull qwen3:4b)",
@ -125,7 +113,6 @@
"settings.action.grammar": "แก้ไขไวยากรณ์",
"settings.action.custom": "พรอมต์ที่กำหนดเอง",
"settings.actionHint": "การประมวลผล LLM ที่เลือกจะถูกนำไปใช้กับข้อความที่ถอดความหลังจากบันทึก ทำงานเฉพาะเมื่อเชื่อมต่อ Ollama",
"settings.about.version": "เวอร์ชัน",
"settings.about.techStack": "เทคโนโลยีที่ใช้",
"settings.about.techStackValue": "Electron + React 19 + MUI 7 + TypeScript",
@ -133,13 +120,11 @@
"settings.about.voiceEngineValue": "STT: faster-whisper (ในเครื่อง) / LLM: Ollama (ในเครื่อง)",
"settings.about.description": "ผู้ช่วยเสียง AI ในเครื่องที่พัฒนาจากความรู้การวิศวกรรมย้อนกลับ Speakly ทำงานได้อย่างสมบูรณ์ในเครื่องโดยไม่พึ่งพาบริการคลาวด์",
"settings.about.restartOnboarding": "ดูคู่มือการตั้งค่าเริ่มต้นอีกครั้ง",
"status.ollama": "OLLAMA",
"status.offline": "OFFLINE",
"status.nudge.title": "Ollama ยังไม่ได้ทำงาน",
"status.nudge.desc": "ต้องใช้ Ollama สำหรับการประมวลผล LLM (แปล สรุป ฯลฯ)",
"status.nudge.guide": "ดูคำแนะนำการติดตั้ง →",
"onboarding.welcome.title": "D3RO-VOICE",
"onboarding.welcome.desc": "ไม่ต้องพิมพ์ — แค่พูด ผู้ช่วยเสียง AI ในเครื่อง",
"onboarding.welcome.start": "เริ่มต้น",
@ -160,7 +145,6 @@
"onboarding.done.start": "เริ่มต้น",
"onboarding.back": "ย้อนกลับ",
"onboarding.next": "ถัดไป",
"hotkey.title": "การตั้งค่าปุ่มลัด",
"hotkey.dictationTitle": "ตั้งค่าปุ่มลัดการบอกเล่า",
"hotkey.oneTouchTitle": "ตั้งค่าปุ่มลัดโหมดสัมผัสเดียว",
@ -171,7 +155,6 @@
"hotkey.current": "ปัจจุบัน: {{keys}}",
"hotkey.hint": "กรอกปุ่มลัด (เช่น: Ctrl+Shift+Q) หรือปุ่มเดี่ยว (เช่น: F5)",
"hotkey.reset": "กรอกใหม่",
"ollama.title": "OLLAMA SETUP GUIDE",
"ollama.step1.title": "ขั้นตอนที่ 1 — ติดตั้ง Ollama",
"ollama.step1.desc": "Ollama เป็นเครื่องมือฟรีสำหรับรัน LLM ในเครื่อง",
@ -180,7 +163,6 @@
"ollama.step2.alt": "หรือโมเดลที่ใหญ่กว่า: ollama pull qwen3:8b (แม่นยำกว่า ช้ากว่า)",
"ollama.step3.title": "ขั้นตอนที่ 3 — เชื่อมต่ออัตโนมัติ",
"ollama.step3.desc": "เมื่อ Ollama ทำงาน D3RO-VOICE จะตรวจพบโดยอัตโนมัติ เมื่อไฟ LED บนแถบสถานะเปลี่ยนจากสีแดงเป็นสีเขียว — พร้อมใช้งาน!",
"service.sttEngine": "STT ENGINE",
"service.ollamaLlm": "OLLAMA LLM",
"service.hotkeyHook": "HOTKEY HOOK",
@ -190,7 +172,6 @@
"service.offline": "OFFLINE",
"service.active": "ACTIVE",
"service.standby": "STANDBY",
"common.cancel": "ยกเลิก",
"common.save": "บันทึก",
"common.delete": "ลบ",
@ -202,7 +183,51 @@
"common.copy": "คัดลอก",
"common.test": "ทดสอบ",
"common.stop": "หยุด",
"date.today": "วันนี้",
"date.yesterday": "เมื่อวาน"
"date.yesterday": "เมื่อวาน",
"settings.theme.nord": "Nord",
"settings.theme.solarized": "Solarized",
"settings.theme.catppuccin": "Catppuccin",
"settings.theme.dracula": "Dracula",
"settings.sttLang.ko": "เกาหลี",
"settings.sttLang.en": "อังกฤษ",
"settings.sttLang.ja": "ญี่ปุ่น",
"settings.sttLang.zh": "จีน",
"template.outputHelperText": "ใช้ {{ชื่อฟิลด์}} สำหรับตัวยึดตำแหน่ง",
"nav.meeting": "การประชุม",
"meeting.title": "โหมดการประชุม",
"meeting.newMeeting": "การประชุมใหม่",
"meeting.startRecording": "เริ่มบันทึก",
"meeting.stopRecording": "หยุดบันทึก",
"meeting.recording": "กำลังบันทึก",
"meeting.processing": "กำลังสร้างรายงานการประชุม...",
"meeting.completed": "เสร็จสิ้น",
"meeting.error": "ข้อผิดพลาด",
"meeting.elapsed": "เวลาที่ผ่านไป",
"meeting.memoPlaceholder": "พิมพ์บันทึก (Enter เพื่อเพิ่ม)",
"meeting.memoAdded": "เพิ่มบันทึกแล้ว",
"meeting.noSessions": "ไม่มีการบันทึกการประชุม",
"meeting.noSessionsDesc": "กด «การประชุมใหม่» เพื่อเริ่มบันทึก",
"meeting.summary": "สรุป",
"meeting.decisions": "การตัดสินใจ",
"meeting.actionItems": "รายการดำเนินการ",
"meeting.timeline": "ไทม์ไลน์",
"meeting.transcript": "ถอดความดิบ",
"meeting.memos": "บันทึก",
"meeting.exportPdf": "ส่งออก PDF",
"meeting.exportMarkdown": "ส่งออก Markdown",
"meeting.delete": "ลบ",
"meeting.deleteConfirm": "ลบรายงานการประชุมนี้?",
"meeting.backToList": "กลับไปยังรายการ",
"meeting.notificationTitle": "รายงานการประชุมพร้อมแล้ว",
"meeting.notificationBody": "สร้างรายงานการประชุมเสร็จแล้ว",
"meeting.sessions": "{{count}} เซสชัน",
"meeting.duration": "{{minutes}} นาที",
"meeting.editTitle": "แก้ไขชื่อ",
"meeting.untitled": "การประชุมที่ไม่มีชื่อ",
"meeting.processingStep.merging": "กำลังรวมการถอดความ...",
"meeting.processingStep.generating": "กำลังสร้างรายงานด้วย LLM...",
"meeting.processingStep.parsing": "กำลังวิเคราะห์รายงาน...",
"meeting.processingStep.saving": "กำลังบันทึก...",
"meeting.processingStep.notifying": "กำลังส่งการแจ้งเตือน..."
}