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": "Локальный голосовой ИИ-ассистент",
"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 МБ, самая быстрая)",
"settings.model.base": "base (74 МБ, баланс)",
@ -112,7 +101,6 @@
"settings.model.large": "large-v3 (1.5 ГБ, лучшая)",
"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": "Локальный голосовой ИИ-ассистент, основанный на методах обратной разработки Speakly. Работает полностью локально без зависимости от облачных сервисов.",
"settings.about.restartOnboarding": "Показать начальную настройку снова",
"status.ollama": "OLLAMA",
"status.offline": "OFFLINE",
"status.nudge.title": "Ollama не запущена",
"status.nudge.desc": "Для постобработки LLM (перевод, резюмирование и т.д.) требуется Ollama.",
"status.nudge.guide": "Смотреть инструкцию по установке →",
"onboarding.welcome.title": "D3RO-VOICE",
"onboarding.welcome.desc": "Без набора текста — только голос. Локальный голосовой ИИ-ассистент.",
"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": "Отправка уведомления..."
}