I have a webpage consisting of one layout.html and one content.html. Both contain calls to a custom function for translating strings.
When I call template.ParseFiles, the content is included into the layout and is served, but only strings in layout.html are translated while the strings from content.html disappear.
This works fine when I use single html files, but I can't get it work with nested files.
main.go
func executeMultiTmpl(w http.ResponseWriter, r *http.Request) {
funcMap := template.FuncMap{
"index": lookup,
}
tmpl, err := template.New("example.html").Funcs(funcMap).ParseFiles(
"dev/html/example/layout.html",
"dev/html/example/content.html",
)
var tpl bytes.Buffer
err = tmpl.Execute(&tpl ,Translation)
if err != nil {
panic(err)
}
}
layout.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example Title - {{index . "About"}}</title>
</head>
<body>
{{ template "content.html" }}
</body>
</html>
content.html
<h2>{{index . "Some headline"}}</h2>
The file content.html is nested inside of layout.html. Afterwards the function lookup receives a map Translation and translates all strings in the layout.html file which are surrounded by {{index . }}. Unfortunately, the strings in the file content.html are not translated.
I know the function lookup is called, but it receives an empty Translation map.
When I remove the custom function and run it with the standard index function, I get a panic: executing "content.html" at : error calling index: index of untyped nil