在命令行下使用Google Translate

2013-02-06 00:00

在命令行下使用Google Translate

by

at 2013-02-05 16:00:00

original http://www.soimort.org/posts/138

所以说我还是发篇中文博介绍一下这个东西好了。貌似对其他人还蛮有用的样子。

Google Translate CLI: http://www.soimort.org/google-translate-cli/


学习语言的时候,Google Translate是一大神器,可惜要免费的话,只能在浏览器里用。API什么的是要收费的,每百万字20刀,当然还需要开发者自己注册API key,而且还有流量限额,真心麻烦……

个人用户可能只是想在终端下查查单词短语翻译几个句子(尤其是对于我这样的重度命令行用户来说,实在是不想每次都开个浏览器标签去查啊)。如果Google Translate提供了一套命令行接口(或者至少是开放的不需要认证key的API)就会方便很多,显然,这件事情永远都不可能发生。

还有,在文本编辑器里面翻译#文春(误)文章的时候,每次切换到浏览器里去查效率太低了(何况安心干活的时候可能根本就不想去开浏览器,巨耗资源)。如果能在vim或者emacs里一键查看翻译的话,岂不妙哉?

简而言之,想法就是在命令行下直接一个HTTP Request调用Google Translate来做翻译,不用浏览器,也不需要去用花钱的API key。

以上是背景铺垫。

以前的命令行工具差不多都是基于Google Translate的官方API,鉴于不要钱的API v1已经关闭了,目测它们已经失效(你总不能让用户去自己注册一个API key然后付了钱才能用你的工具吧……)

写了一个简单的hack,直接裸调与浏览器访问Google Translate时相同的HTTP Request(不用Google提供的API,当然也不需要key),解析出翻译的结果。用不超过100行AWK脚本实现,只要系统上有GNU Awk就能运行。不需要其他任何依赖库。

什么?为什么要拿AWK来写?解决这种程度的小问题,Perl、Python、Ruby之类的也太重量级了吧

源码在这里: https://github.com/soimort/google-translate-cli

安装

$ git clone git://github.com/soimort/google-translate-cli.git
$ cd google-translate-cli/
$ make install

(不想安装的话,直接调用./translate.awk也可以)

查看帮助:

$ translate

示例

翻译短语或句子:(默认任意语言转英文)

$ translate ヘヴィー・ローテーション
Heavy Rotation

翻译多行句子:

$ translate "
> Das ist doch kein Geheimnis
> Nicht für dich und nicht für mich
> Das Leben ist oft hart
> Doch wir kämpfen - verlieren und gewinnen"

It's no secret
Not for you and not for me
Life is often hard
But we fight - lose and win

翻译不知道什么鸟语到中文:
(参数格式:{源语言=目标语言},在源语言参数省略的情况下,让系统自动识别)

$ translate {=zh} 'UEFI Secure Boot is fun!'
UEFI安全启动是很好玩!

翻译中文到各国鸟语:
(参数格式:{源语言=目标语言1+目标语言2+...+目标语言n}

$ translate {zh=en+fr+de+sv+es} 挽尊
Pull the statue
tirez la statue
Ziehen Sie die Statue
dra statyn
Tire de la estatua

查看汉字的正确发音(误)
(在语言代码前加上@即可)

$ translate {=@zh} 夜露死苦
Yèlù sǐ kǔ

$ translate {ja=@ja} 夜露死苦
Yoroshiku

翻译一个文本文件:(到标准输出)

$ translate {=zh} /usr/share/licenses/common/CCPL/cc-readme.txt
有6种不同的Creative Commons许可,所有这些都包括在内
在这licenses目录:

CC-BY- 3.0.txt - 署名
CC-BY- NC- 3.0.txt - 署名 - 非商业性使用
CC-BY- NC- ND- 3.0.txt - 署名 - 非商业性使用 - NoDerivs
CC-BY- NC- SA- 3.0.txt - 署名 - 非商业性使用 - 相同方式共享
CC-BY- ND- 3.0.txt - 署名 - 禁止演绎“
CC-BY- SA- 3.0.txt - 署名 - 相同方式共享

如果一个软件包使用这些许可证之一,它应该被引用如下:
许可( CCPL :BY- NC-SA “ )

Vim一键翻译

.vimrc里加上一行(假定需要日文转罗马字发音+英文翻译):

set keywordprg=trs\ {ja=@ja+en}

然后就可以在Vim中用Shift-K召唤Google翻译娘,即时查看光标下对应单词的翻译了。是不是很方便?
(基本上,这东西的便捷程度完全取决于你的网速……)

参考链接

更多示例请参见:http://www.soimort.org/google-translate-cli

Google Translate所使用的语言代码(地球人都知道的:enfrderuzh/zh-CNzh-TWja
详细列表可以参考这里:https://developers.google.com/translate/v2/using_rest#language-params

Fork me on GitHub