Skip to content

Latest commit

 

History

History
174 lines (133 loc) · 12.9 KB

README_RU.md

File metadata and controls

174 lines (133 loc) · 12.9 KB

multranslate

English | Русский

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

interface

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

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

interface

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

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

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

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

Задачи

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

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

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

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

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