Phase 10~11 전체 구현: 킬러 피처 5종 + 수익화 시스템
Phase 10 킬러 피처: - MemoService: 태그 CRUD + 마크다운 내보내기 (memo_tags DB) - VoiceCommandService: 키워드→명령어 매칭, 프리셋 4종 - ScreenContextService: PowerShell 활성 윈도우 + Ctrl+C 선택 텍스트 - ChainService: LLM 명령어 순차 실행 파이프라인 - CaptionService: 6초 청크 연속 전사 + 시스템 오디오 루프백 VoiceModeService 파이프라인 통합: - 녹음 시작 → 컨텍스트 캡처 → STT → 키워드 매칭 → LLM(체인/컨텍스트 주입) → 삽입 시스템 오디오 캡처: - setDisplayMediaRequestHandler + audio: 'loopback' (IPC 브릿지) - electron-audio-loopback 패키지 contextIsolation 호환 불가 → 직접 구현 Phase 11 수익화: - LicenseService: Free/Pro/Pro+ 3티어, LemonSqueezy API - Feature Gate: requireFeature/checkFeature/consumeFeature - 일일 쿼터: Free dictation 20/일, LLM 10/일 (SQLite daily_usage) - LicenseModal, ProBadge, UpgradePromptModal UI 디자인 보강: - d3roTypo(13종), d3roShadow(10종), d3roRadius(7종) 토큰 시스템 - ScreenPanel, ButtonGroup DS 컴포넌트 신규 - PhosphorText 4→13종 변형, MetalDial conic-gradient 광택 - 공유 컴포넌트: EmptyStateCard, SearchInput, PageHeader, HistoryEntryCard 기타: - 자막 핫키 SSOT 전체 연동 (Config→Hotkey→VoiceMode→Caption→Settings) - StatusBar 자막 LED + 효과음, 자막 로딩 UI - LLM 상태 이벤트 전파 수정 (폴링 제거 → onStatusChanged) - 커맨드 팝업 "선택 해제" 항목 추가
This commit is contained in:
parent
36d77ca224
commit
a31f96bbb8
97 changed files with 11853 additions and 1143 deletions
208
src/renderer/i18n/es.json
Normal file
208
src/renderer/i18n/es.json
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
{
|
||||
"app.name": "D3RO Voice",
|
||||
"app.tagline": "Asistente de voz con IA local",
|
||||
|
||||
"nav.dashboard": "Panel",
|
||||
"nav.history": "Historial",
|
||||
"nav.dictionary": "Diccionario",
|
||||
"nav.commands": "Comandos",
|
||||
"nav.settings": "Ajustes",
|
||||
|
||||
"dashboard.sessionOverview": "Resumen de sesión",
|
||||
"dashboard.systemStatus": "Estado del sistema",
|
||||
"dashboard.sessionsToday": "Sesiones hoy",
|
||||
"dashboard.pressToRecord": "Pulsa {{key}} para empezar a grabar",
|
||||
"dashboard.hotkeyNotSet": "Atajo no configurado",
|
||||
"dashboard.words": "palabras",
|
||||
"dashboard.total": "total",
|
||||
"dashboard.streak": "racha",
|
||||
"dashboard.days": "días",
|
||||
"dashboard.recording": "grabando",
|
||||
"dashboard.sessions": "sesiones",
|
||||
"dashboard.today": "hoy",
|
||||
"dashboard.recentTranscriptions": "Transcripciones recientes",
|
||||
"dashboard.noHistory": "Sin historial — pulsa el atajo para empezar a grabar",
|
||||
"dashboard.copy": "Copiar",
|
||||
"dashboard.entries": "{{count}} entradas",
|
||||
"dashboard.stat": "estadísticas",
|
||||
"dashboard.sys": "sistema",
|
||||
|
||||
"history.title": "Historial de transcripciones",
|
||||
"history.search": "Buscar...",
|
||||
"history.entries": "{{count}} entradas",
|
||||
"history.loading": "Cargando...",
|
||||
"history.noResults": "Sin resultados",
|
||||
"history.noHistory": "Sin historial — empieza a grabar",
|
||||
"history.count": "{{count}} entradas",
|
||||
|
||||
"dictionary.title": "Diccionario personalizado",
|
||||
"dictionary.words": "{{count}} palabras",
|
||||
"dictionary.add": "Añadir",
|
||||
"dictionary.search": "Buscar...",
|
||||
"dictionary.loading": "Cargando...",
|
||||
"dictionary.noResults": "Sin resultados",
|
||||
"dictionary.noWords": "Sin palabras — añade palabras personalizadas para mejorar la precisión del STT",
|
||||
"dictionary.used": "usado {{count}} veces",
|
||||
"dictionary.editTitle": "Editar palabra",
|
||||
"dictionary.addTitle": "Añadir palabra",
|
||||
"dictionary.word": "Palabra",
|
||||
"dictionary.pronunciation": "Pronunciación (opcional)",
|
||||
|
||||
"commands.title": "Comandos LLM",
|
||||
"commands.count": "{{count}} comandos",
|
||||
"commands.add": "Añadir",
|
||||
"commands.activeCommand": "Comando activo",
|
||||
"commands.none": "Ninguno",
|
||||
"commands.loading": "Cargando...",
|
||||
"commands.noCommands": "Sin comandos — haz clic en añadir para crear uno",
|
||||
"commands.editTitle": "Editar comando",
|
||||
"commands.addTitle": "Añadir comando",
|
||||
"commands.name": "Nombre",
|
||||
"commands.description": "Descripción",
|
||||
"commands.promptTemplate": "Plantilla de prompt",
|
||||
"commands.promptHelp": "{{text}} se reemplazará por el texto transcrito",
|
||||
"commands.defaultPrompt": "Por favor, mejora {{text}}.",
|
||||
|
||||
"settings.title": "Ajustes",
|
||||
"settings.tabs.general": "General",
|
||||
"settings.tabs.audio": "Audio",
|
||||
"settings.tabs.stt": "STT",
|
||||
"settings.tabs.llm": "LLM",
|
||||
"settings.tabs.about": "Acerca de",
|
||||
|
||||
"settings.shortcuts": "Atajos",
|
||||
"settings.dictation": "Dictado",
|
||||
"settings.dictation.desc": "Mantén pulsado para hablar. Al soltar, comienza la transcripción.",
|
||||
"settings.agent": "Modo agente",
|
||||
"settings.agent.descWithKey": "Haz doble clic en {{key}} para entrar en el modo agente.",
|
||||
"settings.agent.descNoKey": "Primero configura el atajo de dictado.",
|
||||
"settings.oneTouch": "Modo un toque",
|
||||
"settings.oneTouch.desc": "Pulsa para iniciar, pulsa de nuevo para detener. Requiere un atajo independiente.",
|
||||
"settings.key": "Tecla",
|
||||
"settings.notSet": "No configurado",
|
||||
"settings.enabled": "Activado",
|
||||
"settings.disabled": "Desactivado",
|
||||
|
||||
"settings.interface": "Interfaz",
|
||||
"settings.theme": "Tema",
|
||||
"settings.theme.system": "Sistema",
|
||||
"settings.theme.light": "Claro",
|
||||
"settings.theme.dark": "Oscuro",
|
||||
"settings.language": "Idioma",
|
||||
|
||||
"settings.appBehavior": "Comportamiento de la app",
|
||||
"settings.closeToTray": "Minimizar a la bandeja",
|
||||
"settings.autoLaunch": "Iniciar con el sistema",
|
||||
"settings.autoInsert": "Insertar texto automáticamente tras transcripción",
|
||||
"settings.soundEffects": "Efectos de sonido",
|
||||
|
||||
"settings.microphone": "Micrófono",
|
||||
"settings.inputDevice": "Dispositivo de entrada",
|
||||
"settings.deviceDefault": "(predeterminado)",
|
||||
"settings.textInsert": "Inserción de texto",
|
||||
"settings.insertMethod": "Método de inserción",
|
||||
"settings.insertClipboard": "Portapapeles (Ctrl+V)",
|
||||
"settings.insertKeyboard": "Escritura con teclado",
|
||||
|
||||
"settings.whisperModel": "Modelo Whisper",
|
||||
"settings.model.tiny": "tiny (39 MB, más rápido)",
|
||||
"settings.model.base": "base (74 MB, equilibrado)",
|
||||
"settings.model.small": "small (244 MB, bueno)",
|
||||
"settings.model.medium": "medium (769 MB, muy bueno)",
|
||||
"settings.model.large": "large-v3 (1.5 GB, mejor)",
|
||||
"settings.sttLanguage": "Idioma de reconocimiento",
|
||||
"settings.sttLang.auto": "Detección automática",
|
||||
|
||||
"settings.ollamaServer": "Servidor Ollama",
|
||||
"settings.ollamaUrl": "URL del servidor Ollama",
|
||||
"settings.ollamaHint": "D3RO Voice se conecta automáticamente cuando Ollama está en ejecución. Descarga modelos directamente desde Ollama (ej: ollama pull qwen3:4b).",
|
||||
"settings.postProcess": "Postprocesado de voz",
|
||||
"settings.defaultAction": "Acción de postprocesado predeterminada",
|
||||
"settings.action.none": "Ninguna (texto original sin cambios)",
|
||||
"settings.action.refine": "Refinar (gramática + naturalidad)",
|
||||
"settings.action.translate": "Traducir",
|
||||
"settings.action.summarize": "Resumir",
|
||||
"settings.action.grammar": "Corrección gramatical",
|
||||
"settings.action.custom": "Prompt personalizado",
|
||||
"settings.actionHint": "El postprocesado LLM seleccionado se aplica al texto transcrito tras grabar con el atajo. Solo funciona cuando Ollama está conectado.",
|
||||
|
||||
"settings.about.version": "Versión",
|
||||
"settings.about.techStack": "Stack tecnológico",
|
||||
"settings.about.techStackValue": "Electron + React 19 + MUI 7 + TypeScript",
|
||||
"settings.about.voiceEngine": "Motor de voz",
|
||||
"settings.about.voiceEngineValue": "STT: faster-whisper (local) / LLM: Ollama (local)",
|
||||
"settings.about.description": "Asistente de voz con IA completamente local, basado en ingeniería inversa de Speakly. Funciona sin dependencias en la nube.",
|
||||
"settings.about.restartOnboarding": "Ver guía de configuración inicial de nuevo",
|
||||
|
||||
"status.ollama": "OLLAMA",
|
||||
"status.offline": "OFFLINE",
|
||||
"status.nudge.title": "Ollama no está en ejecución",
|
||||
"status.nudge.desc": "Se necesita Ollama para el postprocesado LLM (traducción, resumen, etc.).",
|
||||
"status.nudge.guide": "Ver guía de instalación →",
|
||||
|
||||
"onboarding.welcome.title": "D3RO-VOICE",
|
||||
"onboarding.welcome.desc": "Sin escribir, con voz. Tu asistente de voz con IA local.",
|
||||
"onboarding.welcome.start": "Comenzar",
|
||||
"onboarding.mic.title": "Configurar micrófono",
|
||||
"onboarding.mic.desc": "Selecciona el micrófono que quieres usar. Puedes cambiarlo más tarde en los ajustes.",
|
||||
"onboarding.hotkey.title": "Configurar atajo",
|
||||
"onboarding.hotkey.desc": "Configura el atajo de dictado. Se grabará mientras mantengas la tecla pulsada.",
|
||||
"onboarding.hotkey.notSet": "No se ha configurado ningún atajo",
|
||||
"onboarding.hotkey.change": "Cambiar atajo",
|
||||
"onboarding.hotkey.set": "Configurar atajo",
|
||||
"onboarding.ollama.title": "Instalar Ollama (opcional)",
|
||||
"onboarding.ollama.desc": "Se necesita Ollama para el postprocesado LLM como traducción o resumen. El dictado de voz funciona sin Ollama.",
|
||||
"onboarding.ollama.download": "Descargar Ollama",
|
||||
"onboarding.ollama.modelHint": "Tras instalar, descarga un modelo desde la terminal",
|
||||
"onboarding.done.title": "¡Configuración completa!",
|
||||
"onboarding.done.descWithKey": "Mantén pulsado {{key}} y habla para convertir tu voz en texto.",
|
||||
"onboarding.done.descNoKey": "Configura un atajo en los ajustes para empezar a dictar.",
|
||||
"onboarding.done.start": "Comenzar",
|
||||
"onboarding.back": "Atrás",
|
||||
"onboarding.next": "Siguiente",
|
||||
|
||||
"hotkey.title": "Configurar atajo",
|
||||
"hotkey.dictationTitle": "Configurar atajo de dictado",
|
||||
"hotkey.oneTouchTitle": "Configurar atajo de modo un toque",
|
||||
"hotkey.prompt": "Pulsa una combinación de teclas...",
|
||||
"hotkey.ready": "✓ {{keys}} — pulsa guardar",
|
||||
"hotkey.noKey": "Por favor, introduce una tecla",
|
||||
"hotkey.reserved": "{{keys}} es un atajo reservado por el sistema",
|
||||
"hotkey.current": "Actual: {{keys}}",
|
||||
"hotkey.hint": "Introduce una combinación (ej: Ctrl+Shift+Q) o una tecla sola (ej: F5)",
|
||||
"hotkey.reset": "Volver a introducir",
|
||||
|
||||
"ollama.title": "GUÍA DE CONFIGURACIÓN DE OLLAMA",
|
||||
"ollama.step1.title": "PASO 1 — Instalar Ollama",
|
||||
"ollama.step1.desc": "Ollama es una herramienta gratuita para ejecutar LLMs de forma local.",
|
||||
"ollama.step2.title": "PASO 2 — Descargar un modelo",
|
||||
"ollama.step2.desc": "Ejecuta el siguiente comando en la terminal para descargar el modelo recomendado:",
|
||||
"ollama.step2.alt": "O un modelo más grande: ollama pull qwen3:8b (más preciso, más lento)",
|
||||
"ollama.step3.title": "PASO 3 — Conexión automática",
|
||||
"ollama.step3.desc": "D3RO-VOICE detecta automáticamente cuando Ollama está en ejecución. Cuando el LED de la barra de estado pase de rojo a verde, ¡estará listo!",
|
||||
|
||||
"service.sttEngine": "MOTOR STT",
|
||||
"service.ollamaLlm": "OLLAMA LLM",
|
||||
"service.hotkeyHook": "ATAJO DE TECLADO",
|
||||
"service.audioInput": "ENTRADA DE AUDIO",
|
||||
"service.ready": "LISTO",
|
||||
"service.connected": "CONECTADO",
|
||||
"service.offline": "OFFLINE",
|
||||
"service.active": "ACTIVO",
|
||||
"service.standby": "EN ESPERA",
|
||||
|
||||
"common.cancel": "Cancelar",
|
||||
"common.save": "Guardar",
|
||||
"common.delete": "Eliminar",
|
||||
"common.add": "Añadir",
|
||||
"common.edit": "Editar",
|
||||
"common.close": "Cerrar",
|
||||
"common.confirm": "Confirmar",
|
||||
"common.loading": "Cargando...",
|
||||
"common.copy": "Copiar",
|
||||
"common.test": "Probar",
|
||||
"common.stop": "Detener",
|
||||
|
||||
"date.today": "Hoy",
|
||||
"date.yesterday": "Ayer"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue