English | Русский
Кроссплатформенный терминальный пользовательский интерфейс (TUI) на базе библиотеки Blessed для одновременного перевода текста с использованием нескольких популярных источников перевода, а также LLM через OpenAI. Все источники перевода не требуют токена доступа (API ключа, за исключением OpenAI) или других настроек. Поддерживает автоматическое определение исходного и целевого языка на уровне кода между английским и любым из поддерживаемых языков (русский по умолчанию), а также доступ к истории переводов через SQLite (до 500 запросов, после чего используется автоматическая очистка старых записей из истории).
- Google - бесплатный и безлимитный API с использованием serverless размещенный на платформе Vercel. Доступно для перевода более 5000 символов.
- DeepL - бесплатный API через DeepLX с использованием serverless размещенный на платформе Vercel. Присутствуют ограничения на частое количество запросов перевода, а также может иметь ограничение при использование большого количества символов (официальное ограничение в 5000 символов на запрос).
- Reverso - самый стабильный, бесплатный и без ограничений на количество символов (версия на сайте ограничена 2000 символам и 900 в приложение, через
API
возможно получить до 8000). Не содержит официальной документации, запрос был получен с официального сайта через DevTools. - MyMemory - бесплатный и открытый API (ограничение в 500 символов на запрос). Поддерживает до 3 вариантов ответа для коротких запросов.
- OpenAI - перевод текста с использованием LLM (необходимо передать ключ API через параметр, который сохраняется в файле для дальнейшего использования).
Используйте менеджер пакетов npm:
npm install -g multranslate
Запустите приложение:
multranslate
Получите справку:
multranslate --help
Usage: multranslate [options]
Cross-platform TUI for translating text in multiple translators simultaneously and LLM via OpenAI, with support for
translation history and automatic language detection.
Options:
-V, --version output the version number
-l, --language <name> select language: ru, ja, zh, ko, ar, tr, uk, sk, pl, de, fr, it, es, el, hu, nl, sv, ro,
cs, da, pt, vi (default: "ru")
-t, --translator <name> select translator: all, Google, DeepL, Reverso, MyMemory, OpenAI (default: "all")
-k, --key <value> API key for using the OpenAI translator (will be saved for future use)
-h, --help display help for command
Клонируйте репозиторий:
git clone https://github.com/Lifailon/multranslate
cd multranslate
Установите зависимости и запустите приложения:
npm install
npm start
Вы можете изменить язык, для автоматического определения между английским и любым из тех, что представлен в таблице ниже:
Параметр | Язык |
---|---|
ru | Русский (по умолчанию) |
ja | Японский |
zh | Китайский |
ko | Корейский |
ar | Арабский |
tr | Турецкий |
uk | Украинский |
sk | Словацкий |
pl | Польский |
de | Немецкий |
fr | Французский |
it | Итальянский |
es | Испанский |
el | Греческий |
hu | Венгерский |
nl | Нидерландский |
sv | Шведский |
ro | Румынский |
cs | Чешский |
da | Датский |
pt | Португальский (#1) |
vi | Вьетнамский (#2) |
Производится анализ всех переданных букв для их сравнения между английским алфавитом и указанным языком в параметре --language
.
Вы также можете использовать любой из переводчиков по отдельности, указав соответствующий параметр при запуске:
multranslate --translator Google --language tr
|
multranslate --translator DeepL --language de
|
multranslate --translator Reverso --language it
|
multranslate --translator MyMemory --language es
|
F2
- переключение между всеми переводчиками и OpenAI.Ctrl+<Enter/S>
- перевод текста без переноса на новую строку.Ctrl+V
- вставка текста из буфера обмена (определено на уровне кода).Alt+C
- скопировать текст из поля ввода в буфер обмена.Alt+<1/2/3/4/5>
- копирования результатов перевода из окна вывода в буфер обмена (для каждого переводчика комбинация клавиш указана в скобках), при этом выбранная форма изменит свой цвет на зеленый.Ctrl+<N/Z>
- перейти к предыдущей записи истории переводов.Ctrl+<P/X>
- перейти к следующей записи в истории переводов.Shift+<Up/Down>
- одновременный скроллинг всех панелей вывода.Ctrl+<Up/Down>
- скроллинг панели ввода текста без изменения положения курсора.Ctrl+<Left/Right>
- быстрая навигация курсора через словосочетания.Ctrl+<A/E>
- переместить курсор в начало или конец ввода текста.Ctrl+<C/U/L>
- очистить поле ввода текста.Ctrl+W/Alt+Back
- удалить словосочетание перед курсором.Del/Ctrl+K
- удалить одну букву или символ после курсора.Escape
- выход из программы.
Используйте клавишу F1
, для получения справки по доступным сочетаниям клавиш:
Если ваш язык отсутствует в списке или у вас возникли проблемы с переводом, откройте запрос в разделе Issues.
Вы также можете предложить другой источник для перевода текста через API
, который не требует ключа доступа.
Если вам нравится использовать данный интерфейс, вы можете сделать вклад, просто переведите этот README файл на свой родной язык и передайте его через Pull Request.
- Переписать код на TypeScript.
- Реализовать поддержку нативного курсора (наработки в multranslate-native-cursor).
- Добавить проверку текста на стиль и грамматику (орфографии) через LanguageTool.
Библиотека Blessed прекрасна и не имеет аналогов по своему функционалу для JavaScript
или TypeScript
(и даже превосходит некоторые библиотеки в других языках), но является устаревшей (не поддерживается с 2015 года) и имеет ряд технических ограничений, например, отсутствует возможность навигации курсора в поле ввода текста. По этой причине был реализован механизм управления содержимым ввода через текстовый буфер, который позволяет использовать пользовательский курсор для навигации с помощью стрелочек клавиатуры и автоматическое пролистывание.
Если вы планируете использовать данную библиотеку для схожих задач где требуется ввод текста, то добавьте в свой код class TextBuffer
и управление корячими клавишами (keypress
) через inputBox.on()
. Мне понадобилось несколько недель, что бы добиться полноценной возможности работы с текстом, ключевая проблема, это встренный перенос строки (autowrap
) и сдвиг пользовательского курсора.
На протяжение ежедневного использования в течении 6 месяцев могу подтвердить, что это работает стабильно.