From 2abe15c2b1d265b6bf99a2800aad0d4e004d589e Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 11:30:28 +0000 Subject: [PATCH] refactor(i18n): simplify current-state aliases Co-Authored-By: Virgil --- i18n.go | 30 +++++++++++++++--------------- localise.go | 12 ++++++------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/i18n.go b/i18n.go index 7968689..0e755b7 100644 --- a/i18n.go +++ b/i18n.go @@ -65,7 +65,9 @@ func SetLanguage(lang string) error { // // lang := i18n.CurrentLanguage() func CurrentLanguage() string { - return Language() + return defaultServiceValue("en", func(svc *Service) string { + return svc.Language() + }) } // Language returns the current language code. @@ -101,7 +103,13 @@ func AvailableLanguages() []string { // // langs := i18n.CurrentAvailableLanguages() func CurrentAvailableLanguages() []string { - return AvailableLanguages() + return defaultServiceValue([]string{}, func(svc *Service) []string { + langs := svc.AvailableLanguages() + if len(langs) == 0 { + return []string{} + } + return append([]string(nil), langs...) + }) } // SetMode sets the translation mode for the default service. @@ -139,9 +147,7 @@ func Fallback() string { // // mode := i18n.CurrentMode() func CurrentMode() Mode { - return defaultServiceValue(ModeNormal, func(svc *Service) Mode { - return svc.Mode() - }) + return defaultServiceValue(ModeNormal, func(svc *Service) Mode { return svc.Mode() }) } // CurrentFallback returns the current fallback language. @@ -150,9 +156,7 @@ func CurrentMode() Mode { // // fallback := i18n.CurrentFallback() func CurrentFallback() string { - return defaultServiceValue("en", func(svc *Service) string { - return svc.Fallback() - }) + return defaultServiceValue("en", func(svc *Service) string { return svc.Fallback() }) } // CurrentFormality returns the current default formality. @@ -161,9 +165,7 @@ func CurrentFallback() string { // // formality := i18n.CurrentFormality() func CurrentFormality() Formality { - return defaultServiceValue(FormalityNeutral, func(svc *Service) Formality { - return svc.Formality() - }) + return defaultServiceValue(FormalityNeutral, func(svc *Service) Formality { return svc.Formality() }) } // CurrentDebug reports whether debug mode is enabled on the default service. @@ -172,7 +174,7 @@ func CurrentFormality() Formality { // // debug := i18n.CurrentDebug() func CurrentDebug() bool { - return Debug() + return defaultServiceValue(false, func(svc *Service) bool { return svc.Debug() }) } // Debug reports whether debug mode is enabled on the default service. @@ -326,9 +328,7 @@ func PrependHandler(handlers ...KeyHandler) { // // handlers := i18n.CurrentHandlers() func CurrentHandlers() []KeyHandler { - return defaultServiceValue([]KeyHandler{}, func(svc *Service) []KeyHandler { - return svc.Handlers() - }) + return defaultServiceValue([]KeyHandler{}, func(svc *Service) []KeyHandler { return svc.Handlers() }) } // Handlers returns a copy of the default service's handler chain. diff --git a/localise.go b/localise.go index e0a679a..b8afbd0 100644 --- a/localise.go +++ b/localise.go @@ -91,7 +91,7 @@ func SetLocation(location string) { // // location := i18n.CurrentLocation() func CurrentLocation() string { - return Location() + return defaultServiceValue("", func(svc *Service) string { return svc.Location() }) } // Location returns the current default location context. @@ -122,7 +122,7 @@ func Direction() TextDirection { // // dir := i18n.CurrentDirection() func CurrentDirection() TextDirection { - return Direction() + return defaultServiceValue(DirLTR, func(svc *Service) TextDirection { return svc.Direction() }) } // IsRTL returns true if the current language uses right-to-left text. @@ -138,7 +138,9 @@ func IsRTL() bool { return Direction() == DirRTL } // Example: // // rtl := i18n.CurrentIsRTL() -func CurrentIsRTL() bool { return IsRTL() } +func CurrentIsRTL() bool { + return defaultServiceValue(false, func(svc *Service) bool { return svc.IsRTL() }) +} // CurrentPluralCategory returns the plural category for the current default language. // @@ -146,9 +148,7 @@ func CurrentIsRTL() bool { return IsRTL() } // // cat := i18n.CurrentPluralCategory(2) func CurrentPluralCategory(n int) PluralCategory { - return defaultServiceValue(PluralOther, func(svc *Service) PluralCategory { - return svc.PluralCategory(n) - }) + return defaultServiceValue(PluralOther, func(svc *Service) PluralCategory { return svc.PluralCategory(n) }) } func detectLanguage(supported []language.Tag) string {