fix(i18n): append missing-key handlers
All checks were successful
Security Scan / security (push) Successful in 17s
Test / test (push) Successful in 1m35s

This commit is contained in:
Virgil 2026-04-02 14:36:14 +00:00
parent 0cea872363
commit 6ca01b37a5
2 changed files with 32 additions and 1 deletions

View file

@ -138,7 +138,11 @@ func markLocalesLoaded() {
// OnMissingKey registers a handler for missing translation keys. // OnMissingKey registers a handler for missing translation keys.
func OnMissingKey(h MissingKeyHandler) { func OnMissingKey(h MissingKeyHandler) {
SetMissingKeyHandlers(h) if h == nil {
ClearMissingKeyHandlers()
return
}
AddMissingKeyHandler(h)
} }
// SetMissingKeyHandlers replaces the full missing-key handler chain. // SetMissingKeyHandlers replaces the full missing-key handler chain.

View file

@ -543,6 +543,33 @@ func TestOnMissingKey_Good(t *testing.T) {
assert.Equal(t, "hooks_test.go", filepath.Base(captured.CallerFile)) assert.Equal(t, "hooks_test.go", filepath.Base(captured.CallerFile))
} }
func TestOnMissingKey_Good_AppendsHandlers(t *testing.T) {
svc, err := New()
require.NoError(t, err)
prev := Default()
SetDefault(svc)
prevHandlers := missingKeyHandlers()
t.Cleanup(func() {
missingKeyHandler.Store(prevHandlers)
SetDefault(prev)
})
svc.SetMode(ModeCollect)
ClearMissingKeyHandlers()
t.Cleanup(func() {
ClearMissingKeyHandlers()
})
var first, second int
OnMissingKey(func(MissingKey) { first++ })
OnMissingKey(func(MissingKey) { second++ })
_ = T("missing.on.handler.append")
assert.Equal(t, 1, first)
assert.Equal(t, 1, second)
}
func TestAddMissingKeyHandler_Good(t *testing.T) { func TestAddMissingKeyHandler_Good(t *testing.T) {
svc, err := New() svc, err := New()
require.NoError(t, err) require.NoError(t, err)