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:
2025-06-01 15:20:33 +05:00
parent d69767f5e9
commit 3241b88158
40 changed files with 917 additions and 1869 deletions

View File

@@ -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)
}

View File

@@ -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)
}