因为常常用到谷歌翻译,而每次切换到网页又以为耗费时间,因此决定本身写一个小工具来用,因而就去查询了一番谷歌翻译的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) }
测试函数以下:app
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函数返回结果为:翻译后的字符串,须要翻译的字符串(原始字符串)。工具