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" }