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