
Security News
Feross on Risky Business Weekly Podcast: npm’s Ongoing Supply Chain Attacks
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
multranslate
Advanced tools
Cross-platform TUI for translating text in multiple translators simultaneously and LLM, with support for translation history and automatic language detection.
Cross-platform terminal user interface based on the Blessed library for simultaneous text translation using several popular translation sources and LLM
. All sources do not require an API access token (with the exception of official OpenAI or OpenRouter). Supports automatic source and target language definition at code level between English and any of the supported languages, as well as access to translation history via SQLite (up to 500 requests, after which old records from the history are automatically cleared).
API
via DeepLX using serverless hosted on Vercel platform. There are limits on the number of translation requests that can be made frequently, and there may also be a limit on the number of characters that can be used (the official limit is 5000 characters per request).API
can get up to 8000). Does not contain official documentation, request was received from official site via DevTools.API
(limit of 500 characters per request). Supports up to 3 response options for short queries.prompt
for text translation or in chat mode with support for streaming responses.ChatGPT
model. To use, you must pass the API
key via the --key
parameter (has a higher priority) or use the OPENAI_API_KEY
environment variable (similarly for OpenRouter
).API
key via parameters or environment variables, similar to OpenAI
.API
request and response scheme corresponds to OpenAI
). It is recommended to choose a model pre-trained in the desired language (for example, using the translation
filter on Hugging Face).Use the NPM package manager to install a stable version:
npm install -g multranslate
Or install from the GitHub repository:
npm install -g https://github.com/Lifailon/multranslate
Run the application:
multranslate
Get help:
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
To use OpenAI
, you need to pass parameters to connect to API
(has high priority) or use environment variables (recommended).
Using environment variables in Linux:
export OPENAI_API_KEY="sk-proj-..."
multranslate
You can save the environment variable for later use after reconnecting to the current terminal session.
echo 'export OPENAI_API_KEY="sk-proj-..."' >> ~/.bashrc
source ~/.bashrc
multranslate
It is recommended to make changes to the profile file through any text editor, for example, nano
, so that the key content is not saved in the command history.
Using the DeepSeek R1
free model via parameters:
multranslate -u "https://openrouter.ai/api" -m "deepseek/deepseek-r1:free" -k "sk-or-v1-..."
Note that the default /v1/chat/completions
append path is used for all requests.
Using environment variables in Windows:
$env:OPENAI_URL = "http://127.0.0.1:1234"
$env:OPENAI_MODEL = "llama-3-8b-gpt-4o-ru1.0"
multranslate
Save variables in the current user's environment via PowerShell
for later use:
[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")
To apply, restart the terminal.
Clone the repository:
git clone https://github.com/Lifailon/multranslate
cd multranslate
Install dependencies and run the application:
npm install
npm start
Configure the env environment variable file for language selection and connection to the LLM.
Build the image and run a temporary container (volume
is used to store history between runs):
docker build -t multranslate .
docker run --env-file .env -it --rm -v multranslate:/multranslate multranslate
You can change the language for automatic definition between English and any of those presented in the table below:
Parameter | Language |
---|---|
ru | Russian (default) |
ja | Japanese |
zh | Chinese |
ko | Korean |
ar | Arabic |
tr | Turkish |
uk | Ukrainian |
sk | Slovak |
pl | Polish |
de | German |
fr | French |
it | Italian |
es | Spanish |
el | Greek |
hu | Hungarian |
nl | Dutch |
sv | Swedish |
ro | Romanian |
cs | Czech |
da | Danish |
pt | Portuguese (#1) |
vi | Vietnam (#2) |
All passed letters are analyzed to compare them between the English alphabet and the language specified in the --language
parameter.
You can also use any of the translators individually by specifying the appropriate option at startup:
multranslate --translator Google --language tr
| multranslate --translator DeepL --language de
|
![]() | ![]() |
multranslate --translator Reverso --language it
| multranslate --translator MyMemory --language es
|
![]() | ![]() |
Ctrl+<Enter/S>
- translation of text without breaking to a new line.Ctrl+V
- paste text from the clipboard (defined at the code level).Alt+C
- copy text from the input field to clipboard.Alt+<1/2/3/4/5>
- copying translation results from output window to the clipboard (for each translator, the key combination is indicated in brackets), and the selected form will change its color to green.Ctrl+<N/Z>
- move to the previous entry in the translation history.Ctrl+<P/X>
- move to the next entry in the translation history.Shift+<Up/Down>
- simultaneous scrolling of all output panels.Ctrl+<Up/Down>
- scrolling the text input panel without changing the cursor position.Ctrl+<Left/Right>
- quick cursor navigation through phrases.Ctrl+<A/E>
- move the cursor to the ahead or end of text input.Ctrl+<C/U/L>
- clear the text input field.Ctrl+W/Alt+Back
- delete the word before the cursor.Del/Ctrl+K
- deletes one letter or character after the cursor.F2
- switch to OpenAI with a preset translation prompt.F3
- switch to OpenAI in chat mode.Escape
- exit the program.Use the F1
key to get help on available keyboard shortcuts:
If your language is not listed or you have problems with translation, please open an issue in the Issues.
You can also offer another source for translating the text through API
, which does not require an access key.
If you like to use this interface, you can make a contribution, just translate this readme file to your own language and pass it through Pull Request.
TypeScript
.SQLite
for LLM
in chat mode.The Blessed library is great and has no analogues in its functionality for JavaScript
or TypeScript
(and even surpasses some libraries in other languages), but it is outdated (not supported since 2015) and has a number of technical limitations, for example, there is no ability to navigate the cursor in the text input field. For this reason, a mechanism for managing the input content through a text buffer was implemented, which allows you to use a custom cursor for navigation using keyboard arrows and automatic scrolling.
If you plan to use this library for similar tasks where text input is required, then add class TextBuffer
and control of hotkeys (keypress
) via inputBox.on()
to your code. It took me several weeks to achieve full functionality for working with text, the key problem is the built-in line break (autowrap
) and the shift of the custom cursor.
Over the course of daily use for 6 months, I can confirm that it works stably.
This project is licensed under the MIT License. See the LICENSE file for details.
Copyright (C) 2024 Lifailon (Alex Kup)
FAQs
Cross-platform TUI for translating text in multiple translators simultaneously and LLM, with support for translation history and automatic language detection.
We found that multranslate demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.