From 1593a094e1e9cf3006a084883539533856e1b535 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 23 Jul 2025 20:01:32 +0200 Subject: Use a semi-in-house translation system --- src/templates.go | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'src/templates.go') 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)) } -- cgit v1.2.3