diff --git a/default_service.go b/default_service.go index a813317..509e83f 100644 --- a/default_service.go +++ b/default_service.go @@ -15,3 +15,11 @@ func defaultServiceValue[T any](fallback T, fn func(*Service) T) T { } return fallback } + +// defaultServiceNamespaceValue resolves a namespace key against the default +// service when available, or returns the namespace-qualified key otherwise. +func defaultServiceNamespaceValue(namespace, key string, lookup func(*Service, string) string) string { + return defaultServiceValue(namespaceLookupKey(namespace, key), func(svc *Service) string { + return lookup(svc, key) + }) +} diff --git a/i18n.go b/i18n.go index cf01f37..c13b7e6 100644 --- a/i18n.go +++ b/i18n.go @@ -243,8 +243,8 @@ func N(format string, value any, args ...any) string { // Prompt("yes") // "y" // Prompt("confirm") // "Are you sure?" func Prompt(key string) string { - return defaultServiceValue("", func(svc *Service) string { - return svc.Prompt(key) + return defaultServiceNamespaceValue("prompt", key, func(svc *Service, resolved string) string { + return svc.Prompt(resolved) }) } @@ -265,8 +265,8 @@ func CurrentPrompt(key string) string { // // Lang("de") // "German" func Lang(key string) string { - return defaultServiceValue("", func(svc *Service) string { - return svc.Lang(key) + return defaultServiceNamespaceValue("lang", key, func(svc *Service, resolved string) string { + return svc.Lang(resolved) }) }