Add Russian language (#474)
* Add Russian language * Add Russian language * Clean up hidden Unicode characters in Russian translation * add languages.ts * add some missing translations --------- Co-authored-by: CJ Pais <cj@cjpais.com>
This commit is contained in:
parent
d06d318a66
commit
b55c3fddde
5 changed files with 426 additions and 3 deletions
|
|
@ -19,4 +19,5 @@ export const LANGUAGE_METADATA: Record<
|
|||
vi: { name: "Vietnamese", nativeName: "Tiếng Việt", priority: 7 },
|
||||
pl: { name: "Polish", nativeName: "Polski", priority: 8 },
|
||||
it: { name: "Italian", nativeName: "Italiano", priority: 9 },
|
||||
ru: { name: "Russian", nativeName: "Русский", priority: 10 },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -295,7 +295,8 @@
|
|||
},
|
||||
"historyLimit": {
|
||||
"title": "Límite de Historial",
|
||||
"description": "Número máximo de entradas de historial a conservar"
|
||||
"description": "Número máximo de entradas de historial a conservar",
|
||||
"entries": "entradas"
|
||||
},
|
||||
"recordingRetention": {
|
||||
"title": "Eliminación automática de grabaciones",
|
||||
|
|
|
|||
|
|
@ -296,7 +296,8 @@
|
|||
},
|
||||
"historyLimit": {
|
||||
"title": "Limite d'historique",
|
||||
"description": "Nombre maximum d'entrées d'historique à conserver"
|
||||
"description": "Nombre maximum d'entrées d'historique à conserver",
|
||||
"entries": "entrées"
|
||||
},
|
||||
"recordingRetention": {
|
||||
"title": "Suppression automatique des enregistrements",
|
||||
|
|
|
|||
419
src/i18n/locales/ru/translation.json
Normal file
419
src/i18n/locales/ru/translation.json
Normal file
|
|
@ -0,0 +1,419 @@
|
|||
{
|
||||
"tray": {
|
||||
"settings": "Настройки...",
|
||||
"checkUpdates": "Проверить обновления...",
|
||||
"quit": "Выход",
|
||||
"cancel": "Отмена"
|
||||
},
|
||||
"sidebar": {
|
||||
"general": "Общие",
|
||||
"advanced": "Продвинутые",
|
||||
"postProcessing": "Постобработка",
|
||||
"history": "История",
|
||||
"debug": "Отладка",
|
||||
"about": "О программе"
|
||||
},
|
||||
"onboarding": {
|
||||
"subtitle": "Для начала выберите модель транскрипции",
|
||||
"recommended": "Рекомендуется",
|
||||
"download": "Скачать",
|
||||
"downloading": "Загрузка...",
|
||||
"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": "Быстро и точно"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"loadModels": "Не удалось загрузить доступные модели.",
|
||||
"downloadModel": "Не удалось загрузить модель: {{error}}."
|
||||
}
|
||||
},
|
||||
"modelSelector": {
|
||||
"welcome": "Добро пожаловать в Handy!",
|
||||
"downloadPrompt": "Загрузите модель ниже, чтобы начать транскрипцию.",
|
||||
"availableModels": "Доступные модели",
|
||||
"downloadModels": "Скачать модели",
|
||||
"chooseModel": "Выберите модель",
|
||||
"active": "Активный",
|
||||
"download": "Скачать",
|
||||
"downloadSize": "Размер загрузки",
|
||||
"noModelsAvailable": "Нет доступных моделей",
|
||||
"extracting": "Извлечение {{modelName}}...",
|
||||
"extractingMultiple": "Извлечение моделей {{count}}...",
|
||||
"extractingGeneric": "Извлечение...",
|
||||
"downloading": "Загрузка {{percentage}} %",
|
||||
"downloadingMultiple": "Загрузка моделей {{count}}...",
|
||||
"modelReady": "Модель готова",
|
||||
"loading": "Загрузка {{modelName}}...",
|
||||
"loadingGeneric": "Загрузка...",
|
||||
"modelError": "Ошибка модели",
|
||||
"modelUnloaded": "Модель выгружена",
|
||||
"noModelDownloadRequired": "Нет модели – требуется загрузка",
|
||||
"deleteModel": "Удалить {{modelName}}"
|
||||
},
|
||||
"settings": {
|
||||
"general": {
|
||||
"title": "Общие",
|
||||
"shortcut": {
|
||||
"title": "Ярлыки Handy",
|
||||
"description": "Настройте сочетания клавиш для запуска записи речи в текст",
|
||||
"loading": "Загрузка ярлыков...",
|
||||
"none": "Ярлыки не настроены",
|
||||
"notFound": "Ярлык не найден",
|
||||
"pressKeys": "Нажимайте клавиши...",
|
||||
"bindings": {
|
||||
"transcribe": {
|
||||
"name": "Расшифровать",
|
||||
"description": "Преобразует вашу речь в текст."
|
||||
},
|
||||
"cancel": {
|
||||
"name": "Отмена",
|
||||
"description": "Отменяет текущую запись."
|
||||
}
|
||||
},
|
||||
"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": "Продвинутые",
|
||||
"startHidden": {
|
||||
"label": "Запускать скрыто",
|
||||
"description": "Запускать в системный трей, не открывая окно."
|
||||
},
|
||||
"autostart": {
|
||||
"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": "Копировать в буфер обмена"
|
||||
}
|
||||
},
|
||||
"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": "Постобработка",
|
||||
"disabledNotice": "Постобработка в настоящее время отключена. Включите его в настройках отладки для настройки.",
|
||||
"api": {
|
||||
"title": "API (совместимый с OpenAI)",
|
||||
"provider": {
|
||||
"title": "Поставщик",
|
||||
"description": "Выберите поставщика, совместимого с OpenAI."
|
||||
},
|
||||
"appleIntelligence": {
|
||||
"title": "Apple Интеллект",
|
||||
"description": "Полностью работает на устройстве. Никакой ключ API или доступ к сети не требуется.",
|
||||
"requirements": "Требуется 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": "Добавить пробел после вставленной транскрипции"
|
||||
},
|
||||
"paths": {
|
||||
"appData": "Данные приложения:",
|
||||
"models": "Модели:",
|
||||
"settings": "Настройки:"
|
||||
}
|
||||
},
|
||||
"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": "Расшифровка..."
|
||||
}
|
||||
}
|
||||
|
|
@ -296,7 +296,8 @@
|
|||
},
|
||||
"historyLimit": {
|
||||
"title": "Giới hạn lịch sử",
|
||||
"description": "Số lượng mục lịch sử tối đa cần giữ"
|
||||
"description": "Số lượng mục lịch sử tối đa cần giữ",
|
||||
"entries": "mục"
|
||||
},
|
||||
"recordingRetention": {
|
||||
"title": "Tự động xóa ghi âm",
|
||||
|
|
|
|||
Loading…
Reference in a new issue