From 9a2abd98fdb639a3ea7aaf3c7b96619e8c3f967f Mon Sep 17 00:00:00 2001 From: Virgil Date: Wed, 1 Apr 2026 23:42:46 +0000 Subject: [PATCH] feat(i18n): expose prompt and lang template helpers Co-Authored-By: Virgil --- grammar.go | 2 ++ grammar_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/grammar.go b/grammar.go index 5c1da47..adb0224 100644 --- a/grammar.go +++ b/grammar.go @@ -690,6 +690,8 @@ func TemplateFuncs() template.FuncMap { "progressSubject": ProgressSubject, "actionResult": ActionResult, "actionFailed": ActionFailed, + "prompt": Prompt, + "lang": Lang, "timeAgo": TimeAgo, "formatAgo": FormatAgo, } diff --git a/grammar_test.go b/grammar_test.go index d0e693c..a8ecde3 100644 --- a/grammar_test.go +++ b/grammar_test.go @@ -879,6 +879,8 @@ func TestTemplateFuncs(t *testing.T) { "progressSubject", "actionResult", "actionFailed", + "prompt", + "lang", "timeAgo", "formatAgo", } @@ -930,6 +932,30 @@ func TestTemplateFuncs_CompositeHelpers(t *testing.T) { } } +func TestTemplateFuncs_PromptAndLang(t *testing.T) { + svc, err := New() + if err != nil { + t.Fatalf("New() failed: %v", err) + } + SetDefault(svc) + + tmpl, err := template.New("").Funcs(TemplateFuncs()).Parse( + `{{prompt "confirm"}}|{{lang "de"}}`, + ) + if err != nil { + t.Fatalf("Parse() failed: %v", err) + } + + var buf strings.Builder + if err := tmpl.Execute(&buf, nil); err != nil { + t.Fatalf("Execute() failed: %v", err) + } + + if got, want := buf.String(), "Are you sure?|German"; got != want { + t.Fatalf("template prompt/lang = %q, want %q", got, want) + } +} + func TestTemplateFuncs_TimeHelpers(t *testing.T) { svc, err := New() if err != nil { -- 2.45.3