From b6242b634e7b238ee7c71c41ecf11ec0e409ea54 Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Sat, 8 Feb 2025 14:37:15 +0100 Subject: [PATCH] fix(translate): update keys --- examples/example2/pages/de.yaml | 22 +++++++-------- source/translate/main.go | 48 ++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/examples/example2/pages/de.yaml b/examples/example2/pages/de.yaml index 7b24b96..cb3ebe5 100644 --- a/examples/example2/pages/de.yaml +++ b/examples/example2/pages/de.yaml @@ -53,27 +53,27 @@ test.html: id: date - text: Nutzername id: username - - text: Customer + - text: Kundin id: customer - - text: Stadt + - text: PLZ id: city - - text: Land + - text: Stadt id: country - - text: Straße + - text: Land id: street - - text: Zustand der Bestellung + - text: Straße id: order-state - - text: Workflow-Status + - text: Zustand der Bestellung id: workflow-state - - text: gesamt + - text: Workflow-Status id: total - - text: firma + - text: gesamt id: company - - text: Bestellnummer des Kanals + - text: firma id: channel-order-number - - text: Datum der erneuten Einreichung + - text: Bestellnummer des Kanals id: resubmission-date - - text: Art der Zahlung + - text: Datum der erneuten Einreichung id: payment-type translations: - id: the-translation diff --git a/source/translate/main.go b/source/translate/main.go index 5cd487a..436bd73 100644 --- a/source/translate/main.go +++ b/source/translate/main.go @@ -83,7 +83,9 @@ func Do(dataFile, api string, targetLanguages []string) { for name, page := range pageTarget { - translatedPage := applyTranslations(*page, translationsByLang[lang]) + origin := storage[name] + + translatedPage := applyTranslations(*page, *origin, translationsByLang[lang]) // Optional: Sprache im PageData anpassen translatedPage.Lang = lang @@ -162,18 +164,23 @@ func collectUniqueTexts(storage *types.PageDataStorage) []string { } // applyTranslations nimmt die Originalstruktur und ersetzt alle übersetzbaren Felder durch die entsprechenden Übersetzungen. -func applyTranslations(page types.PageData, translations map[string]string) types.PageData { +func applyTranslations(page, origin types.PageData, translations map[string]string) types.PageData { newPage := page // PageData.Title - if t, ok := translations[page.Title]; ok { + originPageTitle := origin.Title + + if t, ok := translations[originPageTitle]; ok { newPage.Title = t + } else { + newPage.Title = originPageTitle } // PageData.Meta newMeta := make(map[string]string) for k, v := range page.Meta { - if t, ok := translations[v]; ok { + vv := origin.Meta[k] + if t, ok := translations[vv]; ok { newMeta[k] = t } else { newMeta[k] = v @@ -183,25 +190,41 @@ func applyTranslations(page types.PageData, translations map[string]string) type // Text.Text for i, t := range newPage.Text { - if tr, ok := translations[t.Text]; ok { + tt := origin.Text[i] + if tr, ok := translations[tt.Text]; ok { newPage.Text[i].Text = tr + } else { + newPage.Text[i].Text = t.Text } } // Images: Alt und Title for i, img := range newPage.Images { - if tr, ok := translations[img.Alt]; ok { + + imgOrigin := origin.Images[i] + + if tr, ok := translations[imgOrigin.Alt]; ok { newPage.Images[i].Alt = tr + } else { + newPage.Images[i].Alt = img.Alt } - if tr, ok := translations[img.Title]; ok { + + if tr, ok := translations[imgOrigin.Title]; ok { newPage.Images[i].Title = tr + } else { + newPage.Images[i].Title = img.Title } } // Anchors: Title for i, anc := range newPage.Anchors { - if tr, ok := translations[anc.Title]; ok { + + ancOrigin := origin.Anchors[i] + + if tr, ok := translations[ancOrigin.Title]; ok { newPage.Anchors[i].Title = tr + } else { + newPage.Anchors[i].Title = anc.Title } } @@ -210,7 +233,13 @@ func applyTranslations(page types.PageData, translations map[string]string) type newKV := make(map[string]interface{}) for k, v := range t.KeyValues { if s, ok := v.(string); ok { - if tr, found := translations[s]; found { + + originStr, ok := origin.Translations[i].KeyValues[k].(string) + if !ok { + originStr = s + } + + if tr, found := translations[originStr]; found { newKV[k] = tr } else { newKV[k] = s @@ -219,6 +248,7 @@ func applyTranslations(page types.PageData, translations map[string]string) type newKV[k] = v } } + newPage.Translations[i].KeyValues = newKV } -- GitLab