使用Google cloud platform SDK 调用 google translate API

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbailin2009/article/details/72742246

前提
Google 的translate API 在目前来看是翻译准确率相对百度和有道来说最高的,但是国内因为各种原因并不能直接使用google的api,好在还可以翻墙。要使用Google translate API你需要先准备下面的几项内容:

  • 一个可以墙出去的网络代理,vpn,蓝灯等等。要求知道配置的代理地址,端口,用户名,密码。
  • 一个Google账号
  • 一张visa或mastercard或JBC信用卡,用来绑定Google账号的结算账号。

下面开始一步一步说明如何配置和使用translate API。我使用的翻墙工具使蓝灯,没有vpn的同学可以使用蓝灯,它有免费流量,流量使用完后就得等下个月再使用了,也可以购买蓝灯的专业账号,无流量限制,速度稳定,随时可用,购买时请使用本人的邀请码(输入我的邀请码 XH47QN 来获得三个月的蓝灯专业版!立即下载 https://github.com/getlantern/forum)。一个小广告,回归正题。

申请试用Google Cloud Platform
开灯以后访问Google Cloud Platform
这里写图片描述

登录

点控制台或GO TO CONSOLE登录控制台,需要登录Google账号。
这里写图片描述

输入密码登录。
登录平台以后会进平台主界面
这里写图片描述

创建项目

进入主界面以后如果没有项目需要先新建一个项目。入口在平台左上角logo边。
这里写图片描述
点里面的加号创建一个新项目。
创建新项目后,进入API管理
这里写图片描述

创建api秘钥

创建api凭证,选择api秘钥
这里写图片描述

配置环境变量

创建完后你会获取到一个api秘钥,这个api秘钥需要配置到你调用api的系统环境变量中。我用的windows开发,就配置到windows环境变量里面。环境变量创建系统环境变量,变量名为:GOOGLE_API_KEY,变量值为获取到的api秘钥
这里写图片描述

至此,api的使用才进行了三分之一,后面才是重头戏。
这里写图片描述

进入api管理器的api库里面可以看到有很多的API,这些api理论上应该都是可以使用google的sdk来调用的。
这里写图片描述

启用API

找到自己要使用的api,进入并启用api。
这里写图片描述

说了这么多那么如何真正的调用api呢?我们去看看文档 translate API

下载Google SDK

进入SDK下载页面 选择要下载的sdk版本,具体看自己的使用环境是windows还是linux或者mac
这里写图片描述
我下载的windows版本的sdk是需要安装的。其他版本的sdk应该也是需要安装的,我猜测,没有实际验证过。
安装完sdk以后,project已经有了,接下来需要添加结算账户,之前需要准备的信用卡就要用到了。

添加结算账户

从平台主菜单进入结算页。
这里写图片描述
没有创建过结算账户的用户,会要求创建结算账户,进入的界面和申请试用云平台的入口是一样的。
这里写图片描述
可以看到你可以使用所有云端产品,免费获得300刀试用金,试用结束后不会自动收费。绑定信用卡就没有顾虑了。
同意并试用后下一步就是添加联系人信息,和付款信息了,使用准备的信用卡填充信息,开始免费试用。

初始化SDK

sdk安装以后是个shell,需要在shell界面操作。
运行

gcloud init

命令初始化sdk
这里写图片描述
重点来了,初始化sdk的时候会需要先检查网络连接。检查需要一段时间,耐心等待。因为墙的原因,这个时候是不能访问到google的,这时候就提示需要配置网络代理了。
这里写图片描述
输入y,进入下一步,选择一种代理类型
这里写图片描述
根据自己代理的类型选择输入选择,我选择的是2.回车输入代理地址ip。
使用蓝灯的用户如何知道自己的代理ip呢?
蓝灯打开后会自动进入自己的蓝灯信息界面:
这里写图片描述
点开设置,再点高级设置,勾选代理全部流量,就看到自己的代理服务器ip和端口号了。
这里写图片描述
回到gcloud shell界面,输入代理IP地址:127.0.0.1,代理端口:62052(填自己的端口号),下一步是否授权输入 n 回车,网络检查通过。下一步会引导一个登陆账号。
这里写图片描述
已经有账号就选择已有账号,没有账号选择登陆一个新账号。
账号登录后需要选择项目或者创建一个新的项目。
这里写图片描述
需要注意的是这个罗列的项目列表中可能没看到自己项目,这是因为这里罗列的是projectID,这个项目ID可以从云平台的首页或者是IAM和管理页面的“设置”中看到。输入选择的项目ID前的顺序号,这时候sdk的project会设置为选择的项目。
再一下步询问是否配置Google Compute Engine,这个选项可y可n.这时候sdk就配置完成了。

授权SDK

运行

gcloud auth application-default login

运行这个命令后会自动打开浏览器,要求登录google账号,选择自己的google账号登录,允许google auth library查看和管理云平台的各项数据后,页面会发生跳转,最后告知授权结果。其实这个过程走的是Oauth2.0的授权流程。
授权完成后会生成一个授权文件,放在配置目录下。
这里写图片描述

这时候进度条就到三分之二了。
这里写图片描述
还剩下三分之一。。。

创建测试项目

下面就是测试调用api了,translate API的java 调用方式提供的pom依赖

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-translate</artifactId>
    <version>0.17.2-alpha</version>
</dependency>

所以新建或者在已有的maven项目里添加依赖配置。
写自己的测试demo

package com.bolin.google.cloud.translate;

import com.google.cloud.translate.Translate;
import com.google.cloud.translate.Translate.TranslateOption;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;

/**
 * @author bolin
 * @create 2017年5月25日
 */
public class TranslateAPITest {

    public static void main(String... args) {
        Translate translate = TranslateOptions.getDefaultInstance().getService();
        String sourceLanguage = "en";
        String targetLanguage = "zh-CN";
        TranslateOption srcLang = TranslateOption.sourceLanguage(sourceLanguage);
        TranslateOption tgtLang = TranslateOption.targetLanguage(targetLanguage);

        // Use translate `model` parameter with `base` and `nmt` options.
        TranslateOption model = TranslateOption.model("nmt");

        String sourceText = "Robinson Crusoe is a real hero. " +
                "He almost has everything needed for becoming a successful man, " +
                "such as his excellent creativity, great working capacity, courage, and persistence in overcoming obstacles. " +
                "However, Robinson Crusoe is not a perfect man. " +
                "He also has shortcomings. " +
                "He was such a coward when he encountered a storm the first time. " +
                "He sweared and repented yet ate his words and sailed on after the storm. " +
                "By showing Robinson’s shortcomings, Daniel Defoe made Robinson a real person. " +
                "After all, no one is perfect. " +
                "Robinson Crusoe can not only lead the ambitious ones to success, but also guide average people to face up to life. " +
                "This is the significance of the study of Robinson Crusoe";

        Translation translation = translate.translate(sourceText, srcLang, tgtLang, model);
        System.out.printf("Source Text:\n\tLang: %s, Text: %s\n", sourceLanguage, sourceText);
        System.out.printf("TranslatedText:\n\tLang: %s, Text: %s\n", targetLanguage, translation.getTranslatedText());

    }

}

运行测试demo,很大概率会因为网络原因超时,多试几次。

题外
关于translate API的调用方式,其实是有两种的,一种就是上面这种下载sdk使用google auth library的方式;另外一种就是比较灵活的调用方式,使用http协议调用。具体的调用细节请看官方文档 你要问我为什么不在一开始就写可以用REST调用,就是想告诉你要认真阅读官方文档,省时省力省心。说多了都是泪,上面的内容全是一步步摸索过来的。
祝顺利。

猜你喜欢

转载自blog.csdn.net/wangbailin2009/article/details/72742246
今日推荐