* feat: add configurable auto-submit after transcription paste Add an Advanced output setting that can send Enter, Ctrl+Enter, or Cmd+Enter after text insertion so Handy works smoothly with different editor and agent submit shortcuts. This keeps the behavior opt-in, persists it in settings, and adds focused Rust tests for defaults and paste auto-submit decision logic. Co-authored-by: Cursor <cursoragent@cursor.com> * feat: simplify auto submit configuration UX Replace the auto-submit toggle and key dropdown with a single dropdown that includes an Off state, so output behavior is clearer and faster to configure. Clarify Meta-key behavior by showing Cmd+Enter on macOS and Super+Enter on Windows/Linux, with matching localized copy. Co-authored-by: Cursor <cursoragent@cursor.com> * use bindings generated on macos * and translations. --------- Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: CJ Pais <cj@cjpais.com>
519 lines
28 KiB
JSON
519 lines
28 KiB
JSON
{
|
||
"tray": {
|
||
"settings": "Настройки...",
|
||
"checkUpdates": "Проверить обновления...",
|
||
"copyLastTranscript": "Скопировать последнюю транскрипцию",
|
||
"unloadModel": "Выгрузить модель",
|
||
"quit": "Выход",
|
||
"cancel": "Отмена"
|
||
},
|
||
"sidebar": {
|
||
"general": "Общие",
|
||
"models": "Модели",
|
||
"advanced": "Продвинутые",
|
||
"postProcessing": "Постобработка",
|
||
"history": "История",
|
||
"debug": "Отладка",
|
||
"about": "О программе"
|
||
},
|
||
"onboarding": {
|
||
"subtitle": "Для начала выберите модель транскрипции",
|
||
"recommended": "Рекомендуется",
|
||
"download": "Скачать",
|
||
"downloading": "Загрузка...",
|
||
"customModelDescription": "Официально не поддерживается",
|
||
"downloadFailed": "Загрузка не удалась. Пожалуйста, попробуйте снова.",
|
||
"modelCard": {
|
||
"accuracy": "точность",
|
||
"speed": "скорость"
|
||
},
|
||
"models": {
|
||
"small": {
|
||
"name": "Whisper Small",
|
||
"description": "Быстро и достаточно точно."
|
||
},
|
||
"medium": {
|
||
"name": "Whisper Medium",
|
||
"description": "Хорошая точность, средняя скорость."
|
||
},
|
||
"turbo": {
|
||
"name": "Whisper Turbo",
|
||
"description": "Сбалансированная точность и скорость."
|
||
},
|
||
"large": {
|
||
"name": "Whisper Large",
|
||
"description": "Хорошая точность, но медленная."
|
||
},
|
||
"parakeet-tdt-0.6b-v2": {
|
||
"name": "Parakeet V2",
|
||
"description": "Только английский. Лучшая модель для англоговорящих."
|
||
},
|
||
"parakeet-tdt-0.6b-v3": {
|
||
"name": "Parakeet V3",
|
||
"description": "Быстро и точно"
|
||
},
|
||
"moonshine-base": {
|
||
"name": "Moonshine Base",
|
||
"description": "Very fast, English only. Handles accents well."
|
||
}
|
||
},
|
||
"errors": {
|
||
"loadModels": "Не удалось загрузить доступные модели.",
|
||
"downloadModel": "Не удалось загрузить модель: {{error}}."
|
||
},
|
||
"permissions": {
|
||
"title": "Требуются разрешения",
|
||
"description": "Handy требуются некоторые разрешения для корректной работы.",
|
||
"microphone": {
|
||
"title": "Доступ к микрофону",
|
||
"description": "Необходим для прослушивания вашего голоса для транскрипции."
|
||
},
|
||
"accessibility": {
|
||
"title": "Доступ к универсальному доступу",
|
||
"description": "Необходим для ввода расшифрованного текста в ваши приложения."
|
||
},
|
||
"grant": "Предоставить разрешение",
|
||
"granted": "Предоставлено",
|
||
"waiting": "Ожидание...",
|
||
"allGranted": "Всё готово!",
|
||
"errors": {
|
||
"checkFailed": "Не удалось проверить разрешения. Пожалуйста, попробуйте снова.",
|
||
"requestFailed": "Не удалось запросить разрешение. Пожалуйста, попробуйте снова."
|
||
}
|
||
}
|
||
},
|
||
"modelSelector": {
|
||
"custom": "Пользовательская",
|
||
"active": "Активный",
|
||
"switching": "Переключение...",
|
||
"noModelsAvailable": "Нет доступных моделей",
|
||
"extracting": "Извлечение {{modelName}}...",
|
||
"extractingMultiple": "Извлечение моделей {{count}}...",
|
||
"extractingGeneric": "Извлечение...",
|
||
"downloading": "Загрузка {{percentage}} %",
|
||
"downloadingMultiple": "Загрузка моделей {{count}}...",
|
||
"modelReady": "Модель готова",
|
||
"loading": "Загрузка {{modelName}}...",
|
||
"loadingGeneric": "Загрузка...",
|
||
"modelError": "Ошибка модели",
|
||
"modelUnloaded": "Модель выгружена",
|
||
"noModelDownloadRequired": "Нет модели – требуется загрузка",
|
||
"deleteModel": "Удалить {{modelName}}",
|
||
"downloadSpeed": "{{speed}} МБ/с",
|
||
"capabilities": {
|
||
"languageSelection": "Поддерживает несколько языков ввода",
|
||
"multiLanguage": "Многоязычный",
|
||
"translation": "Может переводить на английский",
|
||
"translate": "Перевести на английский",
|
||
"singleLanguage": "Поддерживает только этот язык",
|
||
"languageOnly": "Только {{language}}"
|
||
},
|
||
"cancel": "Отмена",
|
||
"cancelDownload": "Отменить загрузку"
|
||
},
|
||
"settings": {
|
||
"modelSettings": {
|
||
"title": "Настройки {{model}}",
|
||
"noSettingsNeeded": "Эта модель работает автоматически без необходимости настройки."
|
||
},
|
||
"models": {
|
||
"title": "Модели транскрипции",
|
||
"description": "Выберите модель транскрипции или загрузите дополнительные модели. Разные модели предлагают разные уровни точности и скорости.",
|
||
"downloaded": "Загружено",
|
||
"available": "Доступно для загрузки",
|
||
"deleteConfirm": "Вы уверены, что хотите удалить {{modelName}}? Вам нужно будет загрузить её снова, чтобы использовать.",
|
||
"deleteActiveConfirm": "{{modelName}} — ваша активная модель. Удаление остановит транскрипцию, пока вы не выберете новую модель. Вы уверены?",
|
||
"deleteTitle": "Удалить модель",
|
||
"filters": {
|
||
"all": "Все",
|
||
"multiLanguage": "Многоязычные",
|
||
"translation": "Перевод",
|
||
"allLanguages": "Все языки"
|
||
},
|
||
"noModelsMatch": "Нет моделей, соответствующих этому фильтру.",
|
||
"yourModels": "Загруженные модели",
|
||
"availableModels": "Доступны для загрузки"
|
||
},
|
||
"general": {
|
||
"title": "Общие",
|
||
"shortcut": {
|
||
"title": "Ярлыки Handy",
|
||
"description": "Настройте сочетания клавиш для запуска записи речи в текст",
|
||
"loading": "Загрузка ярлыков...",
|
||
"none": "Ярлыки не настроены",
|
||
"notFound": "Ярлык не найден",
|
||
"pressKeys": "Нажимайте клавиши...",
|
||
"bindings": {
|
||
"transcribe": {
|
||
"name": "Горячая клавиша транскрипции",
|
||
"description": "Сочетание клавиш для записи и транскрибирования вашего голоса."
|
||
},
|
||
"cancel": {
|
||
"name": "Горячая клавиша отмены",
|
||
"description": "Сочетание клавиш для отмены текущей записи."
|
||
},
|
||
"transcribe_with_post_process": {
|
||
"name": "Горячая клавиша постобработки",
|
||
"description": "Необязательно: Специальная горячая клавиша, которая всегда применяет AI-постобработку к вашей транскрипции."
|
||
}
|
||
},
|
||
"errors": {
|
||
"restore": "Не удалось восстановить исходный ярлык",
|
||
"set": "Не удалось установить ярлык: {{error}}",
|
||
"reset": "Не удалось сбросить ярлык до исходного значения"
|
||
}
|
||
},
|
||
"language": {
|
||
"title": "Язык",
|
||
"description": "Выберите язык для распознавания речи. «Авто» автоматически определит язык, а выбор конкретного языка может повысить точность определения этого языка.",
|
||
"descriptionUnsupported": "Модель Parakeet автоматически определяет язык. Ручной выбор не требуется.",
|
||
"searchPlaceholder": "Поиск языков...",
|
||
"noResults": "Языки не найдены",
|
||
"auto": "Авто"
|
||
},
|
||
"pushToTalk": {
|
||
"label": "Нажми и говори",
|
||
"description": "Удерживайте, чтобы записать, отпустите, чтобы остановить"
|
||
}
|
||
},
|
||
"sound": {
|
||
"title": "Звук",
|
||
"microphone": {
|
||
"title": "Микрофон",
|
||
"description": "Выберите предпочитаемое микрофонное устройство",
|
||
"placeholder": "Выбрать микрофон...",
|
||
"loading": "Загрузка..."
|
||
},
|
||
"audioFeedback": {
|
||
"label": "Аудио обратная связь",
|
||
"description": "Воспроизведение звука при запуске и остановке записи"
|
||
},
|
||
"outputDevice": {
|
||
"title": "Устройство вывода",
|
||
"description": "Выберите предпочитаемое устройство вывода звука для звуков обратной связи",
|
||
"placeholder": "Выберите устройство вывода...",
|
||
"loading": "Загрузка..."
|
||
},
|
||
"volume": {
|
||
"title": "Объем",
|
||
"description": "Отрегулируйте громкость звуков звуковой обратной связи"
|
||
}
|
||
},
|
||
"advanced": {
|
||
"title": "Продвинутые",
|
||
"groups": {
|
||
"app": "Приложение",
|
||
"output": "Вывод",
|
||
"transcription": "Транскрипция",
|
||
"history": "История",
|
||
"experimental": "Экспериментальное"
|
||
},
|
||
"experimentalToggle": {
|
||
"label": "Экспериментальные функции",
|
||
"description": "Включить экспериментальные функции, которые находятся в разработке."
|
||
},
|
||
"startHidden": {
|
||
"label": "Запускать скрыто",
|
||
"description": "Запускать в системный трей, не открывая окно."
|
||
},
|
||
"autostart": {
|
||
"label": "Запуск при запуске",
|
||
"description": "Автоматически запускать Handy при входе в систему."
|
||
},
|
||
"showTrayIcon": {
|
||
"label": "Показать значок в трее",
|
||
"description": "Отображать значок Handy в системном трее."
|
||
},
|
||
"overlay": {
|
||
"title": "Позиция наложения",
|
||
"description": "Отображение наложения визуальной обратной связи во время записи и транскрипции. В Linux рекомендуется выбрать «Нет».",
|
||
"options": {
|
||
"none": "Нет",
|
||
"bottom": "Снизу",
|
||
"top": "Сверху"
|
||
}
|
||
},
|
||
"pasteMethod": {
|
||
"title": "Метод вставки",
|
||
"description": "Выбрать способ вставки текста. Прямой: имитирует набор текста через системный ввод. Нет: пропуск вставки, обновление только истории/буфера обмена.",
|
||
"options": {
|
||
"clipboard": "Буфер обмена ({{modifier}}+V)",
|
||
"clipboardCtrlShiftV": "Буфер обмена (Ctrl+Shift+V)",
|
||
"clipboardShiftInsert": "Буфер обмена (Shift+Insert)",
|
||
"direct": "Прямой",
|
||
"none": "Нет"
|
||
}
|
||
},
|
||
"clipboardHandling": {
|
||
"title": "Обработка буфера обмена",
|
||
"description": "Функция «Не изменять буфер обмена» сохраняет текущее содержимое буфера обмена после транскрипции. Копировать в буфер обмена оставляет результат транскрипции в буфере обмена после вставки.",
|
||
"options": {
|
||
"dontModify": "Не изменять буфер обмена",
|
||
"copyToClipboard": "Копировать в буфер обмена"
|
||
}
|
||
},
|
||
"autoSubmit": {
|
||
"title": "Автоматическая отправка",
|
||
"description": "Автоматически отправляет выбранную комбинацию клавиш после вставки текста. Cmd+Enter применяется на macOS, а Windows/Linux используют Super+Enter.",
|
||
"options": {
|
||
"off": "Выкл.",
|
||
"enter": "Enter",
|
||
"cmdEnter": "Cmd+Enter",
|
||
"superEnter": "Super+Enter",
|
||
"ctrlEnter": "Ctrl+Enter"
|
||
}
|
||
},
|
||
"translateToEnglish": {
|
||
"label": "Перевести на английский",
|
||
"description": "Автоматически переводить речь с других языков на английский во время транскрипции.",
|
||
"descriptionUnsupported": "Перевод не поддерживается моделью {{model}}."
|
||
},
|
||
"modelUnload": {
|
||
"title": "Выгрузить модель",
|
||
"description": "Автоматически освобождать память графического процессора/процессора, если модель не использовалась в течение указанного времени.",
|
||
"options": {
|
||
"never": "Никогда",
|
||
"immediately": "Немедленно",
|
||
"min2": "Через 2 минуты",
|
||
"min5": "Через 5 минут",
|
||
"min10": "Через 10 минут",
|
||
"min15": "Через 15 минут",
|
||
"hour1": "Через 1 час",
|
||
"sec5": "Через 5 секунд (отладка)"
|
||
}
|
||
},
|
||
"customWords": {
|
||
"title": "Пользовательские слова",
|
||
"description": "Добавить слова, которые часто неправильно слышатся или пишутся с ошибками во время транскрипции. Система автоматически исправит похожие по звучанию слова, чтобы они соответствовали вашему списку.",
|
||
"placeholder": "Добавить слово",
|
||
"add": "Добавлять",
|
||
"remove": "Удалить {{word}}"
|
||
}
|
||
},
|
||
"postProcessing": {
|
||
"title": "Постобработка",
|
||
"hotkey": {
|
||
"title": "Горячая клавиша"
|
||
},
|
||
"api": {
|
||
"title": "API (совместимый с OpenAI)",
|
||
"provider": {
|
||
"title": "Поставщик",
|
||
"description": "Выберите поставщика, совместимого с OpenAI."
|
||
},
|
||
"appleIntelligence": {
|
||
"title": "Apple Интеллект",
|
||
"description": "Полностью работает на устройстве. Никакой ключ API или доступ к сети не требуется.",
|
||
"requirements": "Требуется Apple Silicon Mac под управлением macOS Tahoe (26.0) или более поздней версии. Apple Intelligence должен быть включен в настройках системы.",
|
||
"unavailable": "Apple Intelligence недоступен на этом устройстве. Требуется Apple Silicon Mac под управлением macOS Tahoe (26.0) или более поздней версии с включенным Apple Intelligence в настройках системы."
|
||
},
|
||
"baseUrl": {
|
||
"title": "Базовый URL",
|
||
"description": "Базовый URL-адрес API для выбранного провайдера. Редактировать можно только настраиваемого поставщика.",
|
||
"placeholder": "https://api.openai.com/v1"
|
||
},
|
||
"apiKey": {
|
||
"title": "API-ключ",
|
||
"description": "API-ключ для выбранного провайдера.",
|
||
"placeholder": "sk-..."
|
||
},
|
||
"model": {
|
||
"title": "Модель",
|
||
"descriptionApple": "Укажите дополнительный числовой лимит токенов или сохраните настройки по умолчанию, установленные на устройстве.",
|
||
"descriptionCustom": "Укажите идентификатор модели, ожидаемый вашей пользовательской конечной точкой.",
|
||
"descriptionDefault": "Выберите модель, предоставляемую выбранным поставщиком.",
|
||
"placeholderApple": "Apple Интеллект",
|
||
"placeholderWithOptions": "Найдите или выберите модель",
|
||
"placeholderNoOptions": "Введите название модели",
|
||
"refreshModels": "Обновить модели"
|
||
}
|
||
},
|
||
"prompts": {
|
||
"title": "Быстрый",
|
||
"selectedPrompt": {
|
||
"title": "Выбранная подсказка",
|
||
"description": "Выберите шаблон для уточнения транскрипции или создайте новый. Используйте ${output} внутри текста приглашения для ссылки на записанную стенограмму."
|
||
},
|
||
"noPrompts": "Нет доступных подсказок",
|
||
"selectPrompt": "Выберите подсказку",
|
||
"createNew": "Создать новую подсказку",
|
||
"promptLabel": "Подскажите этикетку",
|
||
"promptLabelPlaceholder": "Введите имя подсказки",
|
||
"promptInstructions": "Оперативная инструкция",
|
||
"promptInstructionsPlaceholder": "Напишите инструкции для запуска после транскрипции. Пример. Улучшите грамматику и ясность следующего текста: ${output}",
|
||
"promptTip": "Совет. Используйте <code>${output}</code>, чтобы вставить расшифрованный текст в приглашение.",
|
||
"updatePrompt": "Обновить запрос",
|
||
"deletePrompt": "Удалить подсказку",
|
||
"createPrompt": "Создать подсказку",
|
||
"cancel": "Отмена",
|
||
"selectToEdit": "Выберите приглашение выше, чтобы просмотреть и изменить его сведения.",
|
||
"createFirst": "Нажмите «Создать новое приглашение» выше, чтобы создать первое приглашение для постобработки."
|
||
}
|
||
},
|
||
"history": {
|
||
"title": "История",
|
||
"openFolder": "Открыть папку с записями",
|
||
"loading": "Загрузка истории...",
|
||
"empty": "Транскрипций пока нет. Начните запись, чтобы создать свою историю!",
|
||
"copyToClipboard": "Скопировать транскрипцию в буфер обмена",
|
||
"save": "Сохранить транскрипцию",
|
||
"unsave": "Удалить из сохраненных",
|
||
"delete": "Удалить запись",
|
||
"deleteError": "Не удалось удалить запись. Пожалуйста, попробуйте еще раз."
|
||
},
|
||
"debug": {
|
||
"title": "Отлаживать",
|
||
"logDirectory": {
|
||
"title": "Каталог журналов",
|
||
"description": "Место хранения файлов журналов"
|
||
},
|
||
"logLevel": {
|
||
"title": "Уровень журнала",
|
||
"description": "Установите уровень детализации журнала"
|
||
},
|
||
"updateChecks": {
|
||
"label": "Проверьте наличие обновлений",
|
||
"description": "Автоматически проверять наличие новых версий Handy"
|
||
},
|
||
"soundTheme": {
|
||
"label": "Звуковая тема",
|
||
"description": "Выберите звуковую тему для начала и остановки записи обратной связи."
|
||
},
|
||
"wordCorrectionThreshold": {
|
||
"title": "Порог исправления слов",
|
||
"description": "Чувствительность к пользовательским исправлениям слов"
|
||
},
|
||
"historyLimit": {
|
||
"title": "Предел истории",
|
||
"description": "Максимальное количество записей истории, которые можно сохранить",
|
||
"entries": "записи"
|
||
},
|
||
"recordingRetention": {
|
||
"title": "Автоматическое удаление записей",
|
||
"description": "Автоматически удаляйте старые записи для экономии места",
|
||
"never": "Никогда",
|
||
"preserveLimit": "Сохраняйте последнюю версию {{count}}",
|
||
"days3": "Через 3 дня",
|
||
"weeks2": "Через 2 недели",
|
||
"months3": "Через 3 месяца",
|
||
"placeholder": "Выберите срок хранения..."
|
||
},
|
||
"alwaysOnMicrophone": {
|
||
"label": "Всегда включенный микрофон",
|
||
"description": "Держите микрофон активным для более быстрого ответа"
|
||
},
|
||
"clamshellMicrophone": {
|
||
"title": "Раскладной микрофон",
|
||
"description": "Микрофон для использования при закрытой крышке ноутбука"
|
||
},
|
||
"postProcessingToggle": {
|
||
"label": "Постобработка",
|
||
"description": "Включить уточнение текста с помощью искусственного интеллекта после транскрипции"
|
||
},
|
||
"muteWhileRecording": {
|
||
"label": "Отключить звук во время записи",
|
||
"description": "Отключение звука системы во время записи"
|
||
},
|
||
"appendTrailingSpace": {
|
||
"label": "Добавить конечный пробел",
|
||
"description": "Добавить пробел после вставленной транскрипции"
|
||
},
|
||
"keyboardImplementation": {
|
||
"title": "Keyboard Implementation",
|
||
"description": "Choose the keyboard shortcut backend.",
|
||
"bindingsReset": "Keyboard shortcuts were incompatible and reset to defaults"
|
||
},
|
||
"paths": {
|
||
"appData": "Данные приложения:",
|
||
"models": "Модели:",
|
||
"settings": "Настройки:"
|
||
},
|
||
"pasteDelay": {
|
||
"title": "Задержка вставки",
|
||
"description": "Задержка перед отправкой нажатия клавиши вставки (в миллисекундах). Увеличьте, если вставляется неправильный текст."
|
||
}
|
||
},
|
||
"about": {
|
||
"title": "О программе",
|
||
"version": {
|
||
"title": "Версия",
|
||
"description": "Текущая версия Handy"
|
||
},
|
||
"appDataDirectory": {
|
||
"title": "Каталог данных приложения",
|
||
"description": "Место, где Handy хранит свои данные"
|
||
},
|
||
"sourceCode": {
|
||
"title": "Исходный код",
|
||
"description": "Просмотреть исходный код и внести свой вклад",
|
||
"button": "Посмотреть на GitHub"
|
||
},
|
||
"supportDevelopment": {
|
||
"title": "Поддержка развития",
|
||
"description": "Помогите нам продолжить создание Handy",
|
||
"button": "Пожертвовать"
|
||
},
|
||
"acknowledgments": {
|
||
"title": "Благодарности",
|
||
"whisper": {
|
||
"title": "Whisper.cpp",
|
||
"description": "Высокопроизводительный вывод модели автоматического распознавания речи OpenAI Whisper",
|
||
"details": "Handy использует Whisper.cpp для быстрой локальной обработки речи в текст. Спасибо великолепной работе Георгия Герганова и его участников."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"footer": {
|
||
"downloadingModel": "Загрузка {{model}}...",
|
||
"checkingUpdates": "Проверяем наличие обновлений...",
|
||
"updateAvailable": "Доступно обновление: {{version}}",
|
||
"updateAvailableShort": "Доступно обновление",
|
||
"upToDate": "Не требует обновлений",
|
||
"downloadUpdate": "Скачать обновление",
|
||
"restart": "Перезапуск",
|
||
"updateCheckingDisabled": "Проверка обновлений отключена",
|
||
"downloading": "Загрузка... {{progress}} %",
|
||
"installing": "Установка...",
|
||
"preparing": "Подготовка...",
|
||
"checkForUpdates": "Проверьте наличие обновлений"
|
||
},
|
||
"common": {
|
||
"loading": "Загрузка...",
|
||
"save": "Сохранять",
|
||
"cancel": "Отмена",
|
||
"reset": "Перезагрузить",
|
||
"add": "Добавлять",
|
||
"remove": "Удалять",
|
||
"delete": "Удалить",
|
||
"edit": "Редактировать",
|
||
"create": "Создавать",
|
||
"update": "Обновлять",
|
||
"close": "Закрывать",
|
||
"open": "Открыть",
|
||
"default": "По умолчанию",
|
||
"enabled": "Включено",
|
||
"disabled": "Неполноценный",
|
||
"on": "На",
|
||
"off": "Выключенный",
|
||
"yes": "Да",
|
||
"no": "Нет",
|
||
"noOptionsFound": "Вариантов не найдено"
|
||
},
|
||
"accessibility": {
|
||
"permissionsRequired": "Требуются разрешения на доступ",
|
||
"permissionsDescription": "Handy необходимы разрешения на доступ для ввода расшифрованного текста.",
|
||
"openSettings": "Открыть настройки системы",
|
||
"dismiss": "Увольнять"
|
||
},
|
||
"errors": {
|
||
"loadDirectory": "Ошибка загрузки каталога: {{error}}."
|
||
},
|
||
"appLanguage": {
|
||
"title": "Язык приложения",
|
||
"description": "Изменить языка интерфейса Handy"
|
||
},
|
||
"overlay": {
|
||
"transcribing": "Расшифровка...",
|
||
"processing": "Обработка..."
|
||
}
|
||
}
|