From c32e76dbb1ac0694d031e2782a0d7b50f419a37f Mon Sep 17 00:00:00 2001 From: caixw Date: Tue, 15 Oct 2024 15:15:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor(message/serialize)!:=20Load=20?= =?UTF-8?q?=E7=B3=BB=E5=88=97=E5=87=BD=E6=95=B0=E4=B8=8D=E5=86=8D=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E7=9B=B8=E5=90=8C=20Language.ID=20=E7=9A=84=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/extract/options.go | 2 +- message/message.go | 2 +- message/serialize/unmarshal.go | 36 ++++------------------------------ 3 files changed, 6 insertions(+), 34 deletions(-) diff --git a/message/extract/options.go b/message/extract/options.go index 0914dbc..86d27e5 100644 --- a/message/extract/options.go +++ b/message/extract/options.go @@ -21,7 +21,7 @@ import ( ) type Options struct { - // Language 提取内容的语言 ID + // Language 提取的内容以此值作为本地化的 ID 保存 Language language.Tag // 读取的根目录 diff --git a/message/message.go b/message/message.go index 2b8c355..ac25120 100644 --- a/message/message.go +++ b/message/message.go @@ -21,7 +21,7 @@ type ( // Language 某一语言的本地化内容 Language struct { XMLName struct{} `xml:"language" json:"-" yaml:"-"` - ID language.Tag `xml:"id,attr" json:"id" yaml:"id"` + ID language.Tag `xml:"id,attr" json:"id" yaml:"id"` // 如果用字符串,还需要处理大小写以及不同值表示同一个 language.Tag 对象的问题 Messages []Message `xml:"message" json:"messages" yaml:"messages"` } diff --git a/message/serialize/unmarshal.go b/message/serialize/unmarshal.go index a2d5b9c..8ec9bf7 100644 --- a/message/serialize/unmarshal.go +++ b/message/serialize/unmarshal.go @@ -8,11 +8,8 @@ import ( "io/fs" "os" "path/filepath" - "slices" "github.com/issue9/localeutil" - "github.com/issue9/sliceutil" - "github.com/issue9/localeutil/message" ) @@ -48,7 +45,7 @@ func unmarshalFS(f func() ([]byte, error), u UnmarshalFunc) (*message.Language, // LoadGlob 批量加载文件 // -// 相同语言 ID 的项会合并。 +// 相同 Language.ID 的项会合并。 func LoadGlob(s Search, glob string) ([]*message.Language, error) { matches, err := filepath.Glob(glob) if err != nil { @@ -68,12 +65,12 @@ func LoadGlob(s Search, glob string) ([]*message.Language, error) { langs = append(langs, l) } - return joinLanguages(langs), nil + return langs, nil } // LoadFSGlob 批量加载文件 // -// 相同语言 ID 的项会合并。 +// 相同 Language.ID 的项会合并。 func LoadFSGlob(s Search, glob string, fsys ...fs.FS) ([]*message.Language, error) { langs := make([]*message.Language, 0, 10) for _, f := range fsys { @@ -96,30 +93,5 @@ func LoadFSGlob(s Search, glob string, fsys ...fs.FS) ([]*message.Language, erro } } - return joinLanguages(langs), nil -} - -func joinLanguages(langs []*message.Language) []*message.Language { - delIndexes := make([]int, 0, len(langs)) - for index, lang := range langs { - // 该元素已经被标记为删除 - if slices.IndexFunc(delIndexes, func(v int) bool { return index == v }) >= 0 { - continue - } - - // 找与 lang.ID 相同的元素索引 - indexes := sliceutil.Indexes(langs, func(l *message.Language, i int) bool { - return l.ID == lang.ID && i != index - }) - - for _, i := range indexes { - lang.Join(langs[i]) - } - - delIndexes = append(delIndexes, indexes...) - } - - return sliceutil.QuickDelete(langs, func(_ *message.Language, index int) bool { - return slices.IndexFunc(delIndexes, func(i int) bool { return i == index }) >= 0 - }) + return langs, nil }