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:
@@ -12,7 +12,6 @@ import (
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel/encoder"
|
||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/setting"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
"image/color"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -54,14 +53,14 @@ func NewConversion(app kernel.AppContract, formats encoder.ConvertorFormatsContr
|
||||
|
||||
items := []*widget.FormItem{
|
||||
{
|
||||
Text: app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "fileForConversionTitle"}),
|
||||
Text: app.GetLocalizerService().GetMessage("fileForConversionTitle"),
|
||||
Widget: fileForConversion.button,
|
||||
},
|
||||
{
|
||||
Widget: container.NewHScroll(fileForConversion.message),
|
||||
},
|
||||
{
|
||||
Text: app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "buttonForSelectedDirTitle"}),
|
||||
Text: app.GetLocalizerService().GetMessage("buttonForSelectedDirTitle"),
|
||||
Widget: directoryForSaving.button,
|
||||
},
|
||||
{
|
||||
@@ -74,11 +73,11 @@ func NewConversion(app kernel.AppContract, formats encoder.ConvertorFormatsContr
|
||||
Widget: selectEncoder.SelectFileType,
|
||||
},
|
||||
{
|
||||
Text: app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "selectFormat"}),
|
||||
Text: app.GetLocalizerService().GetMessage("selectFormat"),
|
||||
Widget: selectEncoder.SelectFormat,
|
||||
},
|
||||
{
|
||||
Text: app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "selectEncoder"}),
|
||||
Text: app.GetLocalizerService().GetMessage("selectEncoder"),
|
||||
Widget: selectEncoder.SelectEncoder,
|
||||
},
|
||||
}
|
||||
@@ -141,30 +140,22 @@ func (c Conversion) selectFileForConversion(err error) {
|
||||
|
||||
func (c Conversion) submit() {
|
||||
if len(c.itemsToConvertService.GetItems()) == 0 {
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorNoFilesAddedForConversion",
|
||||
})))
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage("errorNoFilesAddedForConversion")))
|
||||
c.enableFormConversion()
|
||||
return
|
||||
}
|
||||
|
||||
if len(c.directoryForSaving.path) == 0 {
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorSelectedFolderSave",
|
||||
})))
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage("errorSelectedFolderSave")))
|
||||
c.enableFormConversion()
|
||||
return
|
||||
}
|
||||
if len(c.selectEncoder.SelectFormat.Selected) == 0 {
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorSelectedFormat",
|
||||
})))
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage("errorSelectedFormat")))
|
||||
return
|
||||
}
|
||||
if c.selectEncoder.Encoder == nil {
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorSelectedEncoder",
|
||||
})))
|
||||
showConversionMessage(c.conversionMessage, errors.New(c.app.GetLocalizerService().GetMessage("errorSelectedEncoder")))
|
||||
return
|
||||
}
|
||||
c.conversionMessage.Text = ""
|
||||
@@ -208,13 +199,9 @@ func newFileForConversion(app kernel.AppContract, itemsToConvertService kernel.I
|
||||
changeCallbacks: map[int]func(err error){},
|
||||
}
|
||||
|
||||
buttonTitle := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "choose",
|
||||
}) + "\n" + app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "or",
|
||||
}) + "\n" + app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "dragAndDropFiles",
|
||||
})
|
||||
buttonTitle := app.GetLocalizerService().GetMessage("choose") + "\n" +
|
||||
app.GetLocalizerService().GetMessage("or") + "\n" +
|
||||
app.GetLocalizerService().GetMessage("dragAndDropFiles")
|
||||
|
||||
var locationURI fyne.ListableURI
|
||||
|
||||
@@ -281,9 +268,7 @@ func newFileForConversion(app kernel.AppContract, itemsToConvertService kernel.I
|
||||
}
|
||||
app.GetWindow().GetLayout().GetRightTabs().SelectAddedFilesTab()
|
||||
if isError {
|
||||
fileForConversion.message.Text = app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "errorDragAndDropFile",
|
||||
})
|
||||
fileForConversion.message.Text = app.GetLocalizerService().GetMessage("errorDragAndDropFile")
|
||||
setStringErrorStyle(fileForConversion.message)
|
||||
fileForConversion.eventSelectFile(errors.New(fileForConversion.message.Text))
|
||||
} else {
|
||||
@@ -322,9 +307,7 @@ func newDirectoryForSaving(app kernel.AppContract, settingDirectoryForSaving set
|
||||
directoryForSaving.message.TextSize = 16
|
||||
directoryForSaving.message.TextStyle = fyne.TextStyle{Bold: true}
|
||||
|
||||
buttonTitle := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "choose",
|
||||
})
|
||||
buttonTitle := app.GetLocalizerService().GetMessage("choose")
|
||||
|
||||
var locationURI fyne.ListableURI
|
||||
|
||||
@@ -386,9 +369,7 @@ func newOverwriteOutputFiles(app kernel.AppContract) *overwriteOutputFiles {
|
||||
overwriteOutputFiles := &overwriteOutputFiles{
|
||||
isChecked: false,
|
||||
}
|
||||
checkboxOverwriteOutputFilesTitle := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "checkboxOverwriteOutputFilesTitle",
|
||||
})
|
||||
checkboxOverwriteOutputFilesTitle := app.GetLocalizerService().GetMessage("checkboxOverwriteOutputFilesTitle")
|
||||
overwriteOutputFiles.checkbox = widget.NewCheck(checkboxOverwriteOutputFilesTitle, func(b bool) {
|
||||
overwriteOutputFiles.isChecked = b
|
||||
})
|
||||
@@ -437,7 +418,7 @@ func newSelectEncoder(app kernel.AppContract, formats encoder.ConvertorFormatsCo
|
||||
encoders = map[int]encoder2.EncoderDataContract{}
|
||||
for _, e := range format.GetEncoders() {
|
||||
encoders[len(encoders)] = e
|
||||
encoderOptions = append(encoderOptions, app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "encoder_" + e.GetTitle()}))
|
||||
encoderOptions = append(encoderOptions, app.GetLocalizerService().GetMessage("encoder_"+e.GetTitle()))
|
||||
}
|
||||
selectEncoder.SelectEncoder.SetOptions(encoderOptions)
|
||||
selectEncoder.SelectEncoder.SetSelectedIndex(0)
|
||||
@@ -448,9 +429,9 @@ func newSelectEncoder(app kernel.AppContract, formats encoder.ConvertorFormatsCo
|
||||
fileTypeOptions = append(fileTypeOptions, fileType.Name())
|
||||
}
|
||||
|
||||
encoderGroupVideo := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "encoderGroupVideo"})
|
||||
encoderGroupAudio := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "encoderGroupAudio"})
|
||||
encoderGroupImage := app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{MessageID: "encoderGroupImage"})
|
||||
encoderGroupVideo := app.GetLocalizerService().GetMessage("encoderGroupVideo")
|
||||
encoderGroupAudio := app.GetLocalizerService().GetMessage("encoderGroupAudio")
|
||||
encoderGroupImage := app.GetLocalizerService().GetMessage("encoderGroupImage")
|
||||
encoderGroup := map[string]string{
|
||||
encoderGroupVideo: "video",
|
||||
encoderGroupAudio: "audio",
|
||||
@@ -517,9 +498,7 @@ type form struct {
|
||||
|
||||
func newForm(app kernel.AppContract, items []*widget.FormItem) *form {
|
||||
f := widget.NewForm()
|
||||
f.SubmitText = app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "converterVideoFilesSubmitTitle",
|
||||
})
|
||||
f.SubmitText = app.GetLocalizerService().GetMessage("converterVideoFilesSubmitTitle")
|
||||
f.Items = items
|
||||
|
||||
return &form{
|
||||
|
||||
Reference in New Issue
Block a user