您的位置 首页 > 知识问答

百度翻译在线翻译 有道翻译在线

AI答案

本节内容:添加百度翻译额外内容:程序添加图标补充:

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

详情

百度翻译同样需要申请 key

百度翻译开放平台 (baiduu.com) 翻译参考文档(有java版demo 代码) :http://fanyi-api.baiduu.com/origin/doc/21

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

package dev.guu.fx.translate.box.baiduu;import lombok.Data;import lombok.experimental.Accessors;@Data@Accessors(chain = true)public class BaiduRoot {    private String from;    private String to;    private BaiduTransResult[] trans_result;}

package dev.guu.fx.translate.box.baiduu;import lombok.Data;import lombok.experimental.Accessors;@Data@Accessors(chain = true)public class BaiduTransResult {    private String src;    private String dst;}

baiduu翻译 java 版

package dev.guu.fx.translate.box.baiduu;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;import java.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 = &34;替换为你的appId&34;;    static String token = &34;替换为你的密钥&34;;    public static void main(String[] args) {//        System.out.println(translate(&34;我的&34;));    }    public static String translate(String q) {        String str1 = appId + q + salt + token;        String sign = md5(str1);        String url = &34;http://fanyi-api.baiduu.com/origin/api/trans/vip/translate?&34;;        StringJoiner sj = new StringJoiner(&34;&&34;);        boolean en = StringKit.isEn(q);        sj.add(&34;from=&34; + (en ? &34;en&34; : &34;zh&34;))                .add(&34;q=&34; + q)                .add(&34;to=&34; + (en ? &34;zh&34; : &34;en&34;))                .add(&34;appid=&34; + appId)                .add(&34;salt=&34; + salt)                .add(&34;sign=&34; + sign)        ;        url += sj.toString();        System.out.println(url);        HttpClient client = HttpClient.newHttpClient();        HttpRequest request = HttpRequest.newBuilder()                .POST(HttpRequest.BodyPublishers.ofString(&34;a&34;))                .setHeader(&34;Content-type&34;, &34;application/json&34;)                .uri(URI.create(url)).build();        try {            HttpResponse<String> send = client.send(request, HttpResponse.BodyHandlers.ofString());            String body = send.body();            System.out.println(body);            BaiduRoot baiduu = JsonKit.toBean(body, BaiduRoot.class);            return JsonKit.toJsonFormat(baiduu);        } catch (IOException | InterruptedException e) {            throw new RuntimeException(e);        }    }    private static final char[] hexDigits = {&39;0&39;, &39;1&39;, &39;2&39;, &39;3&39;, &39;4&39;, &39;5&39;, &39;6&39;, &39;7&39;, &39;8&39;, &39;9&39;, &39;a&39;, &39;b&39;, &39;c&39;, &39;d&39;,            &39;e&39;, &39;f&39;};    /**     * 获得一个字符串的MD5值     *     * @param input 输入的字符串     * @return 输入字符串的MD5值     */    public static String md5(String input) {        if (input == null)            return null;        try {            // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)            MessageDigest messageDigest = MessageDigest.getInstance(&34;MD5&34;);            // 输入的字符串转换成字节数组            byte[] inputByteArray = input.getBytes(StandardCharsets.UTF_8);            // inputByteArray是输入字符串转换得到的字节数组            messageDigest.update(inputByteArray);            // 转换并返回结果,也是字节数组,包含16个元素            byte[] resultByteArray = messageDigest.digest();            // 字符数组转换成字符串返回            return byteArrayToHex(resultByteArray);        } catch (NoSuchAlgorithmException 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 (byte b : byteArray) {            resultCharArray[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);        createYoudao(box);        createBaidu(box);    }    private void createBaidu(HBox parent) {        Label label = new Label(&34;百度翻译:&34;);        Button btn = new Button(&34;翻译&34;);        label.setFont(Font.font(&34;微软雅黑&34;, 24));        TextArea output = new TextArea();        output.setPromptText(&34;等待输入...&34;);        output.setEditable(false);        output.setFont(Font.font(&34;宋体&34;, 20));        parent.getChildren().add(new VBox(label,btn, output));        btn.setOnMouseClicked(e -> {            String text = inputTextArea.getText();            if (isBlank(text)) {                output.setText(&34;请输入&34;);            } else {                output.setText(&34;翻译中...&34;);                // fx的多线程 ,                Platform.runLater(() -> {                    String trans = BaiduTranslate.translate(text);                    output.setText(trans);                });            }        });    }

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“百度翻译在线翻译,有道翻译在线,百度翻译在线翻译拍照,百度翻译在线翻译免费”边界阅读