From 3b91ff9d966a67a2a4a50ce87ab48e4258669098 Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Sat, 8 Feb 2025 20:12:44 +0100 Subject: [PATCH] fix: init data structures --- source/translate/main.go | 25 +++++++++++-------------- source/types/page-data.go | 8 +++++--- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/source/translate/main.go b/source/translate/main.go index 436bd73..c22fe77 100644 --- a/source/translate/main.go +++ b/source/translate/main.go @@ -188,8 +188,8 @@ func applyTranslations(page, origin types.PageData, translations map[string]stri } newPage.Meta = newMeta - // Text.Text - for i, t := range newPage.Text { + newPage.Text = make([]types.Text, len(origin.Text)) + for i, t := range origin.Text { tt := origin.Text[i] if tr, ok := translations[tt.Text]; ok { newPage.Text[i].Text = tr @@ -198,30 +198,26 @@ func applyTranslations(page, origin types.PageData, translations map[string]stri } } - // Images: Alt und Title - for i, img := range newPage.Images { + newPage.Images = make([]types.Image, len(origin.Images)) + for i, img := range origin.Images { - imgOrigin := origin.Images[i] - - if tr, ok := translations[imgOrigin.Alt]; ok { + if tr, ok := translations[img.Alt]; ok { newPage.Images[i].Alt = tr } else { newPage.Images[i].Alt = img.Alt } - if tr, ok := translations[imgOrigin.Title]; ok { + if tr, ok := translations[img.Title]; ok { newPage.Images[i].Title = tr } else { newPage.Images[i].Title = img.Title } } - // Anchors: Title - for i, anc := range newPage.Anchors { - - ancOrigin := origin.Anchors[i] + newPage.Anchors = make([]types.Anchor, len(origin.Anchors)) + for i, anc := range origin.Anchors { - if tr, ok := translations[ancOrigin.Title]; ok { + if tr, ok := translations[anc.Title]; ok { newPage.Anchors[i].Title = tr } else { newPage.Anchors[i].Title = anc.Title @@ -229,7 +225,8 @@ func applyTranslations(page, origin types.PageData, translations map[string]stri } // Translations: KeyValues (nur falls Value ein String ist) - for i, t := range newPage.Translations { + newPage.Translations = make([]types.Translations, len(origin.Translations)) + for i, t := range origin.Translations { newKV := make(map[string]interface{}) for k, v := range t.KeyValues { if s, ok := v.(string); ok { diff --git a/source/types/page-data.go b/source/types/page-data.go index 7260de7..123f213 100644 --- a/source/types/page-data.go +++ b/source/types/page-data.go @@ -19,10 +19,12 @@ type Anchor struct { Title string `yaml:"title"` } +type TranslationKeyValues map[string]any + type Translations struct { - Id string `yaml:"id"` - Type string `yaml:"type"` - KeyValues map[string]any `yaml:"translations"` + Id string `yaml:"id"` + Type string `yaml:"type"` + KeyValues TranslationKeyValues `yaml:"translations"` } type AddModification struct { -- GitLab