{% import ( "golang.org/x/text/language" "golang.org/x/text/message" "source.toby3d.me/toby3d/home/internal/domain" ) %} {% interface Pager { Body() T(format message.Reference, v ...any) Title() Lang() Dir() } %} {% code type BaseOf struct { printer *message.Printer site *domain.Site } func NewBaseOf(site *domain.Site) BaseOf { return BaseOf{ site: site, printer: message.NewPrinter(language.Make(site.Language.Code())), } } %} {% stripspace %} {% func (b BaseOf) Title() %} {%s b.site.Title %} {% endfunc %} {% func (b BaseOf) T(key message.Reference, a ...any) %} {%s b.printer.Sprintf(key, a...) %} {% endfunc %} {% func (b BaseOf) Body() %}{% endfunc %} {% func (b BaseOf) Lang() %} {%s b.site.Language.Lang() %} {% endfunc %} {% func (b BaseOf) Dir() %} {%s b.site.Language.Dir().String() %} {% endfunc %} {% func Template(p Pager) %} {%= p.Title() %} {%= p.Body() %} {% endfunc %} {% endstripspace %}