google translate between chinese and english

每次碰到不认识到单词都要请教“有道词典”,可是又不想让它常驻内存。所以考虑在cygwin下使用wordnet,但是到了cygwin17下的安装wordnet又需要安装大堆的X11,不符合我简洁的风格,所以写了个SHELL,完成中英文的翻译。
通过curl调用google的translate,经过sed格式化后输出。支持命令行参数和交互式录入。在查询的同时还能练习打字顺便提高记忆力。
代码

#!/bin/sh
#google translate between chinese and english
function dotrans {
        [ "$1"x = 'x' ] || [ "$1" = 'q' ] && exit 0
        sl=en && tl=zh-CN
        ss=`echo $1|sed "s/[a-zA-Z]*//g"` #is chinese?
        [ "$ss"x != 'x' ] && tl=en && sl=zh-CN
        curl -A 'Mozilla/5.0' "http://translate.google.cn/translate_a/t?client=t&text=$1&tl=$tl&sl=$sl&hl=$sl&ie=UTF-8&oe=UTF-8&multires=1&otf=2&ssel=0&tsel=0&sc=1" 2>null|sed 's/\]\]\]\],.*$//g;s/,,[^]]*]/]/g;s/\]\],\[\[/\n/g;s/\]\]\],\[/\n/g;s/\],\[/\n --/g'|sed 's/[]\["]//g;/ --[0-9],/d;s/,/: /;s/,,.*$//'
        echo
}
for wd in $@; do dotrans $wd; done
promt='enter a word to translate, q for quit'
[ $# -eq 0 ] && echo $promt && while read -p '? '; do dotrans $REPLY; done
执行结果样例:
$ trans china 中国
中国: china,Zhōngguó,
noun: 中国,瓷器,华,中华,瓷
 --中国: China
 --瓷器: porcelain,china,chinaware
 --华: China,flower,flora
 --中华: China
 --瓷: porcelain,china,chinaware
adjective: 中国的,瓷的
 --中国的: China,Chinese
 --瓷的: china
China: 中国
名词: China
 --China: 中国,瓷器,华,中华,瓷

交互式

$ trans
enter a word to translate, q for quit
? china
中国: china,Zhōngguó,
noun: 中国,瓷器,华,中华,瓷
 --中国: China
 --瓷器: porcelain,china,chinaware
 --华: China,flower,flora
 --中华: China
 --瓷: porcelain,china,chinaware
adjective: 中国的,瓷的
 --中国的: China,Chinese
 --瓷的: china
? 中国
China: 中国
名词: China
 --China: 中国,瓷器,华,中华,瓷
? q

转载于:https://my.oschina.net/wonder365/blog/109129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值