阿里云翻译使用

      • 代码
      • 阿里云翻译包

代码

package xxx.yyy.zzz;import com.aliyun.alimt20181012.models.TranslateGeneralResponse;
import org.apache.commons.lang3.StringUtils;import java.util.*;
import java.util.stream.Collectors;public class AlibabaCloudTranslation {//默认idpublic static final String DEFAULT_ACCESS_KEY_ID = "你的id";//默认secretpublic static final String DEFAULT_ACCESS_KEY_SECRET = "你的密码";//中文public static final String ZH = "zh";//英文public static final String EN = "en";//设置格式类型public static final String TEXT = "text";// 访问的域名public static final String MT_ALIYUNCS_COM = "mt.aliyuncs.com";//设置场景为一般public static final String GENERAL = "general";public static final String EXCEPTION = "翻译失败:[阿里云的id或密码错误][网络异常]";public static final char CHARACTER_UNDERLINE = '_';public static final char NULL_CHARACTER = ' ';public static final String DELIMITER_COMMA = ",";/*** 使用AK&SK初始化账号Client** @param accessKeyId 阿里云密钥id* @param accessKeySecret 阿里云密钥密码* @return Client 客户端* @throws Exception 初始化客户端异常*/public static com.aliyun.alimt20181012.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()// 必填,AccessKey ID.setAccessKeyId(accessKeyId)// 必填,AccessKey Secret.setAccessKeySecret(accessKeySecret);config.endpoint = MT_ALIYUNCS_COM;return new com.aliyun.alimt20181012.Client(config);}/*** 获取翻译结果  如果密钥和密码为空,则默认使用这个特定的id与密码,但有可能失效** @param text            翻译内容* @param accessKeyId     阿里云密钥id* @param accessKeySecret 阿里云密钥密码* @return String 翻译结果*/public static String getResults(String text, String accessKeyId, String accessKeySecret) {if (StringUtils.isEmpty(text)) {return "";}// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.htmlcom.aliyun.alimt20181012.Client client;try {if (StringUtils.isAllEmpty(accessKeyId, accessKeySecret)) {client = AlibabaCloudTranslation.createClient(DEFAULT_ACCESS_KEY_ID, DEFAULT_ACCESS_KEY_SECRET);} else client = AlibabaCloudTranslation.createClient(accessKeyId, accessKeySecret);} catch (Exception e) {throw new RuntimeException(e.getMessage());}com.aliyun.alimt20181012.models.TranslateGeneralRequest translateGeneralRequest = new com.aliyun.alimt20181012.models.TranslateGeneralRequest().setFormatType(TEXT).setSourceLanguage(ZH).setTargetLanguage(EN).setSourceText(text).setScene(GENERAL);com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();TranslateGeneralResponse translateGeneralResponse;try {// 复制代码运行请自行打印 API 的返回值translateGeneralResponse = client.translateGeneralWithOptions(translateGeneralRequest, runtime);} catch (Exception error) {throw new RuntimeException(EXCEPTION);}return translateGeneralResponse.getBody().getData().getTranslated();}/*** 请求一次接口获取所有文本的翻译,通过map映射  map<文本,翻译结果> 并返回** @param textList 翻译内容集合* @param accessKeyId 阿里云密钥id* @param accessKeySecret 阿里云密钥密码* @return LinkedHashMap<文本,翻译结果>*/public static Map<String, String> getResultsMap(List<String> textList, String accessKeyId, String accessKeySecret) {//去重 按,分割成字符串String collect = textList.stream().distinct().collect(Collectors.joining(DELIMITER_COMMA));//获取翻译结果 并去除特殊字符串String results = removeSpecialCharacters(getResults(collect, accessKeyId, accessKeySecret));//将结果转换成list字符串List<String> collected = Arrays.stream(results.split(DELIMITER_COMMA)).collect(Collectors.toList());//收集翻译前后的字符串  有序的mapMap<String, String> resultsMap = new LinkedHashMap<>(16, 0.75f);textList = Arrays.stream(collect.split(DELIMITER_COMMA)).collect(Collectors.toList());int size = textList.size();for (int i = 0; i < size; i++) {//去掉字符串前后的空格resultsMap.put(textList.get(i).trim(), collected.get(i).trim());}return resultsMap;}/*** 去除字符串的特殊字符串  符号 ’,’ 除外** @param text 字符串* @return String 字符串*/public static String removeSpecialCharacters(String text) {return text.replaceAll("[\n`~!@#$%^&*()+=|{}':;\\[\\].<>/?!¥…()—【】‘;:”“’。,、?]", "");
//        return text.replaceAll("[\n`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]", ""); //该正则可能存在重复的字符}/*** 翻译并改为大写 空格变为下划线  to upper case with underscore ->  TO_UPPER_CASE_WITH_UNDERSCORE 格式** @param text 字符串* @return String 字符串*/public static String toUpperCaseWithUnderscore(String text) {if (text == null || text.isEmpty()) {return text;}StringBuilder result = new StringBuilder();for (int i = 0; i < text.length(); i++) {char c = text.charAt(i);if (c == NULL_CHARACTER) {result.append(CHARACTER_UNDERLINE);} else {result.append(Character.toUpperCase(c));}}return result.toString();}/*** 字符串改为 大驼峰格式  to camel case -> ToCamelCase** @param text 字符串* @return String 字符串*/public static String toCamelCase(String text) {if (text == null || text.isEmpty()) {return text;}StringBuilder result = new StringBuilder();boolean capitalizeNext = true;for (int i = 0; i < text.length(); i++) {char c = text.charAt(i);if (c == NULL_CHARACTER || c == CHARACTER_UNDERLINE) {capitalizeNext = true;} else if (capitalizeNext) {result.append(Character.toUpperCase(c));capitalizeNext = false;} else {result.append(c);}}return result.toString();}/*** 大驼峰转下划线 TestEnum -> test_enum** @param text 字符串* @return String 字符串*/public static String toUnderCase(String text) {if (text == null) {return null;}int len = text.length();StringBuilder res = new StringBuilder(len + 2);char pre = 0;for (int i = 0; i < len; i++) {char ch = text.charAt(i);if (Character.isUpperCase(ch)) {if (pre != CHARACTER_UNDERLINE && pre != 0) {res.append(CHARACTER_UNDERLINE);}res.append(Character.toLowerCase(ch));} else {res.append(ch);}pre = ch;}return res.toString();}
}

