mirror of https://github.com/jlelse/GoBlog
Add language based strings
This commit is contained in:
parent
69522ef127
commit
43cd803342
|
@ -66,7 +66,7 @@ func initRendering() error {
|
||||||
return d.Format(format)
|
return d.Format(format)
|
||||||
},
|
},
|
||||||
"asset": assetFile,
|
"asset": assetFile,
|
||||||
"string": getDefaultTemplateString,
|
"string": getTemplateStringVariant,
|
||||||
"include": func(templateName string, blog *configBlog, data interface{}) (template.HTML, error) {
|
"include": func(templateName string, blog *configBlog, data interface{}) (template.HTML, error) {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
err := templates[templateName].ExecuteTemplate(buf, templateName, &renderData{
|
err := templates[templateName].ExecuteTemplate(buf, templateName, &renderData{
|
||||||
|
|
|
@ -1,23 +1,32 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/yaml.v3"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
const stringsDir = "templates/strings"
|
const stringsDir = "templates/strings"
|
||||||
const defaultVariant = "default"
|
const defaultStrings = "default"
|
||||||
const variantFileExt = ".yaml"
|
const variantFileExt = ".yaml"
|
||||||
|
|
||||||
var templateStrings map[string]map[string]string
|
var templateStrings map[string]map[string]string
|
||||||
|
|
||||||
func initTemplateStrings() error {
|
func initTemplateStrings() error {
|
||||||
templateStrings = map[string]map[string]string{}
|
templateStrings = map[string]map[string]string{}
|
||||||
for _, variant := range []string{defaultVariant} {
|
variants := []string{defaultStrings}
|
||||||
|
for _, blog := range appConfig.Blogs {
|
||||||
|
variants = append(variants, blog.Lang)
|
||||||
|
}
|
||||||
|
for _, variant := range variants {
|
||||||
variantStrings := map[string]string{}
|
variantStrings := map[string]string{}
|
||||||
fileContent, err := ioutil.ReadFile(path.Join(stringsDir, variant+variantFileExt))
|
fileContent, err := ioutil.ReadFile(path.Join(stringsDir, variant+variantFileExt))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = yaml.Unmarshal(fileContent, variantStrings)
|
err = yaml.Unmarshal(fileContent, variantStrings)
|
||||||
|
@ -29,10 +38,14 @@ func initTemplateStrings() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDefaultTemplateString(name string) string {
|
func getTemplateStringVariant(lang, name string) (result string) {
|
||||||
return getTemplateStringVariant(name, defaultVariant)
|
m, ok := templateStrings[lang]
|
||||||
}
|
if !ok {
|
||||||
|
m = templateStrings[defaultStrings]
|
||||||
func getTemplateStringVariant(name, variant string) string {
|
}
|
||||||
return templateStrings[variant][name]
|
result, ok = m[name]
|
||||||
|
if !ok {
|
||||||
|
result = templateStrings[defaultStrings][name]
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,10 +30,10 @@
|
||||||
{{ include "summary" $blog $post }}
|
{{ include "summary" $blog $post }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Data.HasPrev }}
|
{{ if .Data.HasPrev }}
|
||||||
<p><a href="{{ .Data.Prev }}">Prev</a></p>
|
<p><a href="{{ .Data.Prev }}">{{ string .Blog.Lang "prev" }}</a></p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Data.HasNext }}
|
{{ if .Data.HasNext }}
|
||||||
<p><a href="{{ .Data.Next }}">Next</a></p>
|
<p><a href="{{ .Data.Next }}">{{ string .Blog.Lang "next" }}</a></p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</main>
|
</main>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -18,10 +18,10 @@
|
||||||
{{ include "photosummary" $blog $post }}
|
{{ include "photosummary" $blog $post }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Data.HasPrev }}
|
{{ if .Data.HasPrev }}
|
||||||
<p><a href="{{ .Data.Prev }}">Prev</a></p>
|
<p><a href="{{ .Data.Prev }}">{{ string .Blog.Lang "prev" }}</a></p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Data.HasNext }}
|
{{ if .Data.HasNext }}
|
||||||
<p><a href="{{ .Data.Next }}">Next</a></p>
|
<p><a href="{{ .Data.Next }}">{{ string .Blog.Lang "next" }}</a></p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</main>
|
</main>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
{{ md ( printf "![](%s)" $photo ) }}
|
{{ md ( printf "![](%s)" $photo ) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p>{{ summary .Data }}</p>
|
<p>{{ summary .Data }}</p>
|
||||||
<a href="{{ .Data.Path }}">View</a>
|
<a href="{{ .Data.Path }}">{{ string .Blog.Lang "view" }}</a>
|
||||||
</article>
|
</article>
|
||||||
<hr>
|
<hr>
|
||||||
{{ end }}
|
{{ end }}
|
|
@ -6,10 +6,10 @@
|
||||||
<main class=h-entry>
|
<main class=h-entry>
|
||||||
<article>
|
<article>
|
||||||
{{ with title .Data }}<h1 class=p-name>{{ . }}</h1>{{ end }}
|
{{ with title .Data }}<h1 class=p-name>{{ . }}</h1>{{ end }}
|
||||||
{{ with .Data.Published }}
|
{{ if .Data.Published }}
|
||||||
<p>{{ string "publishedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
<p>{{ string .Blog.Lang "publishedon" }} {{ dateformat .Data.Published "02. Jan 2006" }}</p>{{ end }}
|
||||||
{{ with .Data.Updated }}
|
{{ if .Data.Updated }}
|
||||||
<p>{{ string "updatedon" }} {{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
<p>{{ string .Blog.Lang "updatedon" }} {{ dateformat .Data.Updated "02. Jan 2006" }}</p>{{ end }}
|
||||||
{{ with .Data.Content }}
|
{{ with .Data.Content }}
|
||||||
<div class=e-content>{{ md . }}</div>
|
<div class=e-content>{{ md . }}</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
publishedon: "Veröffentlicht am"
|
||||||
|
updatedon: "Aktualisiert am"
|
||||||
|
next: "Weiter"
|
||||||
|
prev: "Zurück"
|
||||||
|
view: "Anschauen"
|
|
@ -1,2 +1,5 @@
|
||||||
publishedon: "Published on"
|
publishedon: "Published on"
|
||||||
updatedon: "Updated on"
|
updatedon: "Updated on"
|
||||||
|
next: "Next"
|
||||||
|
prev: "Previous"
|
||||||
|
view: "View"
|
|
@ -3,7 +3,7 @@
|
||||||
{{ with p .Data "title" }}<h2>{{ . }}</h2>{{ end }}
|
{{ with p .Data "title" }}<h2>{{ . }}</h2>{{ end }}
|
||||||
{{ with .Data.Published }}<p>{{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
{{ with .Data.Published }}<p>{{ dateformat . "02. Jan 2006" }}</p>{{ end }}
|
||||||
<p>{{ summary .Data }}</p>
|
<p>{{ summary .Data }}</p>
|
||||||
<a href="{{ .Data.Path }}">View</a>
|
<a href="{{ .Data.Path }}">{{ string .Blog.Lang "view" }}</a>
|
||||||
</article>
|
</article>
|
||||||
<hr>
|
<hr>
|
||||||
{{ end }}
|
{{ end }}
|
Loading…
Reference in New Issue