因爲常常用到谷歌翻譯,而每次切換到網頁又以爲耗費時間,因此決定本身寫一個小工具來用,因而就去查詢了一番谷歌翻譯的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函數返回結果爲:翻譯後的字符串,須要翻譯的字符串(原始字符串)。工具