Go:如何翻译文本

你有没有想过如何开发自己的翻译器?或者你是否遇到过需要开发文本翻译功能的需求?那么本文关于Golang如何使用谷歌翻译API翻译文本的教程就是为你准备的!让我们来看看今天的教程都讲了些什么。

  • RapidAPI点理解和实现
  • 创建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

然后你需要订阅
选择订阅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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,744评论 1 180
  • 2018web前端最新面试题总结 一、Html/Css基础模块 基础部分 什么是HTML?答:​ HTML并不是...
    duans_阅读 4,690评论 3 27
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,085评论 2 59
  • 这个是为开发者收集非常好的 API .格式参照awesome的清单. 目录 二次元 博客 书籍 商业 日历 共享汽...
    伟子男阅读 2,945评论 0 0
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,239评论 30 472