diff --git a/examples/example2/pages/de.yaml b/examples/example2/pages/de.yaml
index cb3ebe59bf8d3a132a835248399638c0433a78d1..6c749d31f3cf4428a6b3c563afa67d1af59b2e70 100644
--- a/examples/example2/pages/de.yaml
+++ b/examples/example2/pages/de.yaml
@@ -15,7 +15,7 @@ test.html:
           title: Ja
     anchors:
         - id: mmmm
-          href: mmmm
+          href: this is a yummy link
           hreflang: ""
           title: ""
         - id: yes-a-html
@@ -56,24 +56,26 @@ test.html:
         - text: Kundin
           id: customer
         - text: PLZ
-          id: city
+          id: zipcode
         - text: Stadt
-          id: country
+          id: city
         - text: Land
-          id: street
+          id: country
         - text: Straße
-          id: order-state
+          id: street
         - text: Zustand der Bestellung
-          id: workflow-state
+          id: order-state
         - text: Workflow-Status
-          id: total
+          id: workflow-state
         - text: gesamt
-          id: company
+          id: total
         - text: firma
-          id: channel-order-number
+          id: company
         - text: Bestellnummer des Kanals
-          id: resubmission-date
+          id: channel-order-number
         - text: Datum der erneuten Einreichung
+          id: resubmission-date
+        - text: Art der Zahlung
           id: payment-type
     translations:
         - id: the-translation
diff --git a/examples/example2/pages/en.yaml b/examples/example2/pages/en.yaml
index 5f02c3c90c1680bb6db2638f71e20b03d559227a..aa96241916cd1ca49012386e5f3b1b72074a5d69 100755
--- a/examples/example2/pages/en.yaml
+++ b/examples/example2/pages/en.yaml
@@ -15,7 +15,7 @@ test.html:
       title: "yes"
   anchors:
     - id: mmmm
-      href: mmmm
+      href: this is a yummy link
       hreflang: ""
       title: ""
     - id: yes-a-html
diff --git a/source/translate/main.go b/source/translate/main.go
index c22fe77b6ce41c4363967c555984c6e81f7d571a..b285829ec1adcd7b176f68eb2c2f2259aaa9d1a5 100644
--- a/source/translate/main.go
+++ b/source/translate/main.go
@@ -167,83 +167,74 @@ func collectUniqueTexts(storage *types.PageDataStorage) []string {
 func applyTranslations(page, origin types.PageData, translations map[string]string) types.PageData {
 	newPage := page
 
-	// PageData.Title
-	originPageTitle := origin.Title
-
-	if t, ok := translations[originPageTitle]; ok {
+	if t, ok := translations[origin.Title]; ok {
 		newPage.Title = t
 	} else {
-		newPage.Title = originPageTitle
+		newPage.Title = origin.Title
 	}
 
 	// PageData.Meta
 	newMeta := make(map[string]string)
-	for k, v := range page.Meta {
-		vv := origin.Meta[k]
-		if t, ok := translations[vv]; ok {
+	for k, v := range origin.Meta {
+		newMeta[k] = v
+		if t, ok := translations[v]; ok {
 			newMeta[k] = t
-		} else {
-			newMeta[k] = v
 		}
 	}
 	newPage.Meta = newMeta
 
 	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] = t
+		if tr, ok := translations[origin.Text[i].Text]; ok {
 			newPage.Text[i].Text = tr
-		} else {
-			newPage.Text[i].Text = t.Text
 		}
 	}
 
 	newPage.Images = make([]types.Image, len(origin.Images))
 	for i, img := range origin.Images {
 
+		newPage.Images[i] = img
+
 		if tr, ok := translations[img.Alt]; ok {
 			newPage.Images[i].Alt = tr
-		} else {
-			newPage.Images[i].Alt = img.Alt
 		}
 
 		if tr, ok := translations[img.Title]; ok {
 			newPage.Images[i].Title = tr
-		} else {
-			newPage.Images[i].Title = img.Title
 		}
 	}
 
 	newPage.Anchors = make([]types.Anchor, len(origin.Anchors))
 	for i, anc := range origin.Anchors {
 
+		newPage.Anchors[i] = anc
+
 		if tr, ok := translations[anc.Title]; ok {
 			newPage.Anchors[i].Title = tr
-		} else {
-			newPage.Anchors[i].Title = anc.Title
 		}
 	}
 
 	// Translations: KeyValues (nur falls Value ein String ist)
 	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 {
 
-				originStr, ok := origin.Translations[i].KeyValues[k].(string)
-				if !ok {
-					originStr = s
-				}
+		newPage.Translations[i] = t
 
-				if tr, found := translations[originStr]; found {
+		newKV := make(map[string]any)
+		for k, v := range t.KeyValues {
+			newKV[k] = v
+
+			switch v := v.(type) {
+			case string:
+				if tr, found := translations[v]; found {
 					newKV[k] = tr
 				} else {
-					newKV[k] = s
+					newKV[k] = v
 				}
-			} else {
-				newKV[k] = v
 			}
+
 		}
 
 		newPage.Translations[i].KeyValues = newKV