阿里云翻译包

<dependency><groupId>com.aliyun</groupId><artifactId>alimt20181012</artifactId><version>1.1.0</version>
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S系列文章 之 编写自动化部署K8S脚本

介绍 通过ansible脚本shell实现自动化部署k8s基础集群(v1.25.0) 部署结构 1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点 2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7&#xff0c;内核版本(5.19.4-1.el7…

Object Map 的相互转换

学生业务对象定义&#xff1a;Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种&#xff1a;通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…

【EI/SCOPUS征稿】第三届电子通信与计算机科学技术国际学术会议(ECCST 2023)

第三届电子通信与计算机科学技术国际学术会议&#xff08;ECCST 2023&#xff09; 2023 3rd International Conference on Electronic Communication,Computer Science and Technology 2023年电子通信与计算机科学技术国际学术会议定于2023年9月15-17日在中国上海举行。会议旨…

培训报名小程序报名功能开发

目录 1 创建页面2 新建URL参数3 课程详细信息4 报名数据源创建5 报名信息功能开发6 设置页面跳转7 最终实现的效果总结 在培训报名小程序中&#xff0c;我们已经开发了首页和列表页。在列表页点击报名时就跳转到报名页面&#xff0c;先看我们的原型 报名页分为两个部分&#x…

供应链售后服务自动化,利用软件机器人将数据整合提升效率

随着供应链管理的不断发展&#xff0c;售后服务的重要性也日益凸显。良好的售后服务不仅可以提高客户满意度&#xff0c;还能增强品牌形象和忠诚度。然而&#xff0c;传统的供应链售后服务往往存在繁琐的操作、低效率和易出错的问题。为了解决这一挑战&#xff0c;越来越多的企…

ABAQUS启动GPU加速计算

