Google翻译api接入及Java、Python实现

司马项明
2023-12-01

更多好文章发现请点击原文链接:https://blog.wanvale.com/archives/368/

概述

最近要用到机器翻译api做一个PV比较小的模块,看了一下大厂售卖翻译api都是以万为单位计费,而且资源包有时限,鉴于Google翻译国内已经可以访问,于是决定调用Google翻译的api。

太长不看

对于不喜欢看过程的同学,可以直接拿api地址调用。

中译英:https://translate.google.cn/translate_a/single?client=gtx&sl=zh-CN&tl=en&dt=t&q=QUERY_STRING
英译中:https://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=QUERY_STRING

替换QUERY_STRING为要翻译的字符串即可。

参数解析

对于Google翻译,只需要提供几个必要参数就可以获取结果了:

  • client:客户端,通常为at;
  • sl:source language,源语言;
  • tl:target language,目标语言;
  • dt:返回数据,这里指定为t表示对源的翻译结果;
  • q:查询字符串。

client一般指定为at或t,此处使用的gtx可以解除查询次数限制,但有概率造成获取到的结果不正确。
使用这个api最大的好处是不需要tk,但是返回的内容比较简单,对PV较小的项目使用是足够的。

Java实现

对于Java实现,使用的是HttpClient发送接收请求,如果是Maven项目,需要引入依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.3.5</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>

接下来就可以愉快的编写调用函数了

public Map<String, String> translate(String trans) throws IOException {
    Map<String, String> map = new ConcurrentHashMap<>();
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet("https://translate.google.cn/translate_a/single?client=gtx&sl=zh-CN&tl=en&dt=t&q=" + trans);
    CloseableHttpResponse response = httpclient.execute(httpGet);
    if (response.getStatusLine().getStatusCode() == 200) {
        //请求体内容
        String content = EntityUtils.toString(response.getEntity(), "UTF-8");
        JSONArray array = JSONArray.parseArray(content);
        array = array.getJSONArray(0).getJSONArray(0);
        map.put("source", array.getString(1));
        map.put("target", array.getString(0));
        System.out.println("原文:" + array.getString(1));
        System.out.println("译文:" + array.getString(0));
    }
    response.close();
    httpclient.close();
    return map;
}

Python实现

对于Python实现,直接使用requests发送请求,json解析就可以了

import requests
import json


def translate(query_string):
    url = 'https://translate.google.cn/translate_a/single?'
    param = 'client=gtx&sl=zh-CN&tl=en&dt=t&q=' + query_string
    response = requests.get(url + param)
    result = json.loads(response.text)
    return {
        "source": result[0][0][1],
        "target": result[0][0][0],
    }


if __name__ == '__main__':
    trans = translate("你好世界")
    print(trans.get("source"))
    print(trans.get("target"))

 类似资料: