From 9d1f266be77b5697b23fa1c6764aaa266b7a07da Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 10:18:13 +0000 Subject: [PATCH] feat(i18n): add reset handlers helper Co-Authored-By: Virgil --- i18n.go | 10 ++++++++++ i18n_test.go | 27 +++++++++++++++++++++++++++ service.go | 7 +++++++ 3 files changed, 44 insertions(+) diff --git a/i18n.go b/i18n.go index 8263162..1c52e2d 100644 --- a/i18n.go +++ b/i18n.go @@ -273,6 +273,16 @@ func ClearHandlers() { withDefaultService(func(svc *Service) { svc.ClearHandlers() }) } +// ResetHandlers restores the built-in default handler chain on the default +// service. +// +// Example: +// +// i18n.ResetHandlers() +func ResetHandlers() { + withDefaultService(func(svc *Service) { svc.ResetHandlers() }) +} + func executeIntentTemplate(tmplStr string, data templateData) string { if tmplStr == "" { return "" diff --git a/i18n_test.go b/i18n_test.go index b12bd8d..f97b7ea 100644 --- a/i18n_test.go +++ b/i18n_test.go @@ -401,6 +401,33 @@ func TestClearHandlers_Good(t *testing.T) { assert.Empty(t, svc.Handlers()) } +func TestResetHandlers_Good(t *testing.T) { + svc, err := New() + require.NoError(t, err) + _ = Init() + prev := Default() + SetDefault(svc) + t.Cleanup(func() { + SetDefault(prev) + }) + + ClearHandlers() + require.Empty(t, svc.Handlers()) + + svc.ResetHandlers() + require.Len(t, svc.Handlers(), len(DefaultHandlers())) + assert.IsType(t, LabelHandler{}, svc.Handlers()[0]) + + ClearHandlers() + require.Empty(t, svc.Handlers()) + + ResetHandlers() + handlers := svc.Handlers() + require.Len(t, handlers, len(DefaultHandlers())) + assert.IsType(t, LabelHandler{}, handlers[0]) + assert.Equal(t, "Status:", T("i18n.label.status")) +} + func TestSetHandlers_Good(t *testing.T) { svc, err := New() require.NoError(t, err) diff --git a/service.go b/service.go index 9a311e7..64d8149 100644 --- a/service.go +++ b/service.go @@ -448,6 +448,13 @@ func (s *Service) ClearHandlers() { s.handlers = nil } +// ResetHandlers restores the built-in default handler chain. +func (s *Service) ResetHandlers() { + s.mu.Lock() + defer s.mu.Unlock() + s.handlers = DefaultHandlers() +} + func (s *Service) Handlers() []KeyHandler { s.mu.RLock() defer s.mu.RUnlock() -- 2.45.3