google transalte api的使用,V2服务账户方式(google-cloud-java)

server/2024/10/18 19:22:05/

Google Cloud Translation API 有几个不同的使用方式,其中之一是使用最新的 Google Cloud Client
Library。这些库提供了简化的 API,使得与 Google Cloud 服务的交互变得更加容易。

对于gcp平台的创建方式,我记得得绑定真信用卡了,虚拟信用卡好像不行了。

背景和环境

谷歌翻译的api,就是谷歌云gcp上的一个翻译api,即cloud translation api,分v2和v3,v3更多高级功能,v2可能会被淘汰,所以后续我们都会优先使用v3,v2能用api key,也能用服务账户,v3只能用服务账户,而v3我选择了服务账户的方式去创建凭证并用客户端的方式使用凭证。
下面是文档https://cloud.google.com/docs/authentication/use-service-account-impersonation?hl=zh-cn
在这里插入图片描述
下面是客户端的选择界面,我们是java,所以能看到是google-cloud-java,https://github.com/googleapis/google-cloud-java。后面项目会引入这个包,进入GitHub里面也会给出如何用客户端链接到云服务,我在后续的代码示例中就是取自“Other environments”的代码
在这里插入图片描述
点击这里,我们就能拿到相关包的版本。
在这里插入图片描述

GCP平台操作获取服务账户JSON凭证流程

步骤 1:设置 Google Cloud 项目

访问 Google Cloud 控制台: Google Cloud 控制台
创建新项目: 如果你还没有项目,可以创建一个新项目。
启用 API: 在 API 和服务页面中,启用 “Cloud Translation API”。

请添加图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

步骤 2:设置服务账号

访问服务账号页面: 在 Google Cloud 控制台中,导航到“IAM 和管理” > “服务账号”。
创建服务账号:
服务账号名称: 输入服务账号的名称。
服务账号 ID: Google Cloud 将自动生成一个服务账号 ID。
角色: 分配合适的角色,例如“项目” > “所有者”或“项目” > “编辑”。
创建密钥: 在创建服务账号的过程中,选择“JSON”类型的密钥。系统会自动下载一个 JSON 文件,这就是你的服务账号凭证文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤 3:在 SBT 项目中添加依赖(如果是maven,就用maven的一样的)

在你的 build.sbt 文件中添加以下内容:

libraryDependencies += "com.google.cloud" % "google-cloud-translate" % "2.47.0"

步骤 4:配置凭据和目标语言

创建 app.properties 文件,并添加以下内容:

google.cloud.credentials.path=/path/to/your-service-account-credentials.json
google.cloud.translate.target.language=en

确保替换 /path/to/your-service-account-credentials.json 为你的服务账号 JSON 密钥文件的实际路径,将 es 替换为你想要翻译的目标语言。

步骤 5:编写 Java 代码

以下是更新的 GoogleTranslateUtil 类,展示如何使用最新的 Google Cloud Client Library:

java">
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.translate.Translate;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;
import com.google.auth.oauth2.ServiceAccountCredentials;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;public class GoogleTranslateUtil {private static final Logger log = LoggerFactory.getLogger(GoogleTranslateUtil.class);private final static String PROPERTIES_PATH = "/com/app.properties";public static Properties properties = new Properties();private static Translate translate;private static String targetLanguage;static {try {// 1.Load app.propertiesproperties.load(new InputStreamReader(GoogleTranslateUtil.class.getResourceAsStream(PROPERTIES_PATH),StandardCharsets.UTF_8));// 2.Obtain the credential path and target languageString credentialsPath = properties.getProperty("google.cloud.credentials.path");targetLanguage = properties.getProperty("google.cloud.translate.target.language");// 3.Set Google Cloud credentialsInputStream credentialsStream = GoogleTranslateUtil.class.getClassLoader().getResourceAsStream(credentialsPath);if (credentialsStream == null) {throw new FileNotFoundException("Credentials file not found at: " + credentialsPath);}GoogleCredentials credentials = GoogleCredentials.fromStream(credentialsStream);translate = TranslateOptions.newBuilder().setCredentials(credentials).build().getService();log.info("Google Translate client initialized successfully.");} catch (IOException e) {log.error("Error loading configuration file or setting credentials: ",e);e.printStackTrace();} catch (Exception e) {log.error("Unexpected error: ",e);e.printStackTrace();}}public static String translateText(String text) {try {Translation translation = translate.translate(text,Translate.TranslateOption.targetLanguage(targetLanguage));return translation.getTranslatedText();} catch (Exception e) {log.error("Error during translation: ",e);e.printStackTrace();return text;}}public static void main(String[] args) {String text = "您好!";String translatedText = GoogleTranslateUtil.translateText(text);log.info("Original Text: {}" , text);log.info("Translated Text: {}" , translatedText);}
}

http://www.ppmy.cn/server/104408.html

相关文章

Android笔试面试题AI答之Kotlin(17)

文章目录 80. 阐述 inline class内联类的开销?1. 编译时开销2. 运行时开销3. 可维护性和可读性结论 81. Kotlin是如何解决空指针(NPE)问题的 ?82. Kotlin中的Compaion Object的作用 ?主要用途如何定义注意事项 83. 详细描述 Koltin by lazy工…

《Web项目跨域请求后端Api设置Cookie失败问题?》

问题描述: 在web项目中跨域请求api时,api登录成功后需要向域名中设置cookie实现在两个域名下共享,但是登录接口返回成功,响应头中也有set-cookie,实际却无法设置到cookie中… web项目访问时的域名https://b.com/ api所…

adb 获取手机电池信息与修改恢复

一、获取电池信息 1.1 命令: adb shell dumpsys battery 示例: adb shell dumpsys battery Current Battery Service state:AC powered: falseUSB powered: trueWireless powered: falseMax charging current: 500000status: 2health: 2present: true…

XSS-复现dom破坏案例和靶场

目录 xss注入原理: xss是什么? xss原理: DOM: 闯关: 第一关:Ma Spaghet! 源码: 要求: 分析: 第二关: Jefff 源码: 要求: …

vue3+ts+vant4 列表下拉刷新+分页加载

效果图 主要代码&#xff1a; <van-pull-refreshv-model"refreshing"refresh"handleRefresh"pulling-text"下拉释放刷新"loosing-text"下拉释放刷新"loading-text"加载中"><van-listv-model:loading"loading…

【C++】static

C中的static 说起static&#xff0c;一般想到它的作用是延长变量的生命周期&#xff0c;如果只是这样那么它跟全局变量有什么区别呢&#xff1f; 在C之前&#xff0c;C语言就有static了&#xff0c;C的static作用很简单&#xff0c;就是不让其他文件的访问自己的全局变量。 C中…

Java编程:单一职责原则

单一职责原则&#xff08;SRP&#xff09;在面向对象设计领域占据核心地位&#xff0c;它是SOLID五大原则的关键一环。 这些原则共同目的是提升软件的易维护性和扩展性。 按照SRP&#xff0c;每个类的构建应专注于一个变化因子。 在软件工程实践中&#xff0c;单一职责原则作为…

数据库机器上停service360safe

发现有个数据库的负载较高&#xff0c;发现有360safe&#xff0c;就准备停了该服务再观察 [rootdb1 ~]# ps -ef |grep 360 root 970 1 0 15:12 ? 00:00:10 /opt/360safe/360entclient root 976 970 5 15:12 ? 00:18:42 /opt/360…