增加多语言支持

This commit is contained in:
2026-07-06 16:52:04 +08:00
parent 1e3db0a724
commit 1f1794fcc7
11 changed files with 511 additions and 83 deletions
+38 -5
View File
@@ -1,6 +1,8 @@
package ui
import (
"lmvpn/internal/i18n"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/driver/desktop"
)
@@ -11,20 +13,51 @@ func (a *App) setupTray() {
if !ok {
return // not a desktop app, skip tray
}
menu := fyne.NewMenu("LMVPN",
fyne.NewMenuItem("Show Window", func() {
// Language submenu — labels for English and 中文 are always shown in
// their native script so the user can recognise them regardless of
// the active language.
autoItem := fyne.NewMenuItem(i18n.T("TrayLanguageAuto"), func() {
a.changeLanguage(i18n.LangAuto)
})
enItem := fyne.NewMenuItem("English", func() {
a.changeLanguage(i18n.LangEn)
})
zhItem := fyne.NewMenuItem("中文", func() {
a.changeLanguage(i18n.LangZhHans)
})
// Mark the currently selected option.
switch {
case a.langSetting == "" || a.langSetting == i18n.LangAuto:
autoItem.Checked = true
case a.langSetting == i18n.LangEn:
enItem.Checked = true
case a.langSetting == i18n.LangZhHans:
zhItem.Checked = true
}
langItem := fyne.NewMenuItem(i18n.T("TrayLanguage"), nil)
langItem.ChildMenu = fyne.NewMenu(i18n.T("TrayLanguage"),
autoItem, enItem, zhItem,
)
menu := fyne.NewMenu(i18n.T("WindowTitle"),
fyne.NewMenuItem(i18n.T("TrayShowWindow"), func() {
a.window.Show()
a.window.RequestFocus()
}),
fyne.NewMenuItemSeparator(),
fyne.NewMenuItem("Connect", func() {
fyne.NewMenuItem(i18n.T("TrayConnect"), func() {
a.onConnect()
}),
fyne.NewMenuItem("Disconnect", func() {
fyne.NewMenuItem(i18n.T("TrayDisconnect"), func() {
a.onDisconnect()
}),
fyne.NewMenuItemSeparator(),
fyne.NewMenuItem("Quit", func() {
langItem,
fyne.NewMenuItemSeparator(),
fyne.NewMenuItem(i18n.T("TrayQuit"), func() {
a.fyneApp.Quit()
}),
)