共计 1290 个字符,预计需要花费 4 分钟才能阅读完成。
Google Translate 的 API 调用
由于经常用到谷歌翻译,而每次切换到网页又觉得耗费时间,所以决定自己写一个小工具来用,于是就去查询了一番谷歌翻译的 API,但是看到都说是 API 已经开始收费了,但还是有人通过网页爬出了网页翻译的 API 但是利用起来比较繁琐。之后又找到了一个简单的 API,如下:
fun translate(text: String, source: String = “auto”, target: String = “zh-CN”): Pair<String, String> {
val textChecked = if (text.isBlank()) “null” else URLEncoder.encode(text, “utf8”)
val userAgent = “Mozilla/5.0”
val url = “https://translate.googleapis.com/translate_a/single?client=gtx&sl=$source&tl=$target&dt=t&q=$textChecked”
val connection = URL(url).openConnection().apply { setRequestProperty(“User-Agent”, userAgent) }
val raw = connection.getInputStream().use { it.readBytes() }.toString(Charset.forName(“utf8”))
val p1 = raw.indexOf(“\”,\””)
val p2 = raw.indexOf(“\”,”, p1 + 1)
val result = raw.substring(4, p1)
val query = raw.substring(p1 + 3, p2)
return Pair(result, query)
}
测试函数如下:
fun main() {
println(translate(“ 别让这么应景的天空放晴啊 ”))
println(translate(“ 空気を読んだ空晴れないでよ ”))
println(translate(“ 别降下这么看场合的雨啊 ”))
println(translate(“ 空気を読んだ雨降らないでよ ”))
println(translate(“He sits no sure that sits too high”))
println(translate(“ 高处不胜寒 ”, target = “en-US”))
}
调用结果如下:
(别让这么应景的天空放晴啊, 别让这么应景的天空放晴啊)
(我看空中的天空请不要晴天, 空気を読んだ空晴れないでよ)
(别降下这么看场合的雨啊, 别降下这么看场合的雨啊)
(看风雨时不要下雨, 空気を読んだ雨降らないでよ)
(他不确定是不是太高了, He sits no sure that sits too high)
(High altitude, 高处不胜寒)
translate 函数参数分别是:需要翻译的字符串,原始语言(默认为 auto,即自动检测),目标语言(默认 zh-CN,即简体中文)。translate 函数返回结果为:翻译后的字符串,需要翻译的字符串(原始字符串)。