diff options
author | Thomas Voss <mail@thomasvoss.com> | 2025-07-23 20:01:32 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2025-07-23 20:01:32 +0200 |
commit | 1593a094e1e9cf3006a084883539533856e1b535 (patch) | |
tree | 493e016c3d07f8428bc1d8a7ffb4b69190f8816d /src/templates.go | |
parent | 5f1bd49cfef5852bbd539754fb31e8adada29ef3 (diff) |
Use a semi-in-house translation system
Diffstat (limited to 'src/templates.go')
-rw-r--r-- | src/templates.go | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/templates.go b/src/templates.go index 5ef0293..e04306a 100644 --- a/src/templates.go +++ b/src/templates.go @@ -11,10 +11,11 @@ import ( "git.thomasvoss.com/euro-cash.eu/pkg/watch" "git.thomasvoss.com/euro-cash.eu/src/dbx" + "git.thomasvoss.com/euro-cash.eu/src/i18n" ) type templateData struct { - Printer Printer + Printer i18n.Printer Code, Type string Mintages dbx.MintageData Countries []country @@ -25,11 +26,12 @@ var ( errorTmpl *template.Template templates map[string]*template.Template funcmap = map[string]any{ - "locales": locales, + "locales": i18n.Locales, "safe": asHTML, "sprintf": fmt.Sprintf, "toUpper": strings.ToUpper, "tuple": templateMakeTuple, + "map": templateMakeMap, } ) @@ -78,18 +80,31 @@ func asHTML(s string) template.HTML { return template.HTML(s) } -func locales() []locale { - return Locales[:] -} - func templateMakeTuple(args ...any) []any { return args } -func (td templateData) T(fmt string, args ...any) string { - return td.Printer.T(fmt, args...) +func templateMakeMap(args ...any) map[string]any { + if len(args)&1 != 0 { + /* TODO: Handle error */ + args = args[:len(args)-1] + } + m := make(map[string]any, len(args)/2) + for i := 0; i < len(args); i += 2 { + k, ok := args[i].(string) + if !ok { + /* TODO: Handle error */ + continue + } + m[k] = args[i+1] + } + return m +} + +func (td templateData) Get(fmt string, args ...map[string]any) template.HTML { + return template.HTML(td.Printer.Get(fmt, args...)) } -func (td templateData) M(n float64) string { - return td.Printer.M(n) +func (td templateData) GetN(fmtS, fmtP string, n int, args map[string]any) template.HTML { + return template.HTML(td.Printer.GetN(fmtS, fmtP, n, args)) } |