feat(V2-1a): Monorepo 구조 전환 — apps/desktop으로 V1 이동
- npm workspaces 루트 (apps/*, packages/*) 세팅 - V1 전체를 apps/desktop/으로 git mv (src, resources, tests, sidecar, scripts, electron.vite.config.ts, electron-builder.yml, vitest.config.ts, tsconfig.node.json, tsconfig.web.json) - apps/desktop/package.json 신규 (name=@d3ro/desktop) - productName: 'd3ro-voice' 명시 — app.getName()을 고정하여 userData 경로 %APPDATA%\d3ro-voice\ 그대로 유지 (기존 DB/설정 연속성 보장) - 루트 package.json을 workspace 루트로 재구성, 공통 devDep만 유지 (typescript, eslint, prettier) - turbo.json, tsconfig.base.json 추가 (Turborepo 자체 설치는 별도 sub-phase) - memory/project_status.md 생성 (규칙 13) 검증: - npm run typecheck 통과 - npm run build 통과 (electron-vite main+preload+renderer) - npm run dev 실제 실행 → DB/핫키/Ollama 자동 실행 모두 정상
This commit is contained in:
parent
3a160b9032
commit
45a580878a
178 changed files with 214 additions and 0 deletions
|
|
@ -1,282 +0,0 @@
|
|||
{
|
||||
"app.name": "D3RO Voice",
|
||||
"app.tagline": "ผู้ช่วยเสียง AI ในเครื่อง",
|
||||
"nav.dashboard": "แดชบอร์ด",
|
||||
"nav.history": "ประวัติ",
|
||||
"nav.dictionary": "พจนานุกรม",
|
||||
"nav.commands": "คำสั่ง",
|
||||
"nav.settings": "การตั้งค่า",
|
||||
"dashboard.sessionOverview": "ภาพรวมเซสชัน",
|
||||
"dashboard.systemStatus": "สถานะระบบ",
|
||||
"dashboard.sessionsToday": "เซสชันวันนี้",
|
||||
"dashboard.pressToRecord": "กด {{key}} เพื่อเริ่มบันทึก",
|
||||
"dashboard.hotkeyNotSet": "ยังไม่ได้ตั้งค่าปุ่มลัด",
|
||||
"dashboard.words": "คำ",
|
||||
"dashboard.total": "ทั้งหมด",
|
||||
"dashboard.streak": "ต่อเนื่อง",
|
||||
"dashboard.days": "วัน",
|
||||
"dashboard.recording": "กำลังบันทึก",
|
||||
"dashboard.sessions": "เซสชัน",
|
||||
"dashboard.today": "วันนี้",
|
||||
"dashboard.recentTranscriptions": "การถอดความล่าสุด",
|
||||
"dashboard.noHistory": "ไม่มีประวัติ — กดปุ่มลัดเพื่อเริ่มบันทึก",
|
||||
"dashboard.copy": "คัดลอก",
|
||||
"dashboard.entries": "{{count}} รายการ",
|
||||
"dashboard.stat": "สถิติ",
|
||||
"dashboard.sys": "ระบบ",
|
||||
"history.title": "ประวัติการถอดความ",
|
||||
"history.search": "ค้นหา...",
|
||||
"history.entries": "{{count}} รายการ",
|
||||
"history.loading": "กำลังโหลด...",
|
||||
"history.noResults": "ไม่พบผลลัพธ์",
|
||||
"history.noHistory": "ไม่มีประวัติ — เริ่มบันทึกเสียง",
|
||||
"history.count": "{{count}} รายการ",
|
||||
"dictionary.title": "พจนานุกรมที่กำหนดเอง",
|
||||
"dictionary.words": "{{count}} คำ",
|
||||
"dictionary.add": "เพิ่ม",
|
||||
"dictionary.search": "ค้นหา...",
|
||||
"dictionary.loading": "กำลังโหลด...",
|
||||
"dictionary.noResults": "ไม่พบผลลัพธ์",
|
||||
"dictionary.noWords": "ไม่มีคำ — เพิ่มคำที่กำหนดเองเพื่อเพิ่มความแม่นยำของ STT",
|
||||
"dictionary.used": "ใช้แล้ว {{count}} ครั้ง",
|
||||
"dictionary.editTitle": "แก้ไขคำ",
|
||||
"dictionary.addTitle": "เพิ่มคำ",
|
||||
"dictionary.word": "คำ",
|
||||
"dictionary.pronunciation": "การออกเสียง (ไม่บังคับ)",
|
||||
"commands.title": "คำสั่ง LLM",
|
||||
"commands.count": "{{count}} รายการ",
|
||||
"commands.add": "เพิ่ม",
|
||||
"commands.activeCommand": "คำสั่งที่ใช้งานอยู่",
|
||||
"commands.none": "ไม่มี",
|
||||
"commands.loading": "กำลังโหลด...",
|
||||
"commands.noCommands": "ไม่มีคำสั่ง — คลิกเพิ่มเพื่อสร้าง",
|
||||
"commands.editTitle": "แก้ไขคำสั่ง",
|
||||
"commands.addTitle": "เพิ่มคำสั่ง",
|
||||
"commands.name": "ชื่อ",
|
||||
"commands.description": "คำอธิบาย",
|
||||
"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": "กดค้างไว้แล้วพูด เมื่อปล่อยจะเริ่มถอดความ",
|
||||
"settings.agent": "โหมด Agent",
|
||||
"settings.agent.descWithKey": "กด {{key}} สองครั้งเพื่อเข้าสู่โหมด Agent",
|
||||
"settings.agent.descNoKey": "กรุณาตั้งค่าปุ่มลัดการบอกเล่าก่อน",
|
||||
"settings.oneTouch": "โหมดสัมผัสเดียว",
|
||||
"settings.oneTouch.desc": "กดเพื่อเริ่ม กดอีกครั้งเพื่อหยุด ต้องใช้ปุ่มลัดแยกต่างหาก",
|
||||
"settings.key": "ปุ่ม",
|
||||
"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": "(ค่าเริ่มต้น)",
|
||||
"settings.textInsert": "การแทรกข้อความ",
|
||||
"settings.insertMethod": "วิธีการแทรก",
|
||||
"settings.insertClipboard": "คลิปบอร์ด (Ctrl+V)",
|
||||
"settings.insertKeyboard": "จำลองการพิมพ์",
|
||||
"settings.whisperModel": "โมเดล Whisper",
|
||||
"settings.model.tiny": "tiny (39 MB, เร็วที่สุด)",
|
||||
"settings.model.base": "base (74 MB, สมดุล)",
|
||||
"settings.model.small": "small (244 MB, ดี)",
|
||||
"settings.model.medium": "medium (769 MB, ดีเยี่ยม)",
|
||||
"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)",
|
||||
"settings.postProcess": "การประมวลผลเสียงหลังการบันทึก",
|
||||
"settings.defaultAction": "คำสั่งประมวลผลเริ่มต้น",
|
||||
"settings.action.none": "ไม่มี (ข้อความต้นฉบับ)",
|
||||
"settings.action.refine": "ปรับปรุง (ไวยากรณ์ + ความเป็นธรรมชาติ)",
|
||||
"settings.action.translate": "แปล",
|
||||
"settings.action.summarize": "สรุป",
|
||||
"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",
|
||||
"settings.about.voiceEngine": "เอนจิ้นเสียง",
|
||||
"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": "เริ่มต้น",
|
||||
"onboarding.mic.title": "การตั้งค่าไมโครโฟน",
|
||||
"onboarding.mic.desc": "เลือกไมโครโฟนที่ต้องการใช้ สามารถเปลี่ยนได้ในการตั้งค่า",
|
||||
"onboarding.hotkey.title": "การตั้งค่าปุ่มลัด",
|
||||
"onboarding.hotkey.desc": "ตั้งค่าปุ่มลัดสำหรับการบอกเล่า กดค้างไว้ขณะบันทึก",
|
||||
"onboarding.hotkey.notSet": "ยังไม่ได้ตั้งค่าปุ่มลัด",
|
||||
"onboarding.hotkey.change": "เปลี่ยนปุ่มลัด",
|
||||
"onboarding.hotkey.set": "ตั้งค่าปุ่มลัด",
|
||||
"onboarding.ollama.title": "ติดตั้ง Ollama (ไม่บังคับ)",
|
||||
"onboarding.ollama.desc": "ต้องใช้ Ollama สำหรับการประมวลผล LLM (แปล สรุป ฯลฯ) การบอกเล่าเสียงทำงานได้โดยไม่มี Ollama",
|
||||
"onboarding.ollama.download": "ดาวน์โหลด Ollama",
|
||||
"onboarding.ollama.modelHint": "หลังติดตั้ง ดาวน์โหลดโมเดลผ่านเทอร์มินัล",
|
||||
"onboarding.done.title": "ตั้งค่าเสร็จสมบูรณ์!",
|
||||
"onboarding.done.descWithKey": "กด {{key}} ค้างไว้แล้วพูด — เสียงจะถูกแปลงเป็นข้อความ",
|
||||
"onboarding.done.descNoKey": "ตั้งค่าปุ่มลัดในการตั้งค่าเพื่อเริ่มการบอกเล่าเสียง",
|
||||
"onboarding.done.start": "เริ่มต้น",
|
||||
"onboarding.back": "ย้อนกลับ",
|
||||
"onboarding.next": "ถัดไป",
|
||||
"hotkey.title": "การตั้งค่าปุ่มลัด",
|
||||
"hotkey.dictationTitle": "ตั้งค่าปุ่มลัดการบอกเล่า",
|
||||
"hotkey.oneTouchTitle": "ตั้งค่าปุ่มลัดโหมดสัมผัสเดียว",
|
||||
"hotkey.prompt": "กดปุ่มที่ต้องการ...",
|
||||
"hotkey.ready": "✓ {{keys}} — กดบันทึก",
|
||||
"hotkey.noKey": "กรุณากรอกปุ่ม",
|
||||
"hotkey.reserved": "{{keys}} เป็นปุ่มลัดที่ระบบสงวนไว้",
|
||||
"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 ในเครื่อง",
|
||||
"ollama.step2.title": "ขั้นตอนที่ 2 — ดาวน์โหลดโมเดล",
|
||||
"ollama.step2.desc": "ดาวน์โหลดโมเดลที่ต้องการผ่านเทอร์มินัล แนะนำ:",
|
||||
"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",
|
||||
"service.audioInput": "AUDIO INPUT",
|
||||
"service.ready": "READY",
|
||||
"service.connected": "CONNECTED",
|
||||
"service.offline": "OFFLINE",
|
||||
"service.active": "ACTIVE",
|
||||
"service.standby": "STANDBY",
|
||||
"common.cancel": "ยกเลิก",
|
||||
"common.save": "บันทึก",
|
||||
"common.delete": "ลบ",
|
||||
"common.add": "เพิ่ม",
|
||||
"common.edit": "แก้ไข",
|
||||
"common.close": "ปิด",
|
||||
"common.confirm": "ยืนยัน",
|
||||
"common.loading": "กำลังโหลด...",
|
||||
"common.copy": "คัดลอก",
|
||||
"common.test": "ทดสอบ",
|
||||
"common.stop": "หยุด",
|
||||
"date.today": "วันนี้",
|
||||
"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": "กำลังส่งการแจ้งเตือน...",
|
||||
"meeting.transcriptTab": "การถอดความ",
|
||||
"meeting.addDocument": "เพิ่มเอกสาร",
|
||||
"meeting.selectTemplate": "เลือกแม่แบบ",
|
||||
"meeting.generate": "สร้าง",
|
||||
"meeting.generating": "กำลังสร้างเอกสาร...",
|
||||
"meeting.editMode": "แก้ไข",
|
||||
"meeting.previewMode": "ดูตัวอย่าง",
|
||||
"meeting.modified": "แก้ไขแล้ว",
|
||||
"meeting.originalText": "ต้นฉบับ",
|
||||
"meeting.editedText": "แก้ไขแล้ว",
|
||||
"meeting.exportDocx": "ส่งออก DOCX",
|
||||
"meeting.exportTxt": "ส่งออก TXT",
|
||||
"meeting.exportFormat": "ส่งออก",
|
||||
"meeting.customPrompt": "พรอมต์กำหนดเอง",
|
||||
"meeting.templateName": "ชื่อแม่แบบ",
|
||||
"meeting.templatePrompt": "พรอมต์ AI",
|
||||
"meeting.templateSave": "บันทึกแม่แบบ",
|
||||
"meeting.documentDeleted": "ลบเอกสารแล้ว",
|
||||
"meeting.autoSaved": "บันทึกอัตโนมัติ",
|
||||
"meeting.minutesTemplate": "รายงานการประชุม",
|
||||
"meeting.reportTemplate": "รายงาน",
|
||||
"meeting.ideaNoteTemplate": "บันทึกไอเดีย",
|
||||
"meeting.customTemplate": "กำหนดเอง",
|
||||
"meeting.downloadTranscript": "ดาวน์โหลดการถอดความ",
|
||||
"meeting.polish": "ปรับแต่งด้วย AI",
|
||||
"meeting.polishing": "AI กำลังปรับแต่งการถอดความ...",
|
||||
"meeting.polished": "ปรับแต่งด้วย AI เสร็จสิ้น",
|
||||
"meeting.mindmapTemplate": "แผนที่ความคิด",
|
||||
"meeting.chat": "แชท AI",
|
||||
"meeting.chatPlaceholder": "ถามเกี่ยวกับการประชุม...",
|
||||
"meeting.chatSend": "ส่ง",
|
||||
"meeting.chatClear": "ล้างแชท",
|
||||
"meeting.copyToClipboard": "คัดลอกไปยังคลิปบอร์ด",
|
||||
"meeting.copied": "คัดลอกแล้ว",
|
||||
"meeting.chatCollapse": "ยุบแชท",
|
||||
"meeting.chatExpand": "ขยายแชท",
|
||||
"meeting.exportMd": "Markdown (.md)",
|
||||
"meeting.exportPdfFmt": "PDF (.pdf)",
|
||||
"meeting.polishFailed": "AI ปรับแต่งล้มเหลว",
|
||||
"meeting.viewDetailError": "ไม่สามารถโหลดรายละเอียดการประชุมได้",
|
||||
"meeting.startRecordingError": "ไม่สามารถเริ่มการบันทึกได้",
|
||||
"meeting.diarize": "แยกผู้พูด",
|
||||
"meeting.diarizing": "กำลังระบุผู้พูด...",
|
||||
"meeting.diarizeComplete": "แยกผู้พูดเสร็จสิ้น",
|
||||
"meeting.speaker": "ผู้พูด",
|
||||
"settings.hfToken": "โทเค็น HuggingFace",
|
||||
"settings.hfTokenHint": "ต้องใช้โทเค็น HuggingFace สำหรับการแยกผู้พูด",
|
||||
"settings.diarization": "การแยกผู้พูด",
|
||||
"settings.diarizationHint": "ระบุผู้พูดโดยอัตโนมัติหลังจากการบันทึกสิ้นสุด"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue