欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何调用谷歌翻译API? 有大用

如何调用谷歌翻译API?

我想写一个可以调用各个翻译API接口的android应用,现在遇到一个问题就是不知道怎么调用谷歌的翻译API,我谷歌过了,没找到相关开发文档,也在知乎上搜索了相关问题,目前没找到答案,所以新开了个问题,希望得到各位帮助,谢谢。

关注者
182
被浏览
144,918

17 个回答

emmmm其实注册Tmxmall账号(Leading TM Search and Exchange Platform in China -Tmxmall)能自动获取一个API,在私有云里查看:

可以接入Trados,对接包括谷歌在内的7种机器翻译,而且和谷歌公司正式合作。

(不用科学上网)

安装

如果你用过npm并且能看懂JavaScript,可以看看google-translate-api的源码。(npm、nodejs怎么安装网上都找得到,而且知道一些基本命令的就可以做出下面的例子。)

通过

npm install --save google-translate-api

安装好包,然后在node_modules目录下找到google-translate-apigoogle-translate-token这两个文件夹,将里面index.js里的几个translate.google.com全部替换为 translate.google.cn,就能不翻墙使用这个谷歌翻译api了,跟cn网站那个是同一个服务器。

需要替换域名的两个文件路径为:node_modules/google-translate-api/index.js  node_modules/google-translate-token/index.js

使用:

index.js:

const translate = require('google-translate-api');

translate('请问如何调用谷歌翻译API', {to: 'en'}).then(res => {
    console.log(res.text);
    //=> I speak English
    console.log(res.from.language.iso);
    //=> nl
}).catch(err => {
    console.error(err);
});

执行

$ node index.js

正常的话就会打印出

How to call Google Translate API
zh-CN

相关连接:

npmjs.com/package/googl


2019年5月27日我用还是ok的。版本:"google-translate-api": "^2.3.0"


2020年6月5日,代码没改过,还是能用的。

做了一个例子放在Github上,有需要的可以下下来看看。

tomfriwel / google-translate-sample

评论里有说到dt参数的作用,这里说明一下,dt决定了最终返回的数据,可以包含多个dt参数,以下是dt的一些值:

• t - 源text的翻译

• at - 会额外返回一些近义词

• ex - examples

• ss - 如果翻译的是单个词,会返回与该词相关的动词、形容词、名词

• md - 如果翻译的是单个词,返回该词的定义

• rw - 组词

• bd

• rm


-------------------------------------------------------------------------------------------------------------------

可以用这个API,优点是不需要tk,缺点是返回的内容比较简单

http://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=google

可以参考这个项目,支持文本翻译和网页翻译

yixianle/google-translate

有nodejs版本的包,可直接使用

translate-api

线上demo

translate

npm 包 npmjs.com/package/googl

  • 批量翻译支持

  • 免费无限制

  • 快速可靠,和 translate.google.com 相同源

  • 支持浏览器插件调用

  • 支持node调用

npm install --save google-translate-open-api


一个封装好的在线服务:

特点

  • ,和 Google Translate API 同步升级,本质上调用其网页版接口;

  • 快速,可以选择不翻墙的 translate.google.cn 作为数据来源;

  • 自动纠错,可以使用谷歌原生的接口给输入预料自动纠错;

  • 0配置,docker 封装,一行命令一分钟完成部署立刻使用;

  • 开源,永远免费;

请求示例

curl http://localhost:30031/?text=I spea Dutch!&to=zh-cn

响应示例

{
  "text": "我说荷兰语!",
  "from": {
    "language": {
      "didYouMean": false,
      "iso": "en"
    },
    "text": {
      "autoCorrected": false,
      "value": "I speak Dutch!",
      "didYouMean": true
    }
  },
  "raw": ""
}

Docker Hub


相关利益声明:我是该项目的作者

打开google翻译的Api接口后,可以直接调用了。url:

https://translation.googleapis.com/language/translate/v2?key=YOUR_API_KEY

请求格式如下(post方式):

{
  'q': 'Hello world',
  'q': 'My name is Jeff',
  'target': 'de'
}

If the request is successful, the server returns a 200 OK HTTP status code and the response in JSON format:

