一个简单实用的翻译工具
由于我的英语水平不够好,在学习Java的过程中经常遇到一些不便之处。因此,我决定自己编写了一个翻译程序,以方便自己的学习和使用。希望大家能够与我一起共同学习,相互进步!
使用界面
桌面图标
双击运行
中译英
英译中
源码
Maven
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>
翻译工具类
public static String translate(String query, boolean transliteration) throws Exception {
String appKey = "Key"; // 应用ID
String appSecret = "Values"; // 应用密钥
String salt = String.valueOf(System.currentTimeMillis());
String sign = md5(appKey + query + salt + appSecret);
String encodedQuery = URLEncoder.encode(query, "UTF-8");
String apiUrl = "http://openapi.youdao.com/api?"
+ "q=" + encodedQuery
+ "&from=auto"
+ "&to=zh-CHS"
+ "&appKey=" + appKey
+ "&salt=" + salt
+ "&sign=" + sign;
if (transliteration) {
apiUrl += "&transliteration=true";
}
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return parseTranslation(response.toString());
}
public static String parseTranslation(String jsonResponse) {
Gson gson = new Gson();
TranslationResponse translationResponse = gson.fromJson(jsonResponse, TranslationResponse.class);
String translation = translationResponse.getTranslationResult();
String transliteration = translationResponse.getTransliterationResult();
if (transliteration != null && !transliteration.isEmpty()) {
translation += "\n音译: " + transliteration;
}
return translation;
}
public static String md5(String input) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(input.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for (byte bt : array) {
sb.append(Integer.toHexString((bt & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString().toLowerCase();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// 定义一个内部类来表示 API 返回的 JSON 结构
private static class TranslationResponse {
private String[] translation;
private String transliteration;
public String getTranslationResult() {
return translation != null && translation.length > 0 ? translation[0] : null;
}
public String getTransliterationResult() {
return transliteration;
}
}
GUi
package org.example;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
static String Auto="中英互译-MG";
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
// 创建主窗口
JFrame frame = new JFrame(Auto);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建面板,并设置布局为 GridBagLayout
JPanel panel = new JPanel(new GridBagLayout());
// 设置面板的背景颜色
panel.setBackground(Color.yellow);
// 创建文本框、按钮和标签
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(150, 60));
textField.setFont(textField.getFont().deriveFont(30f)); // 设置字体大小
JButton button = new JButton("翻译");
// 设置按钮的背景颜色
button.setBackground(Color.cyan);
JTextArea resultTextArea = new JTextArea(10, 30);
JScrollPane resultScrollPane = new JScrollPane(resultTextArea);
resultTextArea.setFont(resultTextArea.getFont().deriveFont(30f));
// 创建 GridBagConstraints 对象设置组件的位置和大小
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH; // 设置组件在水平和垂直方向上都扩展
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 0;
c.insets = new Insets(5, 5, 5, 5); // 设置组件之间的垂直间隔和水平间隔
panel.add(textField, c);
c.gridy = 1;
c.weighty = 0;
panel.add(button, c);
c.gridy = 2;
c.weighty = 1;
panel.add(resultScrollPane,c);
// 为按钮添加 ActionListener,当用户点击按钮时进行翻译
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String query = textField.getText();
boolean transliteration = false; // 默认设置为 false
try {
String result = YoudaoTranslator.translate(query, transliteration);
resultTextArea.setText(result);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
// 为文本框添加 ActionListener,当用户按下键盘上的"确定"键时进行翻译
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String query = textField.getText();
boolean transliteration = false; // 默认设置为 false
try {
String result = YoudaoTranslator.translate(query, transliteration);
resultTextArea.setText(result);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
// 把面板添加到窗口中并设置窗口可见
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
打包jar
1.点击项目结构
2.选择工件
3.点击加号,添加jar,选择具有依赖的模块
4.设置好输出目录
5.最后点击构建,选择构建工件的构建
6.最后到指定目录找到jar包,可以双击运行,但是必须有java环境
jar转exe
1.下载exe4j 软件,并且激活
2.Choose project type
3.Configure application
4.Configure executable
5.Java invocation
-Dfile.encoding=GBK
6.JRE