English | Русский
Кроссплатформенный терминальный пользовательский интерфейс на базе библиотеки Blessed для одновременного перевода текста с использованием нескольких популярных источников перевода и LLM
. Все источники не требуют токена доступа к 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
с предустановленным ситемнымprompt
через официальный OpenAI (необходимо передать ключAPI
через параметр--key
или переменную окруженияOPENAI_API_KEY
) или LM Studio для использования локальных моделей в автономном режиме (схема запросов и ответовAPI
соответствуют OpenAI). Рекомендуется выбрать модель, предварительно обученную на нужном языке (например, используя фильтрtranslation
на Hugging Face).
Используйте менеджер пакетов npm для установки стабильной версии:
npm install -g multranslate
Или установите из репозитория GitHub:
npm install -g https://github.com/Lifailon/multranslate
Запустите приложение:
multranslate
Получите справку:
multranslate --help
Usage: multranslate [options]
Cross-platform TUI for translating text in multiple translators simultaneously and LLM, with support for
translation history and automatic language detection.
Options:
-V, --version output the version number
-l, --language <name> Select the 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 the translator: all, Google, DeepL, Reverso, MyMemory, OpenAI (default: "all")
-k, --key <value> API key parameter for OpenAI (high priority) or using the environment "OPENAI_API_KEY"
-o, --openaiUrl <url> Url address for OpenAI API or local LLM (default: "https://api.openai.com" or the environment "OPENAI_URL")
-m, --model <name> Select the LLM model (default: "gpt-4o-mini" or the environment "OPENAI_MODEL")
-e, --temp <number> Select the temperature for LLM (default: "0.7" or the environment "OPENAI_TEMP")
-h, --help display help for command
Для использования OpenAI необходимо передать параметры для подключения к API
(имеет высокий приоритет) или использовать переменные окружения.
Пример для Linux и OpenAI:
export OPENAI_API_KEY="sk-proj-..."
multranslate
Вы можете сохранить переменную окружения для дальнейшего использования после переподключения к текущей сессии терминала.
echo 'export OPENAI_API_KEY="sk-proj-..."' >> ~/.bashrc
source ~/.bashrc
Рекомендуется вносить изменения в файл профиля через любой текстовый редактор, например, nano
, что бы содержимое ключа не сохранялось в истории команд.
Пример для Windows и LM Studio:
$env:OPENAI_URL = "http://127.0.0.1:1234"
$env:OPENAI_MODEL = "llama-3-8b-gpt-4o-ru1.0"
multranslate
Клонируйте репозиторий:
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
|
![]() |
![]() |
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
- удалить одну букву или символ после курсора.f2
- переключиться на OpenAI с предустановленным prompt для перевода.f3
- переключиться на OpenAI в режиме чата.Escape
- выход из программы.
Используйте клавишу F1
, для получения справки по доступным сочетаниям клавиш:
Если ваш язык отсутствует в списке или у вас возникли проблемы с переводом, откройте запрос в разделе Issues.
Вы также можете предложить другой источник для перевода текста через API
, который не требует ключа доступа.
Если вам нравится использовать данный интерфейс, вы можете сделать вклад, просто переведите этот README файл на свой родной язык и передайте его через Pull Request.
- Переписать код на TypeScript.
- Упаковать приложение в исполняемый файл.
- Написать тесты для проверки функций перевода.
- Реализовать поддержку нативного курсора (наработки в multranslate-native-cursor).
- Добавить проверку текста на стиль и грамматику (орфографии) через LanguageTool.
Библиотека Blessed прекрасна и не имеет аналогов по своему функционалу для JavaScript
или TypeScript
(и даже превосходит некоторые библиотеки в других языках), но является устаревшей (не поддерживается с 2015 года) и имеет ряд технических ограничений, например, отсутствует возможность навигации курсора в поле ввода текста. По этой причине был реализован механизм управления содержимым ввода через текстовый буфер, который позволяет использовать пользовательский курсор для навигации с помощью стрелочек клавиатуры и автоматическое пролистывание.
Если вы планируете использовать данную библиотеку для схожих задач где требуется ввод текста, то добавьте в свой код class TextBuffer
и управление корячими клавишами (keypress
) через inputBox.on()
. Мне понадобилось несколько недель, что бы добиться полноценной возможности работы с текстом, ключевая проблема, это встренный перенос строки (autowrap
) и сдвиг пользовательского курсора.
На протяжение ежедневного использования в течении 6 месяцев могу подтвердить, что это работает стабильно.
Этот проект лицензирован по лицензии MIT. См. файл лицензии для получения подробной информации.
Copyright (C) 2024 Lifailon (Alex Kup)