一方面使用在线字典的时候感觉速度不快,另一方面在学习Scala,因此自己用Scala和google-translate-api-java做了一个。用api的确方便,根本不用处理诸如包装,发送,接收,结果解包之类的事情。
使用了Scala的actor机制,好处是查询和返回是异步关系。而且全部使用了函数式的方式,递归。没有while和var。不过似乎有些问题,输入了若干次之后,要等到关闭的一刹那,所有的翻译结果才回来。很搞。感觉似乎不像是哪里没控制好出的问题。不知道是不是因为我的网络有问题。
package cn.sh.huang.translate
import com.google.api.translate._
import scala.actors.Actor._
import java.io.BufferedReader
import java.io.InputStreamReader
object Test {
def main(args : Array[String]) {
// val prop = System.getProperties
// prop.put("http.proxyHost", "url.here")
// prop.put("http.proxyPort", "8080")
val echoActor = actor {
def execute() {
val onJob = receive {
case "quit" =>
false
case msg : String =>
println(Translate.translate(
msg, Language.ENGLISH,
Language.CHINESE_SIMPLIFIED))
true
}
if (onJob) execute()
}
execute()
}
val reader = new BufferedReader(new InputStreamReader(System.in))
def translate() {
val word = reader.readLine
echoActor ! word
if (word != "quit") translate ()
}
translate()
}
}
使用了Scala的actor机制,好处是查询和返回是异步关系。而且全部使用了函数式的方式,递归。没有while和var。不过似乎有些问题,输入了若干次之后,要等到关闭的一刹那,所有的翻译结果才回来。很搞。感觉似乎不像是哪里没控制好出的问题。不知道是不是因为我的网络有问题。