From 793f5f902c92a8a4d640689cecc3512af1e4dd48 Mon Sep 17 00:00:00 2001 From: Virgil Date: Wed, 1 Apr 2026 22:23:25 +0000 Subject: [PATCH] feat(i18n): localise count handler output Co-Authored-By: Virgil --- handler.go | 2 +- handler_test.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/handler.go b/handler.go index 236a289..dd95c61 100644 --- a/handler.go +++ b/handler.go @@ -44,7 +44,7 @@ func (h CountHandler) Handle(key string, args []any, next func() string) string noun := core.TrimPrefix(key, "i18n.count.") if len(args) > 0 { count := toInt(args[0]) - return core.Sprintf("%d %s", count, Pluralize(noun, count)) + return core.Sprintf("%s %s", FormatNumber(int64(count)), Pluralize(noun, count)) } return noun } diff --git a/handler_test.go b/handler_test.go index 3a954fa..7ec82b5 100644 --- a/handler_test.go +++ b/handler_test.go @@ -168,6 +168,29 @@ func TestNumericHandler(t *testing.T) { } } +func TestCountHandler_UsesLocaleNumberFormat(t *testing.T) { + prev := Default() + svc, err := New() + if err != nil { + t.Fatalf("New() failed: %v", err) + } + SetDefault(svc) + t.Cleanup(func() { + SetDefault(prev) + }) + + if err := SetLanguage("fr"); err != nil { + t.Fatalf("SetLanguage(fr) failed: %v", err) + } + + h := CountHandler{} + got := h.Handle("i18n.count.file", []any{1234}, nil) + want := "1 234 files" + if got != want { + t.Errorf("CountHandler.Handle(locale format) = %q, want %q", got, want) + } +} + func TestRunHandlerChain(t *testing.T) { handlers := DefaultHandlers() fallback := func() string { return "missed" } -- 2.45.3