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": "Продолжить с Google",
"login.github": "Продолжить с GitHub",
"login.terms": "Продолжая, вы соглашаетесь с условиями использования и политикой конфиденциальности.",
"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": "Система",
"dashboard.currentBackend": "Текущий бэкенд",
"dashboard.backendLocal": "Локальный (Ollama)",
"dashboard.backendPremium": "Премиум (Claude)",
"dashboard.loginRequired": "Требуется вход",
"history.title": "История транскрипций",
"history.search": "Поиск...",
"history.entries": "{{count}} записей",
"history.loading": "Загрузка...",
"history.noResults": "Результаты не найдены",
"history.noHistory": "История пуста — начните запись",
"history.count": "{{count}} записей",
@ -51,7 +42,6 @@
"dictionary.words": "{{count}} слов",
"dictionary.add": "Добавить",
"dictionary.search": "Поиск...",
"dictionary.loading": "Загрузка...",
"dictionary.noResults": "Результаты не найдены",
"dictionary.noWords": "Слов нет — добавьте собственные слова для улучшения точности STT",
"dictionary.used": "Использовано {{count}} раз",
@ -64,7 +54,6 @@
"commands.add": "Добавить",
"commands.activeCommand": "Активная команда",
"commands.none": "Нет",
"commands.loading": "Загрузка...",
"commands.noCommands": "Команд нет — нажмите «Добавить» для создания",
"commands.editTitle": "Редактировать команду",
"commands.addTitle": "Добавить команду",
@ -138,31 +127,9 @@
"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": "Начать",
"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": "Для постобработки 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": "Задать горячую клавишу режима одного нажатия",
@ -195,8 +162,6 @@
"common.cancel": "Отмена",
"common.save": "Сохранить",
"common.delete": "Удалить",
"common.add": "Добавить",
"common.edit": "Изменить",
"common.close": "Закрыть",
"common.confirm": "Подтвердить",
"common.loading": "Загрузка...",
@ -217,30 +182,16 @@
"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": "Изменить название",
@ -266,24 +217,13 @@
"meeting.customPrompt": "Пользовательский запрос",
"meeting.templateName": "Название шаблона",
"meeting.templatePrompt": "ИИ-запрос",
"meeting.templateSave": "Сохранить шаблон",
"meeting.documentDeleted": "Документ удалён",
"meeting.autoSaved": "Автосохранение",
"meeting.minutesTemplate": "Протокол встречи",
"meeting.reportTemplate": "Отчёт",
"meeting.ideaNoteTemplate": "Заметка с идеями",
"meeting.customTemplate": "Пользовательский",
"meeting.downloadTranscript": "Скачать транскрипцию",
"meeting.polish": "Улучшить с ИИ",
"meeting.polishing": "ИИ улучшает транскрипцию...",
"meeting.polished": "Улучшение ИИ завершено",
"meeting.mindmapTemplate": "Карта мыслей",
"meeting.chat": "ИИ Чат",
"meeting.chatPlaceholder": "Задайте вопрос о встрече...",
"meeting.chatSend": "Отправить",
"meeting.chatClear": "Очистить чат",
"meeting.copyToClipboard": "Копировать в буфер обмена",
"meeting.copied": "Скопировано",
"meeting.chatCollapse": "Свернуть чат",
"meeting.chatExpand": "Развернуть чат",
"meeting.chatReasoning": "Размышляет…",
@ -294,8 +234,6 @@
"meeting.startRecordingError": "Не удалось начать запись",
"meeting.diarize": "Определить говорящих",
"meeting.diarizing": "Определение говорящих...",
"meeting.diarizeComplete": "Определение завершено",
"meeting.speaker": "Говорящий",
"settings.hfToken": "Токен HuggingFace",
"settings.hfTokenHint": "Токен HuggingFace необходим для определения говорящих",
"settings.diarization": "Диаризация",
@ -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",