Google Translate的API呼叫
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函式返回結果為:翻譯後的字串,需要翻譯的字串(原始字串)。