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

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

ソースコード

</p>

<h1>!/usr/bin/env bash</h1>

<p>[ $# -ne 2 ] &amp;&amp; exit 1;</p>

<p>sl=&quot;$1&quot;
tl=&quot;$2&quot;</p>

<p>while read line
do
  text=&quot;$text $line&quot;
done</p>

<p>curl -s -X POST -d &quot;sl=${sl}&amp;tl=${tl}&quot; --data-urlencode &quot;text=${text}&quot; --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/&gt;/&gt;\n/g' | awk '/result_box/,/^&lt;\/span&gt;/ { print; }' | sed -e 's/&lt;.*&gt;//g' -e '/^$/d' -e &quot;s/&amp;#39;/'/g&quot;

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

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

使い方

</p>

<h1>日本語から英語へ</h1>

<p>echo '新しい朝が来た。' | ./trans.sh ja en
A new morning has come.</p>

<h1>日本語からロシア語へ</h1>

<p>echo '新しい朝が来た。' | ./trans.sh ja ru
Настало новое утро настало.</p>

<h1>英語からドイツ語へ</h1>

<p>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 < LICENSE

投稿者:

dyama

佐世保のシステムエンジニアです。詳しいプロフィールやこのブログについてはこちらをご覧ください。

コメントを残す

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

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