From 2ba68c1c10fde2ddd4213c2d8ab0430aa2880cb6 Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Sat, 8 Feb 2025 20:46:29 +0100 Subject: [PATCH] fix(translation): fixes in datastruct --- examples/example2/pages/de.yaml | 22 +++++++------- examples/example2/pages/en.yaml | 2 +- source/translate/main.go | 53 ++++++++++++++------------------- 3 files changed, 35 insertions(+), 42 deletions(-) diff --git a/examples/example2/pages/de.yaml b/examples/example2/pages/de.yaml index cb3ebe5..6c749d3 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 5f02c3c..aa96241 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 c22fe77..b285829 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 -- GitLab