Google Translate的API調用

Google Translate的API調用

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

相關文章
相關標籤/搜索