Skip to content

Latest commit

 

History

History
259 lines (192 loc) · 18.5 KB

README_RU.md

File metadata and controls

259 lines (192 loc) · 18.5 KB

multranslate

English | Русский

Кроссплатформенный терминальный пользовательский интерфейс на базе библиотеки Blessed для одновременного перевода текста с использованием нескольких популярных источников перевода и LLM. Все источники не требуют токена доступа к API (за исключением официального OpenAI или OpenRouter). Поддерживает автоматическое определение исходного и целевого языка на уровне кода между английским и любым из поддерживаемых языков (русский по умолчанию), а также доступ к истории переводов через SQLite (до 500 запросов, после чего используется автоматическая очистка старых записей из истории).

interface

Источники перевода

  • 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).
    • OpenRouter - это универсальный провайдер, который предоставляет единый доступ к разным моделям. Поддерживает бесплатные модели (например, DeepSeek R1), что позволяет использовать его без пополнения счета сразу после регистрации. Для использования, необходимо передать url и ключ API через параметры или переменные окружения, аналогично, как для OpenAI.
    • 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" 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 (имеет повышенный приоритет) или использовать переменные окружения (рекомендуется).

OpenAI

Использование переменных окружения в Linux:

export OPENAI_API_KEY="sk-proj-..."
multranslate

Вы можете сохранить переменную окружения для дальнейшего использования после переподключения к текущей сессии терминала.

echo 'export OPENAI_API_KEY="sk-proj-..."' >> ~/.bashrc
source ~/.bashrc
multranslate

Рекомендуется вносить изменения в файл профиля через любой текстовый редактор, например, nano, что бы содержимое ключа не сохранялось в истории команд.

OpenRouter

Использование бесплатной модели DeepSeek R1 через параметры:

multranslate -u "https://openrouter.ai/api" -m "deepseek/deepseek-r1:free" -k "sk-or-v1-..."

Обратите внимание, что для всех запросов используется добавочный путь /v1/chat/completions по умолчанию.

LM Studio

Использование переменных окружения в 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

Docker

Настройте файл с переменными окружения 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, для получения справки по доступным сочетаниям клавиш:

interface

Вклад и участники

Если ваш язык отсутствует в списке или у вас возникли проблемы с переводом, откройте запрос в разделе Issues.

Вы также можете предложить другой источник для перевода текста через API, который не требует ключа доступа.

Если вам нравится использовать данный интерфейс, вы можете сделать вклад, просто переведите этот README файл на свой родной язык и передайте его через Pull Request.

Задачи

  • Переписать код на TypeScript.
  • Написать тесты для проверки функций перевода.
  • Реализовать поддержку нативного курсора (наработки в multranslate-native-cursor).
  • Добавить проверку текста на стиль и грамматику (орфографии) через LanguageTool.
  • Добавить поддержку хранения о очистки стории через SQLite для LLM в режиме чата.

Текстовый буфер

Библиотека Blessed прекрасна и не имеет аналогов по своему функционалу для JavaScript или TypeScript (и даже превосходит некоторые библиотеки в других языках), но является устаревшей (не поддерживается с 2015 года) и имеет ряд технических ограничений, например, отсутствует возможность навигации курсора в поле ввода текста. По этой причине был реализован механизм управления содержимым ввода через текстовый буфер, который позволяет использовать пользовательский курсор для навигации с помощью стрелочек клавиатуры и автоматическое пролистывание.

Если вы планируете использовать данную библиотеку для схожих задач где требуется ввод текста, то добавьте в свой код class TextBuffer и управление корячими клавишами (keypress) через inputBox.on(). Мне понадобилось несколько недель, что бы добиться полноценной возможности работы с текстом, ключевая проблема, это встренный перенос строки (autowrap) и сдвиг пользовательского курсора.

На протяжение ежедневного использования в течении 6 месяцев могу подтвердить, что это работает стабильно.

License

Этот проект лицензирован по лицензии MIT. См. файл лицензии для получения подробной информации.

Copyright (C) 2024 Lifailon (Alex Kup)