Skip to content
Snippets Groups Projects
Verified Commit 1bed4ef6 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix(translate): write

parent a364a86d
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"gitlab.schukai.com/oss/bob/types" "gitlab.schukai.com/oss/bob/types"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"os" "os"
"path"
"strings" "strings"
) )
...@@ -52,27 +53,56 @@ func Do(dataFile, api string, targetLanguages []string) { ...@@ -52,27 +53,56 @@ func Do(dataFile, api string, targetLanguages []string) {
translationsByLang[lang] = trans translationsByLang[lang] = trans
} }
dataDir := path.Dir(dataFile)
// 4. Für jede Sprache: Original-Struktur kopieren, übersetzte Texte an derselben Stelle eintragen und als YAML speichern. // 4. Für jede Sprache: Original-Struktur kopieren, übersetzte Texte an derselben Stelle eintragen und als YAML speichern.
for _, lang := range targetLanguages { for _, lang := range targetLanguages {
for _, page := range storage { pageTarget := types.PageDataStorage{}
translatedPage := applyTranslations(*page, translationsByLang[lang]) langSourcePath := fmt.Sprintf("%s/%s.yaml", dataDir, lang)
// Optional: Sprache im PageData anpassen langSourceData, err := os.ReadFile(langSourcePath)
translatedPage.Lang = lang if err != nil {
outData, err := yaml.Marshal(&translatedPage) if !os.IsNotExist(err) {
if err != nil { log.Fatalf("Error reading data file %s: %v", langSourcePath, err)
log.Fatalf("Error marshalling translated data for %s: %v", lang, err) continue
} }
filename := fmt.Sprintf("%s.yaml", lang) // Wenn die Datei nicht existiert, wird sie neu erstellt.
err = os.WriteFile(filename, outData, 0644) pageTarget = storage
} else {
err = yaml.Unmarshal(langSourceData, &pageTarget)
if err != nil { if err != nil {
log.Fatalf("Error writing translated data for %s: %v", lang, err) log.Fatalf("Error unmarshalling data file %s: %v", langSourcePath, err)
continue
} }
log.Info("Translated data for %s written to %s.\n", lang, filename)
} }
for name, page := range pageTarget {
translatedPage := applyTranslations(*page, translationsByLang[lang])
// Optional: Sprache im PageData anpassen
translatedPage.Lang = lang
pageTarget[name] = &translatedPage
}
outData, err := yaml.Marshal(&pageTarget)
if err != nil {
log.Fatalf("Error marshalling translated data for %s: %v", lang, err)
}
filename := fmt.Sprintf("%s/%s.yaml", dataDir, lang)
err = os.WriteFile(filename, outData, 0644)
if err != nil {
log.Fatalf("Error writing translated data for %s: %v", lang, err)
}
log.Info("Translated data for %s written to %s.\n", lang, filename)
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment