google translate between chinese and english

每次碰到不認識到單詞都要請教「有道詞典」,但是又不想讓它常駐內存。因此考慮在cygwin下使用wordnet,可是到了cygwin17下的安裝wordnet又須要安裝大堆的X11,不符合我簡潔的風格,因此寫了個SHELL,完成中英文的翻譯。
經過curl調用google的translate,通過sed格式化後輸出。支持命令行參數和交互式錄入。在查詢的同時還能練習打字順便提升記憶力。
代碼 shell

#!/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: 中國,瓷器,華,中華,瓷

交互式 curl

$ 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
相關文章
相關標籤/搜索