GitHub - soimort/translate-shell: :speech_balloon: Command-line translator using Google Translate, Bing Translator, Yandex.Translate, etc.

GitHub

Icon
CircleCI
Actions
Version
Download
Gitter

Translate Shell

(formerly Google Translate CLI) is a command-line translator powered by

Google Translate

(default),

Bing Translator

,

Yandex.Translate

, and

Apertium

. It gives you easy access to one of these translation engines in your terminal:

$ trans 'Saluton, Mondo!' Saluton, Mondo! Hello, World! Translations of Saluton, Mondo! [ Esperanto -> English ] Saluton , Hello, Mondo ! World! By default, translations with detailed explanations are shown. You can also translate the text briefly: (only the most relevant translation will be shown)

$ trans -brief 'Saluton, Mondo!' Hello, World! Translate Shell can also be used like an interactive shell; input the text to be translated line by line:

$ trans -shell -brief > Rien ne réussit comme le succès. Nothing succeeds like success. > Was mich nicht umbringt, macht mich stärker. What does not kill me makes me stronger. > Юмор есть остроумие глубокого чувства. Humor has a deep sense of wit. > 學而不思則罔,思而不學則殆。 Learning without thought is labor lost, thought without learning is perilous. > 幸福になるためには、人から愛されるのが一番の近道。 In order to be happy, the best way is to be loved by people. Prerequisites

System Requirements

Translate Shell is known to work on many POSIX-compliant systems, including but not limited to:

GNU/Linux

macOS

*BSD

Android (through Termux)

Windows (through WSL, Cygwin, or MSYS2)

Dependencies

GNU Awk

(gawk) 4.0 or laterThis program relies heavily on GNU extensions of the

AWK language

, which are non-portable for other AWK implementations (e.g. nawk).

How to get gawk: gawk comes with all GNU/Linux distributions.

On FreeBSD, gawk is available in the ports.

On macOS, gawk is available in MacPorts and Homebrew.

Please note that gawk 5.2.0 has a

known bug

-- update to gawk 5.2.1 instead.

GNU Bash

or

Zsh

You may use Translate Shell from any Unix shell of your choice (bash, zsh, ksh, tcsh, fish, etc.); however, the wrapper script requires either bash or zsh installed.

Recommended Dependencies

These dependencies are optional, but strongly recommended for full functionality:

curl

with OpenSSL support

GNU FriBidi

: an implementation of the Unicode Bidirectional Algorithm (bidi)required for displaying text in Right-to-Left scripts (e.g. Arabic, Hebrew)

mplayer

,

mpv

,

mpg123

, or

eSpeak

required for the Text-to-Speech functionality

less

,

more

or

most

required for terminal paging

rlwrap

: a GNU readline wrapperrequired for readline-style editing and history in the interactive shell

aspell

or

hunspell

required for spell checking

Environment and Fonts

It is a must to have corresponding fonts for the language(s) / script(s) you wish to display in your terminal. See

wiki: Writing Systems and Fonts

for more details on scripts and recommended Unicode fonts.

Try It Out!

Start an interactive shell and translate anything you input into your native language: (in bash or zsh)

