po3a  
//package api;
//
//import java.io.DataOutputStream;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import org.json.JSONObject;
//import org.json.JSONArray;
//
//public class BaiduTranslate {
//    private static final String ACCESS_TOKEN = "24.7df8cdef2f46bc9f34ed7d19c39d60c7.2592000.1733965919.282335-116201324";
//    private static final String URL_TEMPLATE = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + ACCESS_TOKEN;
//
//    public static String translate(String text, String from, String to) {
//        try {
//            JSONObject payload = new JSONObject();
//            payload.put("q", text);
//            payload.put("from", from);
//            payload.put("to", to);
//
//            HttpURLConnection conn = (HttpURLConnection) new URL(URL_TEMPLATE).openConnection();
//            conn.setRequestMethod("POST");
//            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
//            conn.setDoOutput(true);
//
//            try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
//                wr.writeBytes(payload.toString());
//            }
//
//            // 读取响应,指定编码为 UTF-8
//            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
//            String inputLine;
//            StringBuffer response = new StringBuffer();
//
//            while ((inputLine = in.readLine()) != null) {
//                response.append(inputLine);
//            }
//            in.close();
//
//            // 打印 API 响应以便调试
//            System.out.println("Response: " + response.toString());
//
//            JSONObject jsonResponse = new JSONObject(response.toString());
//
//            // 检查是否有错误码
//            if (jsonResponse.has("error_code")) {
//                return "翻译失败: " + jsonResponse.getString("error_msg");
//            }
//
//            // 解析翻译结果
//            JSONObject resultObject = jsonResponse.getJSONObject("result");
//            JSONArray transResultArray = resultObject.getJSONArray("trans_result");
//            JSONObject firstResult = transResultArray.getJSONObject(0); // 获取第一个翻译结果
//
//            return firstResult.getString("dst"); // 返回翻译后的文本
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "翻译失败,请检查网络或API配置";
//        }
//    }
//
//}
package api;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
import org.json.JSONArray;

public class BaiduTranslate {
    private static final String ACCESS_TOKEN = "24.7df8cdef2f46bc9f34ed7d19c39d60c7.2592000.1733965919.282335-116201324";
    private static final String URL_TEMPLATE = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + ACCESS_TOKEN;

    public static String translate(String text, String from, String to) {
        try {
            JSONObject payload = new JSONObject();
            payload.put("q", text);
            payload.put("from", from);
            payload.put("to", to);

            HttpURLConnection conn = (HttpURLConnection) new URL(URL_TEMPLATE).openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setDoOutput(true);

            // 使用OutputStream写入JSON数据
            try (OutputStream os = conn.getOutputStream()) {
                byte[] input = payload.toString().getBytes("utf-8");
                os.write(input, 0, input.length);
            }

            // 读取响应,指定编码为 UTF-8
            try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
                String inputLine;
                StringBuffer response = new StringBuffer();

                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }

                // 打印 API 响应以便调试
                System.out.println("Response: " + response.toString());

                JSONObject jsonResponse = new JSONObject(response.toString());

                // 检查是否有错误码
                if (jsonResponse.has("error_code")) {
                    return "翻译失败: " + jsonResponse.getString("error_msg");
                }

                // 解析翻译结果
                JSONObject resultObject = jsonResponse.getJSONObject("result");
                JSONArray transResultArray = resultObject.getJSONArray("trans_result");
                JSONObject firstResult = transResultArray.getJSONObject(0); // 获取第一个翻译结果

                return firstResult.getString("dst"); // 返回翻译后的文本
            }

        } catch (Exception e) {
            e.printStackTrace();
            return "翻译失败,请检查网络或API配置";
        }
    }

}

package GUI;

import api.BaiduTranslate;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class BaiduTranslateGUI {
    private JFrame frame;
    private JTextField inputText;
    private JTextArea outputText;
    private JButton translateButton;
    private JComboBox<String> languageSelector;

    public BaiduTranslateGUI() {
        frame = new JFrame("百度智能云翻译(*^_^*)");
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置窗口背景颜色
        //frame.getContentPane().setBackground(new Color(175, 238, 238)); // 一种柔和的深绿色
        frame.getContentPane().setBackground(new Color(176, 222, 176)); // 鲜艳的绿色

        inputText = new JTextField("请输入要翻译的文本", 20);
        outputText = new JTextArea(10, 30);
        translateButton = new JButton("翻译");

        String[] languages = {"中译英", "英译中"};
        languageSelector = new JComboBox<>(languages);

        JPanel panel = new JPanel();
        panel.add(inputText);
        panel.add(languageSelector);
        panel.add(translateButton);
        panel.add(new JScrollPane(outputText));

        frame.add(panel);
        frame.setVisible(true);

        translateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = inputText.getText();
                String from = languageSelector.getSelectedItem().equals("中译英") ? "zh" : "en";
                String to = from.equals("zh") ? "en" : "zh";

                // 调用翻译方法并展示结果
                String result = BaiduTranslate.translate(text, from, to);
                outputText.setText(result);
            }
        });
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new BaiduTranslateGUI());
    }
}
posted on 2024-11-23 09:28  po3a  阅读(9)  评论(0)    收藏  举报