{
  "data": {
    "translations": [
      {
        "translatedText": "Hallo Welt",
        "detectedSourceLanguage": "en"
      },
      {
        "translatedText": "Mein Name ist Jeff",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

其他的信息详见:cloud.google.com/transl

github 上有

python语言实现

github.com/ssut/py-goog

首先,Cloud Translation 到底是个啥呢,即利用 Google 的机器学习技术可以在多种语言之间直接进行动态互译,目前存在两个版本:Cloud Translation 基本版 (v2)与 Cloud Translation 高级版 (v3)。

经过优化的基本版 v2 具备简洁性和扩缩能力,非常适合主要包含用户生成的临时内容的应用,例如聊天、社交媒体或评论,已经支持 100 多种语言的检测和文本翻译。

高级版 v3 具备基本版的所有功能,而且还提供了更优秀的功能,适合自定义和长篇内容使用场景。高级版自定义功能包括术语表、批量翻译和模型选择。为了提高安全性,高级版需要使用服务帐号(而不是 API 密钥),因为 API 会接触客户资源(例如术语表)。而借助“模型选择”功能,客户可以根据上下文和内容,利用 Google 的通用或自定义(AutoML)翻译模型,在多种语言之间动态互译。

下面我们来说一下如何调用这款翻译 API。(内容较长,但干货满满,请耐心阅读 )

在正式开始之前,我们需要做一些准备工作 —— 设置项目,具体步骤如下:

Step 1:在 GCP 控制台创建或选择项目

Step2:为该项目启用 Cloud Translation API

进入控制台菜单,找到控制台

- APIs & Services

- Library

然后搜索 Translate API,点击 Enable 按钮开启,开启后如下图:

Step 3:创建服务账号

前往 IAM - Service Account,点击 CREATE SERVICE ACCOUNT

然后输入服务账号名称,如下图:

点击 CREATE 按钮,选择该服务账号的角色

选好后,点击 CONTINUE 按钮

选择下一步,点击 DONE 完成创建

之后返回到服务账号列表,点击刚创建好的服务账号

点击 ADD KEY - Create new key

勾选 JSON,点击 CREATE 按钮

浏览器下载一个 JSON 格式的私钥

Step 4:配置 API key

参考 Step 1,打开控制台菜单 ,进入 APIs & Services - Credentials

选择 CREATE CREDENTIALS - API key,新建一个 API key

Step 5:安装并初始化 Cloud SDK

具体安装可点击此处参考官方文档。


接下来要和大家聊一聊核心步骤 —— Cloud Translation API 的调用方法。

总共有三种调用方法,分别是:使用 apikey 调用(仅 v2 版本)、使用服务账号调用、使用客户端库调用。


我们首先来说针对 v2 版本使用的 apikey 调用

Step 1.

将刚创建的 API key 复制到剪贴板,然后使用以下代码行将其保存到终端的环境变量中,确保使用剪贴板中的密钥替换 YOUR_API_KEY

export API_KEY=YOUR_API_KEY

Step 2.

翻译文本

$ curl "https://translation.googleapis.com/language/translate/v2?target=es&key=${API_KEY}&q=${TEXT}"
{
  "data": {
    "translations": [
      {
        "translatedText": "Mi nombre es Steve",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}


再看使用服务账号调用

Step 1.

将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为包含服务帐号密钥的 JSON 文件的路径,此变量仅适用于当前的 shell 会话,因此,如果您打开新的会话,请重新设置该变

示例:

将 [PATH] 替换为包含您服务帐号密钥的 JSON 文件的路径

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Step 2.

使用如下命令进行调用(v2

示例:curl 命令使用 gcloud auth application-default print-access-token 命令来获取身份验证令牌

$ curl -s -X POST -H "Content-Type: application/json"     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)     --data "{
  'q': 'The Great Pyramid of Giza (also known as the Pyramid of Khufu or the
        Pyramid of Cheops) is the oldest and largest of the three pyramids in
        the Giza pyramid complex.',
  'source': 'en',
  'target': 'zh',
  'format': 'text'
}" "https://translation.googleapis.com/language/translate/v2"
{
  "data": {
    "translations": [
      {
        "translatedText": "吉萨大金字塔(也称为胡夫金字塔或\n        Cheops金字塔)是美国三座金字塔中最古老和最大的金字 塔\n        吉萨金字塔情结。"
      }
    ]
  }
}

Step 3.

使用如下命令调用(v3),HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/project-number-or-id:translateText

请求 JSON 正文:

{
  "sourceLanguageCode": "en",
  "targetLanguageCode": "zh",
  "contents": ["Dr. Watson, come here!", "Bring me some coffee!"]
}

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3/projects/webeye-internal-test:translateText

返回结果如下:

{
  "translations": [
    {
      "translatedText": "沃森博士,过来!"
    },
    {
      "translatedText": "给我一杯咖啡!"
    }
  ]
}


最后我们来看看如何使用客户端库来进行调用

以 python 为例

Step 1.

安装客户端库

pip install google-cloud-translate

Step 2.

从 translation.googleapis.com 接口请求翻译

#!/usr/bin/env python

def run_quickstart():
    # [START translate_quickstart]
    # Imports the Google Cloud client library
    from google.cloud import translate_v2 as translate

    # Instantiates a client
    translate_client = translate.Client()

    # The text to translate
    text = u'Hello, world!'
    # The target language
    target = 'ru'

    # Translates some text into Russian
    translation = translate_client.translate(
        text,
        target_language=target)

    print(u'Text: {}'.format(text))
    print(u'Translation: {}'.format(translation['translatedText']))
    # [END translate_quickstart]


if __name__ == '__main__':
    run_quickstart()

Step 3.

结果如下:

$ python quickstart.py 
Text: Hello, world!
Translation: Привет мир!

Step 4.

使用 v3 接口请求翻译,v3 接口和 v2 接口调用起来是有区别的

主要区别在接口的 endpoint 中要加入 project id, location

from google.cloud import translate

def translate_text(text="YOUR_TEXT_TO_TRANSLATE", project_id="YOUR_PROJECT_ID"):
    """Translating Text."""

    client = translate.TranslationServiceClient()

    location = "global"

    parent = f"projects/{project_id}/locations/{location}"

    # Detail on supported types can be found here:
    # https://cloud.google.com/translate/docs/supported-formats
    response = client.translate_text(
        request={
            "parent": parent,
            "contents": [text],
            "mime_type": "text/plain",  # mime types: text/plain, text/html
            "source_language_code": "en-US",
            "target_language_code": "fr",
        }
    )

    # Display the translation for each input text provided
    for translation in response.translations:
        print("Translated text: {}".format(translation.translated_text))


到这里关于 Cloud Translation API 的调用方法就基本介绍完了。

那么,你学废了么

文章转载自微信公众号「 云上马可君 」(ID: webeye_global)

点击下方查看原文


难点在于计算token,即tk值,这里有Go语言实现。

github.com/kyai/google-

最新的谷歌翻译在中国已经不被墙了

20年10月5号测试,可以使用goslate。

$ pip install goslate
import goslate
gs = goslate.Goslate()
print(gs.translate('hello world', 'zh'))

你好,世界

其它功能不太好用了,但基本的翻译还是可以的。

但经常出现httperror 491:访问次数过多。。。可能API用的太多?

方案1:自己写一个爬虫,找一下google的tk加密算法,缺点是爬虫的没有网页翻译的准。

方案2:万能的selenium,爬取google翻译,缺点是慢。

方案3:万能的selenium+chrome,调用chrome的网页翻译功能,缺点是更慢。

回头整理下再发出来,待更。

如果你用的是c#开发,可以用我开发的库,在nuget中直接搜索Wadereye.GoogleTranslateFreeApi

这个库就可以了

github地址:

github.com/wadereye/Goo

可以用市面上提供的一些免费API。我之前也在看这个,一开始想着是通过接口调谷歌,但是得自行解决代理的问题,之后偶尔看百度一个API商城(地址时apis.baidu.com),我看里面有一个在线翻译,默认是使用谷歌翻译的,然后这样确实不用考虑代理的问题。因为我是个人用,所以次数不会太多,刚好就免费,只直接用这个了...希望对你有所帮助

在线翻译 - 公共文娱 - API服务 - 百度智能云 - 云市场


开箱即用、免费、无限、并发安全的翻译包


来自   https://www.zhihu.com/question/47239748




普通分类: