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

単語の意味が分からなかったり、定形文でコレは何て言ったっけ? など、ちょこっと意味を調べたい場合、いちいち GUI のウェブブラウザを開くのもナンセンス。 そう思って、コマンドラインから Google 翻訳を使って翻訳をしてくれるスクリプトを書いてみました。 タイムスタンプを見ると 2011 年の 11 月 22 日でしたが、今でもちゃんと動いているようです。

ソースコード

[bash]

!/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"
[/bash]

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

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

使い方

[bash]

日本語から英語へ

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.
[/bash]

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

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

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

[bash]
cat LICENSE | ./trans.sh en ja
./trans.sh en ja < LICENSE
[/bash]

コメントを残す

メールアドレスが公開されることはありません。