Add methods to use configurable strings in templates (preparation for multiblog/multilang)

This commit is contained in:
Jan-Lukas Else 2020-09-20 19:10:01 +02:00
parent 5db4067caf
commit 3f3ffb4bec
5 changed files with 52 additions and 4 deletions

View File

@ -24,12 +24,17 @@ func main() {
}
log.Println("Initialize server components...")
initMinify()
initMarkdown()
err = initTemplateAssets() // Needs minify
if err != nil {
log.Fatal(err)
return
}
initMarkdown()
err = initTemplateStrings()
if err != nil {
log.Fatal(err)
return
}
err = initRendering() // Needs assets
if err != nil {
log.Fatal(err)

View File

@ -63,7 +63,8 @@ func initRendering() error {
}
return d.Format(format)
},
"asset": assetFile,
"asset": assetFile,
"string": getDefaultTemplateString,
"include": func(templateName string, data interface{}) (template.HTML, error) {
buf := new(bytes.Buffer)
err := templates[templateName].ExecuteTemplate(buf, templateName, data)

38
templateStrings.go Normal file
View File

@ -0,0 +1,38 @@
package main
import (
"gopkg.in/yaml.v3"
"io/ioutil"
"path"
)
const stringsDir = "templates/strings"
const defaultVariant = "default"
const variantFileExt = ".yaml"
var templateStrings map[string]map[string]string
func initTemplateStrings() error {
templateStrings = map[string]map[string]string{}
for _, variant := range []string{defaultVariant} {
variantStrings := map[string]string{}
fileContent, err := ioutil.ReadFile(path.Join(stringsDir, variant+variantFileExt))
if err != nil {
return err
}
err = yaml.Unmarshal(fileContent, variantStrings)
if err != nil {
return err
}
templateStrings[variant] = variantStrings
}
return nil
}
func getDefaultTemplateString(name string) string {
return getTemplateStringVariant(name, defaultVariant)
}
func getTemplateStringVariant(name, variant string) string {
return templateStrings[variant][name]
}

View File

@ -6,8 +6,10 @@
<main class=h-entry>
<article>
{{ with title . }}<h1 class=p-name>{{ . }}</h1>{{ end }}
{{ with .Published }}<p>Published on {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
{{ with .Updated }}<p>Updated on {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
{{ with .Published }}
<p>{{ string "publishedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
{{ with .Updated }}
<p>{{ string "updatedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
{{ with .Content }}
<div class=e-content>{{ md . }}</div>
{{ end }}

View File

@ -0,0 +1,2 @@
publishedon: "Published on"
updatedon: "Updated on"