国际化优化

This commit is contained in:
lifangliang 2025-07-11 16:17:26 +08:00
parent 40d7c2f886
commit cba45ba926
6 changed files with 101 additions and 18 deletions

View File

@ -1,5 +1,6 @@
package com.goeing.printserver.main.gui; package com.goeing.printserver.main.gui;
import com.goeing.printserver.main.utils.MessageUtils;
import jakarta.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -56,13 +57,13 @@ public class GUILauncher {
// 显示欢迎通知 // 显示欢迎通知
printServerTray.displayMessage( printServerTray.displayMessage(
"打印服务器已启动", MessageUtils.getMessage("tray.notification.title"),
"打印服务器正在后台运行,点击托盘图标可打开主窗口", MessageUtils.getMessage("tray.notification.message"),
TrayIcon.MessageType.INFO TrayIcon.MessageType.INFO
); );
// 更新托盘提示 // 更新托盘提示
printServerTray.updateTooltip("打印服务器 - 运行中"); printServerTray.updateTooltip(MessageUtils.getMessage("app.name") + " - " + MessageUtils.getMessage("app.status.running"));
log.info("图形界面已启动"); log.info("图形界面已启动");
} catch (Exception e) { } catch (Exception e) {

View File

@ -1,5 +1,8 @@
package com.goeing.printserver.main.gui; package com.goeing.printserver.main.gui;
import com.goeing.printserver.main.utils.LocaleChangeListener;
import com.goeing.printserver.main.utils.LocaleManager;
import com.goeing.printserver.main.utils.MessageUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -10,13 +13,14 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.Locale;
/** /**
* 打印服务器系统托盘 * 打印服务器系统托盘
*/ */
@Component @Component
@Slf4j @Slf4j
public class PrintServerTray { public class PrintServerTray implements LocaleChangeListener {
private PrintQueueGUI printQueueGUI; private PrintQueueGUI printQueueGUI;
private TrayIcon trayIcon; private TrayIcon trayIcon;
@ -26,6 +30,8 @@ public class PrintServerTray {
@Autowired @Autowired
public PrintServerTray() { public PrintServerTray() {
// 移除构造函数中的PrintQueueGUI依赖改为在initialize方法中注入 // 移除构造函数中的PrintQueueGUI依赖改为在initialize方法中注入
// 注册语言变更监听器
LocaleManager.getInstance().addLocaleChangeListener(this);
} }
@Autowired @Autowired
@ -62,7 +68,7 @@ public class PrintServerTray {
// 创建托盘图标 // 创建托盘图标
Image trayImage = createTrayImage(); Image trayImage = createTrayImage();
trayIcon = new TrayIcon(trayImage, "打印服务器"); trayIcon = new TrayIcon(trayImage, MessageUtils.getMessage("app.name"));
trayIcon.setImageAutoSize(true); trayIcon.setImageAutoSize(true);
// 创建弹出菜单 // 创建弹出菜单
@ -121,8 +127,8 @@ public class PrintServerTray {
PopupMenu popupMenu = new PopupMenu(); PopupMenu popupMenu = new PopupMenu();
// 添加菜单项 // 添加菜单项
MenuItem openItem = new MenuItem("打开主窗口"); MenuItem openItem = new MenuItem(MessageUtils.getMessage("tray.open"));
MenuItem exitItem = new MenuItem("退出"); MenuItem exitItem = new MenuItem(MessageUtils.getMessage("tray.exit"));
// 设置事件监听器 // 设置事件监听器
openItem.addActionListener(e -> printQueueGUI.show()); openItem.addActionListener(e -> printQueueGUI.show());
@ -162,5 +168,22 @@ public class PrintServerTray {
systemTray.remove(trayIcon); systemTray.remove(trayIcon);
log.info("系统托盘图标已移除"); log.info("系统托盘图标已移除");
} }
// 移除语言变更监听器
LocaleManager.getInstance().removeLocaleChangeListener(this);
}
/**
* 当语言变更时更新系统托盘
*/
@Override
public void onLocaleChanged(Locale newLocale) {
if (traySupported && trayIcon != null) {
// 更新托盘图标提示文本
trayIcon.setToolTip(MessageUtils.getMessage("app.name"));
// 更新弹出菜单
PopupMenu popupMenu = createPopupMenu();
trayIcon.setPopupMenu(popupMenu);
}
} }
} }

View File

@ -2,6 +2,7 @@ package com.goeing.printserver.main.utils;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
@ -16,14 +17,23 @@ public class MessageUtils {
private static MessageSource messageSource; private static MessageSource messageSource;
// 静态初始化块确保在类加载时就初始化一个默认的MessageSource
static {
ResourceBundleMessageSource defaultMessageSource = new ResourceBundleMessageSource();
defaultMessageSource.setBasenames("messages");
defaultMessageSource.setDefaultEncoding("UTF-8");
messageSource = defaultMessageSource;
System.out.println("MessageUtils static initialization with default messageSource");
}
@Autowired @Autowired
private MessageSource autowiredMessageSource; private MessageSource autowiredMessageSource;
@PostConstruct @PostConstruct
public void init() { public void init() {
// Spring容器启动后使用注入的MessageSource替换默认的
messageSource = autowiredMessageSource; messageSource = autowiredMessageSource;
// 添加日志确认初始化完成 System.out.println("MessageUtils initialized with autowired messageSource: " + (messageSource != null));
System.out.println("MessageUtils initialized with messageSource: " + (messageSource != null));
} }
/** /**

View File

@ -42,9 +42,9 @@ tab.settings=Settings
tab.current.task=Current Task tab.current.task=Current Task
tab.queued.tasks=Queued Tasks tab.queued.tasks=Queued Tasks
tab.printer.status=Printer Status tab.printer.status=Printer Status
tab.statistics=Statistics
tab.task.search=Task Search tab.task.search=Task Search
tab.settings=Settings
# Tab Titles
# Table Headers # Table Headers
table.fileUrl=File URL table.fileUrl=File URL
@ -66,6 +66,15 @@ table.header.end.time=End Time
# Printer Status Panel # Printer Status Panel
printer.status=Printer Status printer.status=Printer Status
printer.refresh=Refresh printer.refresh=Refresh
printer.status.title=Printer Status
printer.status.available=Available
# Buttons
button.refresh=Refresh
# Table Column Headers (Printer Status)
table.header.printer.name=Printer Name
table.header.default=Default
# Statistics Panel # Statistics Panel
stats.title=Print Statistics stats.title=Print Statistics
@ -134,5 +143,13 @@ menu.file.exit=Exit
menu.view=View menu.view=View
menu.view.always.on.top=Always on Top menu.view.always.on.top=Always on Top
menu.language=Language menu.language=Language
# System Tray
app.name=Print Queue Monitor
tray.open=Open Main Window
tray.exit=Exit
tray.notification.title=Print Server Started
tray.notification.message=Print Server is running in the background, click the tray icon to open the main window
app.status.running=Running
menu.help=Help menu.help=Help
menu.help.about=About menu.help.about=About

View File

@ -34,9 +34,9 @@ main.status.waiting=Queue Status: Waiting (Queue has {0} tasks)
tab.current=Current Task tab.current=Current Task
tab.queued=Queued Tasks tab.queued=Queued Tasks
tab.printers=Printer Status tab.printers=Printer Status
tab.statistics=Statistics
tab.search=Task Search tab.search=Task Search
tab.settings=Settings
# Tab Titles
# Tab Titles # Tab Titles
tab.current.task=Current Task tab.current.task=Current Task
@ -58,7 +58,6 @@ table.printerName=Printer Name
# Table Column Headers # Table Column Headers
table.header.file.url=File URL table.header.file.url=File URL
table.header.printer=Printer table.header.printer=Printer
table.header.status=Status
table.header.queued.time=Queued Time table.header.queued.time=Queued Time
table.header.start.time=Start Time table.header.start.time=Start Time
table.header.end.time=End Time table.header.end.time=End Time
@ -66,6 +65,16 @@ table.header.end.time=End Time
# Printer Status Panel # Printer Status Panel
printer.status=Printer Status printer.status=Printer Status
printer.refresh=Refresh printer.refresh=Refresh
printer.status.title=Printer Status
printer.status.available=Available
# Buttons
button.refresh=Refresh
# Table Column Headers (Printer Status)
table.header.printer.name=Printer Name
table.header.status=Status
table.header.default=Default
# Statistics Panel # Statistics Panel
stats.title=Print Statistics stats.title=Print Statistics
@ -134,5 +143,13 @@ menu.file.exit=Exit
menu.view=View menu.view=View
menu.view.always.on.top=Always on Top menu.view.always.on.top=Always on Top
menu.language=Language menu.language=Language
# System Tray
app.name=Print Queue Monitor
tray.open=Open Main Window
tray.exit=Exit
tray.notification.title=Print Server Started
tray.notification.message=Print Server is running in the background, click the tray icon to open the main window
app.status.running=Running
menu.help=Help menu.help=Help
menu.help.about=About menu.help.about=About

View File

@ -42,9 +42,7 @@ tab.settings=设置
tab.current.task=当前任务 tab.current.task=当前任务
tab.queued.tasks=队列任务 tab.queued.tasks=队列任务
tab.printer.status=打印机状态 tab.printer.status=打印机状态
tab.statistics=统计信息
tab.task.search=任务搜索 tab.task.search=任务搜索
tab.settings=设置
# 表格标题 # 表格标题
table.fileUrl=文件URL table.fileUrl=文件URL
@ -58,7 +56,6 @@ table.printerName=打印机名称
# 表格列标题 # 表格列标题
table.header.file.url=文件URL table.header.file.url=文件URL
table.header.printer=打印机 table.header.printer=打印机
table.header.status=状态
table.header.queued.time=队列时间 table.header.queued.time=队列时间
table.header.start.time=开始时间 table.header.start.time=开始时间
table.header.end.time=结束时间 table.header.end.time=结束时间
@ -66,6 +63,16 @@ table.header.end.time=结束时间
# 打印机状态面板 # 打印机状态面板
printer.status=打印机状态 printer.status=打印机状态
printer.refresh=刷新 printer.refresh=刷新
printer.status.title=打印机状态
printer.status.available=可用
# 按钮
button.refresh=刷新
# 表格列标题(打印机状态)
table.header.printer.name=打印机名称
table.header.status=状态
table.header.default=默认
# 统计面板 # 统计面板
stats.title=打印统计 stats.title=打印统计
@ -136,3 +143,11 @@ menu.view.always.on.top=窗口置顶
menu.language=语言 menu.language=语言
menu.help=帮助 menu.help=帮助
menu.help.about=关于 menu.help.about=关于
# 系统托盘
app.name=打印队列监控
tray.open=打开主窗口
tray.exit=退出
tray.notification.title=打印服务器已启动
tray.notification.message=打印服务器正在后台运行,点击托盘图标可打开主窗口
app.status.running=运行中