English | Русский
Кроссплатформенный терминальный пользовательский интерфейс на базе библиотеки Blessed для одновременного перевода текста с использованием нескольких популярных источников перевода и LLM. Все источники не требуют токена доступа к API (за исключением официального OpenAI или OpenRouter). Поддерживает автоматическое определение исходного и целевого языка на уровне кода между английским и любым из поддерживаемых языков (русский по умолчанию), а также доступ к истории переводов через SQLite (до 500 запросов, после чего используется автоматическая очистка старых записей из истории).
- Google - бесплатный и безлимитный API с использованием serverless размещенный на платформе Vercel. Доступно для перевода более 5000 символов.
- DeepL - бесплатный
APIчерез DeepLX с использованием serverless размещенный на платформе Vercel. Присутствуют ограничения на частое количество запросов перевода, а также может иметь ограничение при использование большого количества символов (официальное ограничение в 5000 символов на запрос). - Reverso - самый стабильный, бесплатный и без ограничений на количество символов (версия на сайте ограничена 2000 символам и 900 в приложение, через
APIвозможно получить до 8000). Не содержит официальной документации, запрос был получен с официального сайта через DevTools. - MyMemory - бесплатный и открытый
API(ограничение в 500 символов на запрос). Поддерживает до 3 вариантов ответа для коротких запросов. - LLM - использование больших языковых моделей с предустановленным ситемным
promptдля перевода текста или в режиме чата с поддержкой потоковой передачи ответа. -
- OpenAI - это официальный поставщик модели
ChatGPT. Для использования, необходимо передать ключAPIчерез параметр--key(имеет более высокий приоритет) или использовать переменную окруженияOPENAI_API_KEY(аналогично дляOpenRouter).
- OpenAI - это официальный поставщик модели
-
- OpenRouter - это универсальный провайдер, который предоставляет единый доступ к разным моделям. Поддерживает бесплатные модели (например, DeepSeek R1), что позволяет использовать его без пополнения счета сразу после регистрации. Для использования, необходимо передать url и ключ
APIчерез параметры или переменные окружения, аналогично, как дляOpenAI.
- OpenRouter - это универсальный провайдер, который предоставляет единый доступ к разным моделям. Поддерживает бесплатные модели (например, DeepSeek R1), что позволяет использовать его без пополнения счета сразу после регистрации. Для использования, необходимо передать url и ключ
-
- LM Studio - это интерфейс для запуска и использования локальных моделей в автономном режиме (схема запросов и ответов
APIсоответствуютOpenAI). Рекомендуется выбрать модель, предварительно обученную на нужном языке (например, используя фильтрtranslationна Hugging Face).
- LM Studio - это интерфейс для запуска и использования локальных моделей в автономном режиме (схема запросов и ответов
Используйте менеджер пакетов 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" or the environment "TRANSLATE_LANGUAGE")
-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"
-u, --urlOpenai <url> Url address for OpenAI, OpenRouter or local LLM API (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:
export OPENAI_API_KEY="sk-proj-..."
multranslateВы можете сохранить переменную окружения для дальнейшего использования после переподключения к текущей сессии терминала.
echo 'export OPENAI_API_KEY="sk-proj-..."' >> ~/.bashrc
source ~/.bashrc
multranslateРекомендуется вносить изменения в файл профиля через любой текстовый редактор, например, nano, что бы содержимое ключа не сохранялось в истории команд.
Использование бесплатной модели DeepSeek R1 через параметры:
multranslate -u "https://openrouter.ai/api" -m "deepseek/deepseek-r1:free" -k "sk-or-v1-..."Обратите внимание, что для всех запросов используется добавочный путь /v1/chat/completions по умолчанию.
Использование переменных окружения в Windows:
$env:OPENAI_URL = "http://127.0.0.1:1234"
$env:OPENAI_MODEL = "llama-3-8b-gpt-4o-ru1.0"
multranslateСохраните переменные в окружении текущего пользователя через PowerShell для дальнейшего использования:
[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-or-v1-...", "User")
[System.Environment]::SetEnvironmentVariable("OPENAI_URL", "https://openrouter.ai/api", "User")
[System.Environment]::SetEnvironmentVariable("OPENAI_MODEL", "deepseek/deepseek-r1:free", "User")Для применения, перезапустите терминал.
Клонируйте репозиторий:
git clone https://github.com/Lifailon/multranslate
cd multranslateУстановите зависимости и запустите приложения:
npm install
npm startНастройте файл с переменными окружения env для выбора языка и подключения к LLM.
Соберите образ и запустите временный контейнер (volume используется для хранения истории между запусками):
docker build -t multranslate .
docker run --env-file .env -it --rm -v multranslate:/multranslate multranslateВы можете изменить язык, для автоматического определения между английским и любым из тех, что представлен в таблице ниже:
| Параметр | Язык |
|---|---|
| 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.
- Добавить поддержку хранения о очистки стории через
SQLiteдляLLMв режиме чата.
Библиотека Blessed прекрасна и не имеет аналогов по своему функционалу для JavaScript или TypeScript (и даже превосходит некоторые библиотеки в других языках), но является устаревшей (не поддерживается с 2015 года) и имеет ряд технических ограничений, например, отсутствует возможность навигации курсора в поле ввода текста. По этой причине был реализован механизм управления содержимым ввода через текстовый буфер, который позволяет использовать пользовательский курсор для навигации с помощью стрелочек клавиатуры и автоматическое пролистывание.
Если вы планируете использовать данную библиотеку для схожих задач где требуется ввод текста, то добавьте в свой код class TextBuffer и управление корячими клавишами (keypress) через inputBox.on(). Мне понадобилось несколько недель, что бы добиться полноценной возможности работы с текстом, ключевая проблема, это встренный перенос строки (autowrap) и сдвиг пользовательского курсора.
На протяжение ежедневного использования в течении 6 месяцев могу подтвердить, что это работает стабильно.
Этот проект лицензирован по лицензии MIT. См. файл лицензии для получения подробной информации.
Copyright (C) 2024 Lifailon (Alex Kup)