$ gawk -f <(curl -Ls --compressed https://git.io/translate) -- -shell (in fish)

$ gawk -f (curl -Ls --compressed https://git.io/translate | psub) -- -shell Using Docker

To try out via

Docker

, run:

$ docker pull soimort/translate-shell Then you may start an interactive shell from the Docker image for translating:

$ docker run -it soimort/translate-shell -shell Installation

Option #1. Direct Download

Download

the self-contained executable

and place it into your path. It's everything you need.

$ wget git.io/trans $ chmod +x ./trans There is a

GPG signature

.

Option #2. From A Package Manager

Using your favorite package manager

See

wiki: Distros

on how to install from a specific package manager on your distro.

Using

Antigen

(for Zsh users)

Add the following line to your .zshrc:

antigen bundle soimort/translate-shell@develop Option #3. From Git

$ git clone https://github.com/soimort/translate-shell $ cd translate-shell/ $ make $ [sudo] make install In case you have only zsh but not bash in your system, build with:

$ make TARGET=zsh The default PREFIX of installation is /usr/local. To install the program to somewhere else (e.g. /usr, ~/.local), use:

$ [sudo] make PREFIX=/usr install Getting Started by Examples

Translate a Word

From any language to your language

Google Translate can identify the language of the source text automatically, and Translate Shell by default translates the source text into the language of your locale.

$ trans vorto From any language to one or more specific languages

Translate a word into French:

$ trans :fr word Translate a word into Chinese and Japanese: (use a plus sign "+" as the delimiter)

$ trans :zh+ja word Alternatively, equals sign ("=") can be used in place of the colon (":"). Note that in some shells (e.g. zsh), equals signs may be interpreted differently, therefore the argument specifying languages needs to be protected:

$ trans {=zh+ja} word $ trans '=zh+ja' word You can also use the -target (-t) option to specify the target language(s):

$ trans -t zh+ja word With the -t option, the name of the language may also be used instead of the language code:

$ trans -t japanese word $ trans -t 日本語 word From a specific language

Google Translate may wrongly identify the source text as some other language than you expected:

$ trans 手紙 In that case, you need to specify its language explicitly:

$ trans ja: 手紙 $ trans zh: 手紙 You can also use the -source (-s) option to specify the source language:

$ trans -s ja 手紙 Translate Multiple Words or a Phrase

Translate each word alone:

$ trans en:zh word processor Put words into one argument, and translate them as a whole:

$ trans en:zh "word processor" Translate a Sentence

Translating a sentence is much the same like translating a phrase; you can just quote the sentence into one argument:

$ trans :zh "To-morrow, and to-morrow, and to-morrow," $ trans :zh 'To-morrow, and to-morrow, and to-morrow,' It is also possible to translate multi-line sentences:

$ trans :zh "Creeps in this petty pace from day to day, > To the last syllable of recorded time; > And all our yesterdays have lighted fools > The way to dusty death." To avoid punctuation marks (e.g. "!") or other special characters being interpreted by the shell, use single quotes:

$ trans :zh 'Out, out, brief candle!' There are some cases though, you may still want to use double quotes: (e.g. the sentence contains a single quotation mark "'")

$ trans :zh "Life's but a walking shadow, a poor player" Alternatively, use the -join-sentence (-j) option to treat all arguments as one sentence so that quotes can be omitted:

$ trans -j :zh Life\'s but a walking shadow, a poor player Brief Mode

By default, Translate Shell displays translations in a verbose manner. If you prefer to see only the most relevant translation, there is a brief mode available using the -brief (-b) option:

$ trans -b :fr "Saluton, Mondo" In brief mode, phonetic notation (if any) is not shown by default. To enable this, put an at sign "@" in front of the language code:

$ trans -b :@ja "Saluton, Mondo" Dictionary Mode

Google Translate can be used as a dictionary. When translating a word and the target language is the same as the source language, the dictionary entry of the word is shown:

$ trans :en word To enable dictionary mode no matter whether the source language and the target language are identical, use the -dictionary (-d) option.

$ trans -d fr: mot Note: Not every language supported by Google Translate has provided dictionary data. See

wiki: Languages

to find out which language(s) has dictionary support.

Language Identification

Use the -identify (-id) option to identify the language of the text:

$ trans -id 言葉 Text-to-Speech

Use the -play (-p) option to listen to the translation:

$ trans -b -p :ja "Saluton, Mondo" Use the -speak (-sp) option to listen to the original text:

$ trans -sp "你好,世界" Terminal Paging

Sometimes the content of translation can be too much for display in one screen. Use the -view (-v) option to view the translation in a terminal pager such as less or more:

$ trans -d -v word Right-to-Left (RTL) Languages

Right-to-Left (RTL) languages

are well supported via

GNU FriBidi

.

The program will automatically adjust the screen width for padding when displaying right-to-left languages. Alternatively, you may use the -width (-w) option to specify the screen width:

$ trans -b -w 40 :he "Saluton, Mondo" See

wiki: Languages

to find out which language(s) uses a Right-to-Left writing system.

Pipeline, Input and Output

If no source text is given in command-line arguments, the program will read from standard input, or from the file specified by the -input (-i) option:

$ echo "Saluton, Mondo" | trans -b :fr $ trans -b -i input.txt :fr Translations are written to standard output, or to the file specified by the -output (-o) option:

$ echo "Saluton, Mondo" | trans -b -o output.txt :fr Translate a File

Instead of using the -input option, a

file URI scheme

(file:// followed by the file name) can be used as a command-line argument:

$ trans :fr file://input.txt Note: Brief mode is used when translating from file URI schemes.

Translate a Web Page

To translate a web page, an http(s) URI scheme can be used as an argument:

$ trans :fr http://www.w3.org/ A browser session will open for viewing the translation (via Google Translate's web interface). To specify your web browser of choice, use the -browser option:

$ trans -browser firefox :fr http://www.w3.org/ Language Details

Use the -linguist (-L) option to view details of one or more languages:

$ trans -L fr $ trans -L de+en Some basic information of the language will be displayed: its English name and endonym (language name in the language itself), language family, writing system, canonical Google Translate code and ISO 639-3 code.

Interactive Translate Shell (REPL)

Start an interactive shell using the -shell (or -interactive, -I) option:

$ trans -shell You may specify the source language and the target language(s) before starting an interactive shell:

$ trans -shell en:fr You may also change these settings during an interactive session. See

wiki: REPL

for more advanced usage of the interactive Translate Shell.

Usage

For more details on command-line options, see the man page

trans(1)

or use trans -M in a terminal.

Usage: trans [OPTIONS] [SOURCES]:[TARGETS] [TEXT]... Information options: -V, -version Print version and exit. -H, -help Print help message and exit. -M, -man Show man page and exit. -T, -reference Print reference table of languages (in endonyms) and codes, and exit. -R, -reference-english Print reference table of languages (in English names) and codes, and exit. -S, -list-engines List available translation engines and exit. -list-languages List all languages (in endonyms) and exit. -list-languages-english List all languages (in English names) and exit. -list-codes List all codes and exit. -list-all List all languages (endonyms and English names) and codes, and exit. -L CODES, -linguist CODES Print details of languages and exit. -U, -upgrade Check for upgrade of this program. Translator options: -e ENGINE, -engine ENGINE Specify the translation engine to use. Display options: -verbose Verbose mode. (default) -b, -brief Brief mode. -d, -dictionary Dictionary mode. -identify Language identification. -show-original Y/n Show original text or not. -show-original-phonetics Y/n Show phonetic notation of original text or not. -show-translation Y/n Show translation or not. -show-translation-phonetics Y/n Show phonetic notation of translation or not. -show-prompt-message Y/n Show prompt message or not. -show-languages Y/n Show source and target languages or not. -show-original-dictionary y/N Show dictionary entry of original text or not. -show-dictionary Y/n Show dictionary entry of translation or not. -show-alternatives Y/n Show alternative translations or not. -w NUM, -width NUM Specify the screen width for padding. -indent NUM Specify the size of indent (number of spaces). -theme FILENAME Specify the theme to use. -no-theme Do not use any other theme than default. -no-ansi Do not use ANSI escape codes. -no-autocorrect Do not autocorrect. (if defaulted by the translation engine) -no-bidi Do not convert bidirectional texts. -bidi Always convert bidirectional texts. -no-warn Do not write warning messages to stderr. -dump Print raw API response instead. Audio options: -p, -play Listen to the translation. -speak Listen to the original text. -n VOICE, -narrator VOICE Specify the narrator, and listen to the translation. -player PROGRAM Specify the audio player to use, and listen to the translation. -no-play Do not listen to the translation. -no-translate Do not translate anything when using -speak. -download-audio Download the audio to the current directory. -download-audio-as FILENAME Download the audio to the specified file. Terminal paging and browsing options: -v, -view View the translation in a terminal pager. -pager PROGRAM Specify the terminal pager to use, and view the translation. -no-view, -no-pager Do not view the translation in a terminal pager. -browser PROGRAM Specify the web browser to use. -no-browser Do not open the web browser. Networking options: -x HOST:PORT, -proxy HOST:PORT Use HTTP proxy on given port. -u STRING, -user-agent STRING Specify the User-Agent to identify as. -4, -ipv4, -inet4-only Connect only to IPv4 addresses. -6, -ipv6, -inet6-only Connect only to IPv6 addresses. Interactive shell options: -I, -interactive, -shell Start an interactive shell. -E, -emacs Start the GNU Emacs front-end for an interactive shell. -no-rlwrap Do not invoke rlwrap when starting an interactive shell. I/O options: -i FILENAME, -input FILENAME Specify the input file. -o FILENAME, -output FILENAME Specify the output file. Language preference options: -hl CODE, -host CODE Specify the host (interface) language. -s CODES, -sl CODES, -source CODES, -from CODES Specify the source language(s), joined by '+'. -t CODES, -tl CODES, -target CODES, -to CODES Specify the target language(s), joined by '+'. Text preprocessing options: -j, -join-sentence Treat all arguments as one single sentence. Other options: -no-init Do not load any initialization script. See the man page trans(1) for more information. Code List

Use trans -R or trans -T to view the reference table in a terminal.

For more details on languages and corresponding codes, see

wiki: Languages

.

LanguageCodeLanguageCodeLanguageCode

Afrikaans

Afrikaansaf

Hebrew

עִבְרִיתhe

Portuguese (Brazilian)

Português Brasileiropt-BR

Albanian

Shqipsq

Hill Mari

Кырык марыmrj

Portuguese (European)

Português Europeupt-PT

Amharic

አማርኛam

Hindi

हिन्दीhi

Punjabi

ਪੰਜਾਬੀpa

Arabic

العربيةar

Hmong

Hmoobhmn

Quechua

Runasimiqu

Armenian

Հայերենhy

Hungarian

Magyarhu

Querétaro Otomi

Hñąñhootq

Assamese

অসমীয়াas

Icelandic

Íslenskais

Romanian

Românăro

Aymara

Aymar aruay

Igbo

Igboig

Romansh

Rumantschrm

Azerbaijani

Azərbaycancaaz

Ilocano

Ilokanoilo

Russian

Русскийru

Bambara

Bamanankanbm

Indonesian

Bahasa Indonesiaid

Samoan

Gagana Sāmoasm

Bashkir

Башҡортсаba

Interlingue

Interlingueie

Sanskrit

संस्कृतम्sa

Basque

Euskaraeu

Inuinnaqtun

Inuinnaqtunikt

Scots Gaelic

Gàidhliggd

Belarusian

беларускаяbe

Inuktitut

ᐃᓄᒃᑎᑐᑦiu

Sepedi

Sepedinso

Bengali

বাংলাbn

Inuktitut (Latin)

Inuktitutiu-Latn

Serbian (Cyrillic)

Српскиsr-Cyrl

Bhojpuri

भोजपुरीbho

Irish

Gaeilgega

Serbian (Latin)

Srpskisr-Latn

Bosnian

Bosanskibs

Italian

Italianoit

Sesotho

Sesothost

Breton

Brezhonegbr

Japanese

日本語ja

Setswana

Setswanatn

Bulgarian

българскиbg

Javanese

Basa Jawajv

Shona

chiShonasn

Cantonese

粵語yue

Kannada

ಕನ್ನಡkn

Sindhi

سنڌيsd

Catalan

Catalàca

Kazakh

Қазақ тіліkk

Sinhala

සිංහලsi

Cebuano

Cebuanoceb

Khmer

ភាសាខ្មែរkm

Slovak

Slovenčinask

Cherokee

ᏣᎳᎩchr

Kinyarwanda

Ikinyarwandarw

Slovenian

Slovenščinasl

Chichewa

Nyanjany

Klingon

tlhIngan Holtlh-Latn

Somali

Soomaaliso

Chinese (Literary)

文言lzh

Konkani

कोंकणीgom

Spanish

Españoles

Chinese (Simplified)

简体中文zh-CN

Korean

한국어ko

Sundanese

Basa Sundasu

Chinese (Traditional)

繁體中文zh-TW

Krio

Kriokri

Swahili

Kiswahilisw

Chuvash

Чӑвашлаcv

Kurdish (Central)

سۆرانیckb

Swedish

Svenskasv

Corsican

Corsuco

Kurdish (Northern)

Kurmancîku

Tahitian

Reo Tahitity

Croatian

Hrvatskihr

Kyrgyz

Кыргызчаky

Tajik

Тоҷикӣtg

Czech

Češtinacs

Lao

ລາວlo

Tamil

தமிழ்ta

Danish

Danskda

Latin

Latinala

Tatar

татарчаtt

Dari

دریprs

Latvian

Latviešulv

Telugu

తెలుగుte

Dhivehi

ދިވެހިdv

Lingala

Lingálaln

Thai

ไทยth

Dogri

डोगरीdoi

Lithuanian

Lietuviųlt

Tibetan

བོད་ཡིགbo

Dutch

Nederlandsnl

Luganda

Lugandalg

Tigrinya

ትግርኛti

Dzongkha

རྫོང་ཁdz

Luxembourgish

Lëtzebuergeschlb

Tongan

Lea faka-Tongato

Eastern Mari

Олык марийmhr

Macedonian

Македонскиmk

Tsonga

Xitsongats

English

Englishen

Maithili

मैथिलीmai

Turkish

Türkçetr

Esperanto

Esperantoeo

Malagasy

Malagasymg

Turkmen

Türkmentk

Estonian

Eestiet

Malay

Bahasa Melayums

Twi

Twitw

Ewe

Eʋegbeee

Malayalam

മലയാളംml

Udmurt

Удмуртudm

Faroese

Føroysktfo

Maltese

Maltimt

Ukrainian

Українськаuk

Fijian

Vosa Vakavitifj

Maori

Māorimi

Upper Sorbian

Hornjoserbšćinahsb

Filipino

Filipinotl

Marathi

मराठीmr

Urdu

اُردُوur

Finnish

Suomifi

Meiteilon

ꯃꯤꯇꯩꯂꯣꯟmni-Mtei

Uyghur

ئۇيغۇر تىلىug

French

Françaisfr

Mizo

Mizo ṭawnglus

Uzbek

Oʻzbek tiliuz

French (Canadian)

Français canadienfr-CA

Mongolian

Монголmn

Vietnamese

Tiếng Việtvi

Frisian

Fryskfy

Mongolian (Traditional)

ᠮᠣᠩᠭᠣᠯmn-Mong

Volapük

Volapükvo

Galician

Galegogl

Myanmar

မြန်မာစာmy

Welsh

Cymraegcy

Georgian

ქართულიka

Nepali

नेपालीne

Wolof

Wollofwo

German

Deutschde

Norwegian

Norskno

Xhosa

isiXhosaxh

Greek

Ελληνικάel

Occitan

Occitanoc

Yakut

Sakhasah

Greenlandic

Kalaallisutkl

Odia

ଓଡ଼ିଆor

Yiddish

ייִדישyi

Guarani

Avañe'ẽgn

Oromo

Afaan Oromooom

Yoruba

Yorùbáyo

Gujarati

ગુજરાતીgu

Papiamento

Papiamentupap

Yucatec Maya

Màaya T'àanyua

Haitian Creole

Kreyòl Ayisyenht

Pashto

پښتوps

Zulu

isiZuluzu

Hausa

Hausaha

Persian

فارسیfa

Hawaiian

ʻŌlelo Hawaiʻihaw

Polish

PolskiplWiki

Lists of all languages, writing systems and fonts for reference:

Languages

Writing Systems and Fonts

The following pages demonstrate the advanced usage of Translate Shell:

REPL

Text Editor Integration

Narrator Selection

Configuration

Themes

AppleScript

Find out whether your Linux distribution has included Translate Shell in its official repository. If not, contribute one:

Distros

Frequently Asked Questions, historical stuff, AWK coding style, etc.:

FAQ

History

AWK Style Guide

Reporting Bugs / Contributing

Please review the

guidelines for contributing

before reporting an issue or sending a pull request.

Licensing

This is free and unencumbered software released into the public domain. See

LICENSE

and

WAIVER

for details.