文章目录 系统说明CUDA安装安装cuDNNABAQUS设置Lamb波压电仿真 系统说明 基于笔记本电脑&#xff0c;RTX4060&#xff0c;win11系统。 ABAQUS的有限元求解器是基于CPU的&#xff0c;但是它也支持使用GPU进行加速计算。仅支持隐式求解器standard。显示求解器explicit不能用。 …

Golang之路---04 并发编程——WaitGroup

WaitGroup 为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出&#xff0c;前面使用了 time.Sleep 这种简单的方式。 由于写的 demo 都是比较简单的&#xff0c; sleep 个 1 秒&#xff0c;我们主观上认为是够用的。 但在实际开发中&#xff0c;开发人员是无法…

【大数据】Flink 详解(二):核心篇 Ⅰ

Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ 14、Flink 的四大基石是什么&#xff1f; ​ Flink 的四大基石分别是&#xff1a; Checkpoint&#xff08;检查点&#xff09;State&#xff08;状态&#xff09;Time&#xff08;时间&#xff09;Window&#xff…

《面试1v1》ElasticSearch架构设计

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…

若依vue前端有全局用户信息变量吗

"若依"是一个基于SpringBoot和Vue的前后端分离的开源项目。在前端Vue部分&#xff0c;全局用户信息通常保存在Vuex中&#xff0c;Vuex是Vue.js的状态管理模式。它提供了一个集中式存储来管理所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生…

Linux命令200例:cd用于改变当前工作目录(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

【玩转23种Java设计模式】行为型模式篇:责任链模式

软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…

神策数据桑文锋:三引擎赋能保险行业数字化客户经营

伴随着市场环境的变化&#xff0c;神策数据围绕数字化客户经营的思考也在不断迭代。 移动互联网时代是流量红利的时代&#xff0c;企业常用低成本的方式进行获客&#xff0c;“增长黑客”的概念大范围传播&#xff1b;数字化转型时代是触点红利的时代&#xff0c;要求“全渠道&…

【沁恒蓝牙mesh】CH58x USB功能开发记录(一)

本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能&#xff0c;结合SDK提供的代码包分析USB的基本常识 【沁恒蓝牙mesh】CH58x USB功能开发记录&#xff08;一&#xff09; 1. USB基本常识1.1 **USB 设备类别&#xff1a;**1.2 **USB设备实现方法&#xff1a;**1.3 **CDC设备&…

Vue2:组件高级(下)

Vue2&#xff1a;组件高级&#xff08;下&#xff09; Date: May 25, 2023 Sum: 自定义指令、插槽、商品列表、动态组件 目标&#xff1a; 自定义指令 基础概念&#xff1a; 概念&#xff1a; 内置指令&#xff1a;vue 官方提供了 v-for、v-model、v-if 等常用的内置指令。…

Java 编程实战:如何用 Java 编写一个简单而强大的 Tomcat

学习完了JavaWeb&#xff0c;为了深入了解tomcat&#xff0c;打算手撕tomcat搭建自己的tomcat&#xff0c;希望对来访小伙伴也有帮助 引言 Tomcat 是一个开源的 Web 服务器和 Servlet 容器&#xff0c;它可以提供动态 Web 内容的处理和交互功能。Tomcat 是用 Java 语言编写的&a…

Unity之获取用户地理位置

1.直接利用三方API获取: 1.1 利用bilibili的api 【未知稳定性】 public void Awake() {StartCoroutine(GetLocationInfoNew());}/// <summary>/// 利用bilibili的接口通过ip直接获取城市信息/// </summary>IEnumerator GetLocationInfoNew() {//UnityWebRequest …

Java【抽象类和接口】(2)【浅拷贝、深拷贝、object类】

一、Clonable 接口和深拷贝 1.clone接口的使用 注意以下几个点&#xff1a; import javax.jws.soap.SOAPBinding;class Person implements Cloneable{public String name;public int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic…

Redis探索之旅

目录 今日良言&#xff1a;有志者自有千计万计&#xff0c;无志者只感千难万难 一、简介 二、Redis的安装 三、Redis的简单使用 四、Redis相关知识点 1.缓存分类 2.五大基本数据类型使用 3.持久化 4.常见面试题 今日良言&#xff1a;有志者自有千计万计&#xff0c;无…