你有沒有想過如何開發(fā)自己的翻譯器惜姐?或者你是否遇到過需要開發(fā)文本翻譯功能的需求?那么本文關(guān)于Golang如何使用谷歌翻譯API翻譯文本的教程就是為你準(zhǔn)備的!讓我們來看看今天的教程都講了些什么。
- RapidAPI點(diǎn)理解和實(shí)現(xiàn)
- 創(chuàng)建API和用戶接口
- 實(shí)現(xiàn)服務(wù)端文本翻譯邏輯
初始配置
先初始化一個Go項(xiàng)目:在本地創(chuàng)建"google-translate文件夾腰鬼,在這個文件夾中創(chuàng)建一個名為server的新文件夾。在這個文件夾中塑荒,我們將執(zhí)行后端代碼熄赡。
mkdir google-translate
cd google-translate
mkdir server
go mode init translate
Rapid API設(shè)置
在RapidAPI Hub[https://rapidapi.com/hub]這個網(wǎng)站上創(chuàng)建一個帳戶。如果你已經(jīng)注冊了齿税,那就直接登錄彼硫。
RapidAPI Hub
RapidAPI hub是一個API中心,是開發(fā)人員能夠查找凌箕、管理和連接大量的API拧篮。讓開發(fā)人員在一個地方管理所有的API集成,并提供實(shí)時性能指標(biāo)牵舱。
在上面打開的RapidAPI網(wǎng)站的左上角搜索框中串绩,搜索Google Translate,在返回的列表中找到并點(diǎn)擊進(jìn)入:
Google Translate
然后你需要訂閱
選擇訂閱Google翻譯API
可以選擇免費(fèi)的芜壁,會返回訂閱成功:
你將獲得“X-RapidAPI-Key”用于發(fā)送請求礁凡。請保管好你的密匙高氮。
測試翻譯API接口
在RapidAPI網(wǎng)站上,我們可以看到可使用的接口:
Google翻譯接口
中間一欄介紹每個接口詳細(xì)信息把篓,右邊一欄提供了各種語言的接口Demo纫溃。
獲取各種語言種類
我們在網(wǎng)站上選擇GET language接口腰涧,查看Go語言實(shí)現(xiàn)如下所示:
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))
}
執(zhí)行結(jié)果如下:
{
"data":
{
"languages":
[
{
"language": "af"
},
{
"language": "ak"
},
{
"language": "am"
},
{
"language": "en" //英文
},
{
"language": "zh-CN" //中文
},
...
]
}
}
上面返回的就是Google翻譯支持的各種語言韧掩。
翻譯API
現(xiàn)在我們根據(jù)上面的語言列表,使用翻譯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))
}
執(zhí)行結(jié)果:
{
"data":
{
"translations":
[
{
"translatedText": "你好世界疗锐!"
}
]
}
}
機(jī)遇以上兩個接口,就可以實(shí)現(xiàn)翻譯功能了费彼。
Github上面也有完整的例子滑臊,結(jié)合前端的實(shí)現(xiàn):
代碼地址:https://github.com/Aniket303/google-translate1