每次碰到不認識到單詞都要請教「有道詞典」,但是又不想讓它常駐內存。因此考慮在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