From 92e2b5688b32a4b0ffbb8bd3cf77d5378d2f3939 Mon Sep 17 00:00:00 2001 From: Snider Date: Tue, 17 Mar 2026 02:00:12 +0000 Subject: [PATCH] fix: Default() no longer overwrites SetDefault via Init() Init().defaultOnce.Do() was replacing the service set by SetDefault(). Now Default() checks the atomic pointer first, and Init() skips if a service was already set. Fixes translations not appearing in CLI. Co-Authored-By: Virgil --- service.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/service.go b/service.go index 916fa5a..6a1c36c 100644 --- a/service.go +++ b/service.go @@ -130,13 +130,16 @@ func NewWithLoader(loader Loader, opts ...Option) (*Service, error) { return s, nil } -// Init initialises the default global service. +// Init initialises the default global service if none has been set via SetDefault. func Init() error { defaultOnce.Do(func() { + // If SetDefault was already called, don't overwrite + if defaultService.Load() != nil { + return + } svc, err := New() if err == nil { defaultService.Store(svc) - loadRegisteredLocales(svc) } defaultErr = err }) @@ -146,6 +149,9 @@ func Init() error { // Default returns the global i18n service, initialising if needed. // Returns nil if initialisation fails (error is logged). func Default() *Service { + if svc := defaultService.Load(); svc != nil { + return svc + } if err := Init(); err != nil { log.Printf("i18n: failed to initialise default service: %v", err) }