package languages

import (
	"github.com/nicksnyder/go-i18n/i18n"
	"fmt"
	"html/template"
	"net/http"
)

func SetTranslation(tmpl *template.Template, language string, languages ...string) {
	T, _ := i18n.Tfunc(language, languages...)
	tmpl.Funcs(map[string]interface{}{
		"T": func(str string, args ...interface{}) template.HTML {
			return template.HTML(fmt.Sprintf(T(str), args...))
		},
	})
}

func SetTranslationFromRequest(tmpl *template.Template, r *http.Request, defaultLanguage string) {
	cookie, err := r.Cookie("lang")
	cookieLanguage := ""
	if err == nil {
		cookieLanguage = cookie.Value
	}
	// go-i18n supports the format of the Accept-Language header, thankfully.
	headerLanguage := r.Header.Get("Accept-Language")
	SetTranslation(tmpl, cookieLanguage, headerLanguage, defaultLanguage)
}