每次碰到不认识到单词都要请教“有道词典”,可是又不想让它常驻内存。所以考虑在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