Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

multranslate

Package Overview
Dependencies
Maintainers
0
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

multranslate - npm Package Compare versions

Comparing version 0.1.3 to 0.2.0

81

multranslate.js
#!/usr/bin/env node
const blessed = require('blessed')
const axios = require('axios')
import blessed from 'blessed'
import axios from 'axios'
import clipboardy from 'clipboardy'
var screen = blessed.screen({
autoPadding: true,
smartCSR: true,
cursor: {

@@ -15,4 +18,3 @@ artificial: true,

},
blink: false,
terminal: 'windows-ansi'
blink: false
}

@@ -50,3 +52,3 @@ })

const outputBox1 = blessed.textarea({
label: `Output (Google)`,
label: `Google (Ctrl+Q)`,
top: '20%',

@@ -78,3 +80,3 @@ left: 'left',

const outputBox2 = blessed.textarea({
label: `Output (DeepLX)`,
label: `DeepL (Ctrl+W)`,
top: '20%',

@@ -107,3 +109,3 @@ right: 'right',

const outputBox3 = blessed.textarea({
label: `Output (MyMemory)`,
label: `MyMemory (Ctrl+E)`,
top: '60%',

@@ -135,3 +137,3 @@ left: 'left',

const outputBox4 = blessed.textarea({
label: `Output (Reverso)`,
label: `Reverso (Ctrl+R)`,
top: '60%',

@@ -355,3 +357,3 @@ right: 'right',

// Обработка нажатия Enter
// Обработка нажатия Enter для перевода текста и переноса на новую строку
inputBox.key(['enter'], async () => {

@@ -361,3 +363,3 @@ await handleTranslation()

// Обработчик событий клавиш для прокрутки экрана панелей вывода
// Обработчик событий клавиш для пролистывания экрана панелей вывода
inputBox.key(['up', 'down'], function(ch, key) {

@@ -381,14 +383,59 @@ const value = inputBox.getValue()

// Обработка нажатия клавиши для очистки экрана и выхода
screen.key(['escape'], function () {
if (inputBox.getValue().length > 0) {
// Обработка очистки экрана
inputBox.key(['C-c'], function () {
inputBox.clearValue()
screen.render()
inputBox.focus()
} else {
// Выйти из приложения, если inputBox пустой
return process.exit(0)
}
})
// Обработка выхода
inputBox.key(['escape'], function () {
return process.exit(0)
})
// Обработка копирования вывода в буфер обмена
inputBox.key(['C-q'], function() {
const textToCopy = outputBox1.getContent()
clipboardy.writeSync(textToCopy)
outputBox1.style.border.fg = 'green'
outputBox2.style.border.fg = 'blue'
outputBox3.style.border.fg = 'blue'
outputBox4.style.border.fg = 'blue'
screen.render()
inputBox.focus()
})
inputBox.key(['C-w'], function() {
const textToCopy = outputBox2.getContent()
clipboardy.writeSync(textToCopy)
outputBox1.style.border.fg = 'blue'
outputBox2.style.border.fg = 'green'
outputBox3.style.border.fg = 'blue'
outputBox4.style.border.fg = 'blue'
screen.render()
inputBox.focus()
})
inputBox.key(['C-e'], function() {
const textToCopy = outputBox3.getContent()
clipboardy.writeSync(textToCopy)
outputBox1.style.border.fg = 'blue'
outputBox2.style.border.fg = 'blue'
outputBox3.style.border.fg = 'green'
outputBox4.style.border.fg = 'blue'
screen.render()
inputBox.focus()
})
inputBox.key(['C-r'], function() {
const textToCopy = outputBox4.getContent()
clipboardy.writeSync(textToCopy)
outputBox1.style.border.fg = 'blue'
outputBox2.style.border.fg = 'blue'
outputBox3.style.border.fg = 'blue'
outputBox4.style.border.fg = 'green'
screen.render()
inputBox.focus()
})
// Отображение интерфейса

@@ -395,0 +442,0 @@ screen.render()

{
"name": "multranslate",
"version": "0.1.3",
"version": "0.2.0",
"description": "Cross-platform TUI for translating text using multiple providers simultaneously and support automatic detection of the source and destination language",

@@ -22,2 +22,3 @@ "keywords": [

"main": "multranslate.js",
"type": "module",
"scripts": {

@@ -28,3 +29,4 @@ "start": "node multranslate.js"

"axios": "^1.7.5",
"blessed": "^0.1.81"
"blessed": "^0.1.81",
"clipboardy": "^4.0.0"
},

@@ -36,4 +38,5 @@ "bin": {

"assets": [
"node_modules/blessed/**/*",
"node_modules/axios/**/*",
"node_modules/blessed/**/*"
"node_modules/clipboardy/**/*"
],

@@ -40,0 +43,0 @@ "targets": [

@@ -23,15 +23,22 @@ <h1 align="center">

- [DeepLX](https://github.com/OwO-Network/DeepLX) - бесплатный [DeepL](https://deepl.com) API с использованием [serverless](https://github.com/LegendLeo/deeplx-serverless), размещенный на [Vercel](https://github.com/olavoparno/translate-serverless-vercel).
- [MyMemory](https://mymemory.translated.net/doc/spec.php) - бесплатный и открытый API (использование ограничено 5000 символами/день).
- [Reverso](https://www.reverso.net) - бесплатный API (не содержит официальной документации, запрос был получен с официального сайта через DevTools).
- [MyMemory](https://mymemory.translated.net/doc/spec.php) - бесплатный и открытый API (использование ограничено 5000 символами в день).
- [Reverso](https://www.reverso.net) - бесплатный API (не содержит официальной документации, запрос был получен с официального сайта через *DevTools*).
> **Reverso** не поддерживает работу через **Axios** (ошибка: `Invalid header value char`), вместо этого используется **Fetch**.
## Установка
Используйте менеджер пакетов [npm](https://www.npmjs.com/package/multranslate) (стабильная версия):
Используйте менеджер пакетов [npm](https://www.npmjs.com/package/multranslate):
```shell
npm install -g multranslate
```
Запустите приложение:
```shell
multranslate
```
### Сборка:
## Сборка

@@ -45,3 +52,3 @@ Клонируйте репозиторий:

Запуск приложения:
Запустите приложения:

@@ -52,31 +59,10 @@ ```shell

Для сборки исполняемого файла вы можете использовать [pkg](https://github.com/vercel/pkg) от [Vercel](https://github.com/vercel).
## Горячие клавиши
Установите пакет [pkg](https://www.npmjs.com/package/pkg) и воспользуйтесь одной командой для сборки для всех платформ:
Перевод текста производится каждый раз, после нажатия кнопки `Enter`. Сочетание клавиш `Ctrl+C` используется для очистки поля ввода текста. Кнопка `escape` используется для выхода из программы.
```shell
npm install -g pkg
pkg .
```
Для копирования текста в буфер обмена из выбранной формы вывода возможно использовать сочетание клавиш `Ctrl+<Q/W/E/R>` (для каждого переводчика указано в скобках), при этом выбранная форма изменит свой цвет на зеленый. Для вставки текста в поле ввода из буфера обмена используйте `Ctrl+V`.
Поддерживается Windows, Linux и MacOS. Исполняемый файл уже включает в себя все зависимости для своей работы и не требуется установки платформы `node.js`.
> Так как провайдер Reverso не поддерживает работу через Axios (ошибка: `Invalid header value char`), вместо этого используется Fetch. Инструмент pkg поддерживает версию node.js 18 и старше, где Fetch считается эксперементальным, по этому при первом запросе после запуска приложения в поле ввода вы получите ошибку: `The Fetch API is an experimental feature`.
## Горячие клавиши
Кнопками `вверх` и `вниз` можно пролистывать все панели вывода одновременно.
Кнопка `escape` используется для очистки поля ввода текста, а также для выхода из программы, если поле ввода уже очищено.
> Библиотека blessed имеет ряд ограничений, поэтому мне не удалось реализовать перемещение курсора с помощью стрелочек влево и вправо.
Чтобы захватить весь текст в одной из панелей вывода для копирования, используйте сочетание клавиш `Shift+Alt` при выделении текста.
Если вы используете [Windows Terminal](https://github.com/microsoft/terminal), добавьте в файл конфигурации `settings.json` параметр, который будет удалять конечные пробелы из текста в прямоугольном (блочном) выделении при копировании в буфер обмена:
```json
"trimBlockSelection": true
```
Чтобы вставить текст из буфера обмена, используйте сочетание клавиш `Shift+Ctrl+V` или `Ctrl+V` в зависимости от используемого вами терминала.

@@ -26,12 +26,19 @@ <h1 align="center">

> **Reverso** does not support working via **Axios** (error: `Invalid header value char`), **Fetch** is used instead.
## Installation
Use the [npm](https://www.npmjs.com/package/multranslate) package manager (stable version):
Use the [npm](https://www.npmjs.com/package/multranslate) package manager:
```shell
npm install -g multranslate
```
Run the application:
```shell
multranslate
```
### Build:
## Build

@@ -45,3 +52,3 @@ Clone the repository:

Running the application:
Run the application:

@@ -52,31 +59,10 @@ ```shell

To build the executable, you can use [pkg](https://github.com/vercel/pkg) from [Vercel](https://github.com/vercel).
## Hotkeys
Install the [pkg](https://www.npmjs.com/package/pkg) package and use one command to build for all platforms:
The text is translated every time after pressing the `Enter` button. The `Ctrl+C` keyboard shortcut is used to clear the text input field. The `escape` button is used to exit the program.
```shell
npm install -g pkg
pkg .
```
To copy text to the clipboard from the selected output form, you can use the key combination `Ctrl+<Q/W/E/R>` (for each translator it is indicated in brackets), and the selected form will change its color to green. To paste text into an input field from the clipboard, use `Ctrl+V`.
Supports Windows, Linux and MacOS. The executable file already includes all dependencies for its operation and does not require installation of the `node.js` platform.
Using the `up` and `down` buttons you can scroll through all output panels at the same time.
> Since the Reverso provider does not support working via Axios (error: `Invalid header value char`), Fetch is used instead. The pkg tool supports node.js version 18 and higher, where Fetch is considered experimental, so on the first request after running the application in the input field you will get an error: `The Fetch API is an experimental feature`.
## Hotkeys
Using the `up` and `down` buttons you can scroll through all output panels at once.
The `escape` button is used to clear the text input field, as well as to exit the program if the input field is already empty.
> The blessed library has a number of limitations, so I was unable to implement cursor movement using the left and right arrows.
To capture all text in one of the output panels for copying, use the key combination `Shift+Alt` when selecting text.
If you are using [Windows Terminal](https://github.com/microsoft/terminal), add a parameter in the `settings.json` configuration file that will remove trailing spaces from text in a rectangular (block) selection when copying to the clipboard:
```json
"trimBlockSelection": true
```
To paste text from the clipboard, use the keyboard shortcut `Shift+Ctrl+V` or `Ctrl+V` depending on the terminal you are using.
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc