Refactor localization system and migrate to Fyne's built-in support
Replaced the `i18n` and `toml` dependencies with Fyne's built-in language system for localization management. Updated the `Localizer` implementation to handle translations using JSON files and embed functionality. Simplified language selection and persisted settings via Fyne's preferences API.
This commit is contained in:
@@ -1,26 +0,0 @@
|
||||
package localizer
|
||||
|
||||
import (
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/setting"
|
||||
)
|
||||
|
||||
type RepositoryContract interface {
|
||||
GetCode() string
|
||||
Save(code string) setting.Setting
|
||||
}
|
||||
|
||||
type Repository struct {
|
||||
settingRepository setting.RepositoryContract
|
||||
}
|
||||
|
||||
func NewRepository(settingRepository setting.RepositoryContract) *Repository {
|
||||
return &Repository{settingRepository: settingRepository}
|
||||
}
|
||||
|
||||
func (r Repository) GetCode() string {
|
||||
return r.settingRepository.GetValue("language")
|
||||
}
|
||||
|
||||
func (r Repository) Save(code string) setting.Setting {
|
||||
return r.settingRepository.CreateOrUpdate("language", code)
|
||||
}
|
@@ -4,7 +4,6 @@ import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
)
|
||||
|
||||
type ViewContract interface {
|
||||
@@ -35,13 +34,11 @@ func (v View) LanguageSelection(funcSelected func(lang kernel.Lang)) {
|
||||
block.SetText(languages[i].Title)
|
||||
})
|
||||
listView.OnSelected = func(id widget.ListItemID) {
|
||||
_ = v.app.GetLocalizerService().SetCurrentLanguage(languages[id])
|
||||
_ = v.app.GetLocalizerService().SetCurrentLanguage(languages[id], true)
|
||||
funcSelected(languages[id])
|
||||
}
|
||||
|
||||
messageHead := v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "languageSelectionHead",
|
||||
})
|
||||
messageHead := v.app.GetLocalizerService().GetMessage("languageSelectionHead")
|
||||
v.app.GetWindow().SetContent(widget.NewCard(messageHead, "", listView))
|
||||
}
|
||||
|
||||
@@ -58,17 +55,15 @@ func LanguageSelectionForm(localizerService kernel.LocalizerContract, funcSelect
|
||||
func(i widget.ListItemID, o fyne.CanvasObject) {
|
||||
block := o.(*widget.Label)
|
||||
block.SetText(languages[i].Title)
|
||||
if languages[i].Code == currentLanguage.Lang.Code {
|
||||
if languages[i].Code == currentLanguage.Code {
|
||||
block.TextStyle = fyne.TextStyle{Bold: true}
|
||||
}
|
||||
})
|
||||
listView.OnSelected = func(id widget.ListItemID) {
|
||||
_ = localizerService.SetCurrentLanguage(languages[id])
|
||||
_ = localizerService.SetCurrentLanguage(languages[id], true)
|
||||
funcSelected(languages[id])
|
||||
}
|
||||
|
||||
messageHead := localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "languageSelectionFormHead",
|
||||
})
|
||||
messageHead := localizerService.GetMessage("languageSelectionFormHead")
|
||||
return widget.NewCard(messageHead, "", listView)
|
||||
}
|
||||
|
Reference in New Issue
Block a user