Go:如何使用 Google Translate 翻譯文本

你有沒有想過如何開發自己的翻譯器?或者你是否遇到過需要開發文本翻譯功能的需求?那麼本文關於 Golang 如何使用谷歌翻譯 API 翻譯文本的教程就是爲你準備的!讓我們來看看今天的教程都講了些什麼。

初始化配置

先初始化一個 Go 項目:在本地創建 "google-translate 文件夾,在這個文件夾中創建一個名爲 server 的新文件夾。在這個文件夾中,我們將執行後端代碼。

mkdir google-translate
cd google-translate
mkdir server
go mode init translate

Rapid API 設置

在 RapidAPI Hub[https://rapidapi.com/hub] 這個網站上創建一個帳戶。如果你已經註冊了,那就直接登錄。

RapidAPI Hub

RapidAPI hub 是一個 API 中心,是開發人員能夠查找、管理和連接大量的 API。讓開發人員在一個地方管理所有的 API 集成,並提供實時性能指標。
在上面打開的 RapidAPI 網站的左上角搜索框中,搜索 Google Translate,在返回的列表中找到並點擊進入:

Google Translate

然後你需要訂閱 API:

選擇訂閱 Google 翻譯 API。

可以選擇免費的,會返回訂閱成功:

你將獲得 “X-RapidAPI-Key” 用於發送請求。請保管好你的密匙。

測試翻譯 API 接口

在 RapidAPI 網站上,我們可以看到可使用的接口:

Google 翻譯接口

中間一欄介紹每個接口詳細信息,右邊一欄提供了各種語言的接口 Demo。

獲取各種語言種類接口

我們在網站上選擇 GET language 接口,查看 Go 語言實現如下所示:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {

    url := "https://google-translate1.p.rapidapi.com/language/translate/v2/languages"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("Accept-Encoding", "application/gzip")
    req.Header.Add("X-RapidAPI-Key", "xxxxxx")
    req.Header.Add("X-RapidAPI-Host", "google-translate1.p.rapidapi.com")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))
}

執行結果如下:

{
    "data":
    {
        "languages":
        [
            {
                "language": "af"
            },
            {
                "language": "ak"
            },
            {
                "language": "am"
            },
            {
                "language": "en" //英文
            },
            {
                "language": "zh-CN" //中文
            },
           ...
        ]
    }
}

上面返回的就是 Google 翻譯支持的各種語言。

翻譯 API

現在我們根據上面的語言列表,使用翻譯 API 來對英文到中文翻譯功能的測試。

代碼如下所示:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
)

func main() {

    url := "https://google-translate1.p.rapidapi.com/language/translate/v2"

    payload := strings.NewReader("q=Hello%2C%20world!&target=zh-CN&source=en")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("content-type", "application/x-www-form-urlencoded")
    req.Header.Add("Accept-Encoding", "application/gzip")
    req.Header.Add("X-RapidAPI-Key", "xxxx")
    req.Header.Add("X-RapidAPI-Host", "google-translate1.p.rapidapi.com")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))
}

執行結果:

{
    "data":
    {
        "translations":
        [
            {
                "translatedText": "你好世界!"
            }
        ]
    }
}

基於以上兩個接口,就可以實現翻譯功能了。
Github 上面也有完整的例子,結合前端的實現:

代碼地址:https://github.com/Aniket303/google-translate1

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/0qJm59opxehE4cVbNgszXQ