增加多语言支持
This commit is contained in:
+38
-5
@@ -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()
|
||||
}),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user