refactor(i18n): date 중복 버그 수정 + 고아 키 967건 삭제 (WS4)

- date.today/yesterday 중복 정의(uppercase 잔해 "TODAY"/"YESTERDAY")
  삭제 (ko/en) -> 한국어 사용자에게 잘못된 대문자 표시 버그 해소.
- 고아 키 967건 삭제: ko/en 109건 + 타 10 locale 858건.
- P1 재검증으로 20건 KEEP 전환 (camelCase license.feature 15 +
  nav 5) -- 동적 보간/프로퍼티 패스스루 참조로, typecheck가 잡지
  못하는 런타임 버그 15건 예방.
정책: docs/REFACTOR_POLICY.md DP3, DP9, 이식 인사이트 P1
This commit is contained in:
Yun Chan 2026-07-22 01:54:51 +09:00
parent 078304dda9
commit 87f2dac9e5
12 changed files with 0 additions and 864 deletions

View file

@ -18,32 +18,23 @@
"login.google": "Continuar con Google",
"login.github": "Continuar con GitHub",
"login.terms": "Al continuar, aceptas los Términos de servicio y la Política de privacidad.",
"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",
"dashboard.currentBackend": "Backend actual",
"dashboard.backendLocal": "Local (Ollama)",
"dashboard.backendPremium": "Premium (Claude)",
"dashboard.loginRequired": "Inicio de sesión requerido",
"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",
@ -51,7 +42,6 @@
"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",
@ -64,7 +54,6 @@
"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",
@ -138,31 +127,9 @@
"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",
@ -195,8 +162,6 @@
"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...",
@ -217,30 +182,16 @@
"nav.meeting": "Reunión",
"meeting.title": "Modo Reunión",
"meeting.newMeeting": "Nueva Reunión",
"meeting.startRecording": "Iniciar Grabación",
"meeting.stopRecording": "Detener Grabación",
"meeting.recording": "Grabando",
"meeting.processing": "Generando actas...",
"meeting.completed": "Completado",
"meeting.error": "Error",
"meeting.elapsed": "Tiempo transcurrido",
"meeting.memoPlaceholder": "Escribe un memo (Enter para añadir)",
"meeting.memoAdded": "Memo añadido",
"meeting.noSessions": "Sin grabaciones de reuniones",
"meeting.noSessionsDesc": "Pulsa Nueva Reunión para empezar a grabar",
"meeting.summary": "Resumen",
"meeting.decisions": "Decisiones",
"meeting.actionItems": "Tareas",
"meeting.timeline": "Línea de tiempo",
"meeting.transcript": "Transcripción bruta",
"meeting.memos": "Memos",
"meeting.exportPdf": "Exportar PDF",
"meeting.exportMarkdown": "Exportar Markdown",
"meeting.delete": "Eliminar",
"meeting.deleteConfirm": "¿Eliminar este registro de reunión?",
"meeting.backToList": "Volver a la lista",
"meeting.notificationTitle": "Actas listas",
"meeting.notificationBody": "Las actas de la reunión han sido generadas.",
"meeting.sessions": "{{count}} sesiones",
"meeting.duration": "{{minutes}} min",
"meeting.editTitle": "Editar título",
@ -266,24 +217,13 @@
"meeting.customPrompt": "Prompt personalizado",
"meeting.templateName": "Nombre de plantilla",
"meeting.templatePrompt": "Prompt de IA",
"meeting.templateSave": "Guardar plantilla",
"meeting.documentDeleted": "Documento eliminado",
"meeting.autoSaved": "Guardado automáticamente",
"meeting.minutesTemplate": "Actas de reunión",
"meeting.reportTemplate": "Informe",
"meeting.ideaNoteTemplate": "Nota de ideas",
"meeting.customTemplate": "Personalizado",
"meeting.downloadTranscript": "Descargar transcripción",
"meeting.polish": "Pulir con IA",
"meeting.polishing": "IA puliendo transcripción...",
"meeting.polished": "Pulido con IA completado",
"meeting.mindmapTemplate": "Mapa mental",
"meeting.chat": "Chat IA",
"meeting.chatPlaceholder": "Pregunta sobre la reunión...",
"meeting.chatSend": "Enviar",
"meeting.chatClear": "Limpiar chat",
"meeting.copyToClipboard": "Copiar al portapapeles",
"meeting.copied": "Copiado",
"meeting.chatCollapse": "Contraer chat",
"meeting.chatExpand": "Expandir chat",
"meeting.chatReasoning": "Razonando…",
@ -294,8 +234,6 @@
"meeting.startRecordingError": "Error al iniciar la grabación",
"meeting.diarize": "Identificar hablantes",
"meeting.diarizing": "Identificando hablantes...",
"meeting.diarizeComplete": "Identificación completada",
"meeting.speaker": "Hablante",
"settings.hfToken": "Token de HuggingFace",
"settings.hfTokenHint": "Se necesita un token de HuggingFace para identificar hablantes",
"settings.diarization": "Identificación de hablantes",
@ -310,11 +248,9 @@
"theme.dracula": "Dracula",
"license.signInRequired": "Sign in to manage your subscription",
"license.signInToUpgrade": "Sign in to upgrade",
"license.subscriptionActive": "Subscription active",
"license.subscriptionManage": "Manage subscription",
"license.upgradeToProDesc": "Unlock Premium AI models, cloud sync, and more",
"license.currentPlanActive": "Your current plan",
"license.openBillingPage": "Open billing page",
"license.premiumQuota": "Premium Quota",
"license.modelHaiku": "Haiku",
"license.modelSonnet": "Sonnet",