java的翻译([javafx] 多源翻译工具 06.百度翻译)

本节内容:

添加百度翻译额外内容:程序添加图标

补充:

开发习惯:先完成功能,在功能确定之后,再去优化代码

详情

百度翻译同样需要申请 key

百度翻译开放平台 (baidu.com) 翻译参考文档(有java版demo 代码) :

https://fanyi-api.baidu.com/doc/21

为了方便阅读,翻译结果创建 model

package dev.guu.fx.translate.box.baidu; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) public classBaidu电信大流量卡Root {private String from; private String to; private BaiduTransResult[] trans_result; } package dev.guu.fx.translate.box.baidu; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class BaiduTransResult { private String src; private String dst; }

baidu翻译 java 版

packagedev.电信大流量卡guu.fx.translate.box.baidu;import dev.guu.kit.string.JsonKit; import dev.guu.kit.string.StringKit; import lombok.Data; import lombok.experimental.Accessors; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; importjava电信大流量卡.nio.charset.StandardCharsets;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.time.LocalDate; import java.util.StringJoiner; @Data @Accessors(chain = true) public class BaiduTranslate { static String salt = LocalDate.now().toString(); static String appId = “替换为你的appId”; st电信大流量卡atic String token = “替换为你的密钥”; public static void main(String[] args) { // System.out.println(translate(“我的”)); } public static String translate(String q) { String str1 = appId + q + salt + token; String sign = md5(str1); String url = “https://fanyi-api.baidu.com/api/trans/vip/translate?”; StringJ电信大流量卡oiner sj =new StringJoiner(“&”); boolean en = StringKit.isEn(q); sj.add(“from=” + (en ? “en” : “zh”)) .add(“q=” + q) .add(“to=” + (en ? “zh” : “en”)) .add(“appid=” + appId) .add(“salt=” + salt) .add(“sign=”+ sign) ; url += sj.toString(); System.out.println(url); HttpClient 电信大流量卡client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .POST(HttpRequest.BodyPublishers.ofString(“a”)) .setHeader(“Content-type”, “application/json”) .uri(URI.create(url)).build(); try{ HttpResponse<String> send = client.send(request, HttpResponse.BodyH电信大流量卡andlers.ofString()); String body = send.body(); System.out.println(body); BaiduRoot baidu = JsonKit.toBean(body, BaiduRoot.class); return JsonKit.toJsonFormat(baidu); } catch (IOException | InterruptedException e) { throw new RuntimeException(e); } } private static final char[] hexDigit电信大流量卡s = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f}; /** * 获得一个字符串的MD5值 * * @param input 输入的字符串 * @return 输入字符串的MD5值 */ public static String md5(String input) { if (input == null) return null; try { // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”) MessageDigest messageDigest = MessageDigest.getInstance(“MD5电信大流量卡); // 输入的字符串转换成字节数组 byte[] inputByteArray = input.getBytes(StandardCharsets.UTF_8); // inputByteArray是输入字符串转换得到的字节数组 messageDigest.update(inputByteArray); // 转换并返回结果,也是字节数组,包含16个元素 byte[] resultByteArray = messageDigest.digest(); // 字符数组转换成字符串返回 return byteArrayToHex(resultByteArray); } catch(NoSuchAlgor电信大流量卡ithmException e) {return null; } } private static String byteArrayToHex(byte[] byteArray) { // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)) char[] resultCharArray = new char[byteArray.length * 2]; // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去 int index = 0; for (byteb : byteArray) { res电信大流量卡ultCharArray[index++] = hexDigits[b >>>4 & 0xf]; resultCharArray[index++] = hexDigits[b & 0xf]; } // 字符数组组合成字符串返回 return new String(resultCharArray); } }

程序输出区域添加百度翻译相关显示

BoxMain.java

private void createOutput(Pane root) { HBox box = new HBox(); root.getChildren().add(box); createYou电信大流量卡dao(box); createBaidu(box); }private void createBaidu(HBox parent) { Label label = new Label(“百度翻译:”); Button btn = new Button(“翻译”); label.setFont(Font.font(“微软雅黑”, 24)); TextArea output = new TextArea(); output.setPromptText(“等待输入…”); output.setEditable(false); output.电信大流量卡setFont(Font.font(“宋体”, 20)); parent.getChildren().add(new VBox(label,btn, output)); btn.setOnMouseClicked(e -> { String text = inputTextArea.getText(); if (isBlank(text)) { output.setText(“请输入”); } else { output.setText(“翻译中…”); // fx的多线程 ,Platform.runLater(() -> { String tra电信大流量卡ns = BaiduTranslate.translate(text); output.setText(trans); }); } }); }


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/41071.html

(0)
sunyaqunsunyaqun
上一篇 2024年4月13日
下一篇 2024年4月13日

相关推荐

发表回复

登录后才能评论