コマンドラインから Google 翻訳を利用するスクリプト

単語の意味が分からなかったり、定形文でコレは何て言ったっけ? など、ちょこっと意味を調べたい場合、いちいち GUI のウェブブラウザを開くのもナンセンス。

そう思って、コマンドラインから Google 翻訳を使って翻訳をしてくれるスクリプトを書いてみました。 タイムスタンプを見ると 2011 年の 11 月 22 日でしたが、今でもちゃんと動いているようです。

ソースコード

#!/usr/bin/env bash

[ $# -ne 2 ] && exit 1;

sl="$1"
tl="$2"

while read line
do
    text="$text $line"
done

curl -s -X POST -d "sl=${sl}&tl=${tl}" \
  --data-urlencode "text=${text}" \
  --user-agent 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)' \
  http://translate.google.co.jp/ \
  | sed 's/>/>\n/g' \
  | awk '/result_box/,/^<\/span>/ { print; }' \
  | sed -e 's/<.*>//g' -e '/^$/d' -e "s/&#39;/'/g"

cURL を使って、標準入力を POST して結果を表示するだけです。UA をフルブラウザのものにしないと弾かれてしまうので、Microsoft Internet Explorer 6.0 のものにしています。

googleだったら、ちゃんとしたAPIも公開しているのでしょうが、POST結果を取得したいだけなのに色々面倒な事はしたくないので、シェルスクリプトでガリガリ書きました。

使い方

# 日本語から英語へ
echo '新しい朝が来た。' | ./trans.sh ja en
A new morning has come.

# 日本語からロシア語へ
echo '新しい朝が来た。' | ./trans.sh ja ru
Настало новое утро настало.

# 英語からドイツ語へ
echo 'Hello, This is a test message.' | ./trans.sh en de
Hallo, Dies ist eine Testnachricht.

スクリプトの引数に from と to 言語を指定します。 echo コマンドで指定するのが面倒だったら、単に ./trans.sh en ja を実行して文を入力後、C-d で EOF してやれば良いと思います。

./trans.sh en ja
There is a pen and a pencil.
ペンと鉛筆があります。

また、当たり前ですが下記のようにファイルに対しても使えます。

cat LICENSE | ./trans.sh en ja
./trans.sh en ja &lt; LICENSE

※ 2020/07/02 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください