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