From 149bed36982e67508bcaf37451cb4225f628695d Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 10:23:19 +0000 Subject: [PATCH] feat(i18n): expose core service delegates Co-Authored-By: Virgil --- core_service.go | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ hooks_test.go | 32 +++++++++++++++++++ 2 files changed, 117 insertions(+) diff --git a/core_service.go b/core_service.go index b4ee935..3bda6aa 100644 --- a/core_service.go +++ b/core_service.go @@ -147,3 +147,88 @@ func (s *CoreService) SetMode(mode Mode) { func (s *CoreService) Mode() Mode { return s.svc.Mode() } + +// T translates a message through the wrapped i18n service. +func (s *CoreService) T(messageID string, args ...any) string { + return s.svc.T(messageID, args...) +} + +// Translate translates a message through the wrapped i18n service. +func (s *CoreService) Translate(messageID string, args ...any) core.Result { + return s.svc.Translate(messageID, args...) +} + +// Raw translates without namespace handler magic. +func (s *CoreService) Raw(messageID string, args ...any) string { + return s.svc.Raw(messageID, args...) +} + +// SetLanguage changes the wrapped service language. +func (s *CoreService) SetLanguage(lang string) error { + return s.svc.SetLanguage(lang) +} + +// Language returns the wrapped service language. +func (s *CoreService) Language() string { + return s.svc.Language() +} + +// SetFallback changes the wrapped service fallback language. +func (s *CoreService) SetFallback(lang string) { + s.svc.SetFallback(lang) +} + +// Fallback returns the wrapped service fallback language. +func (s *CoreService) Fallback() string { + return s.svc.Fallback() +} + +// SetFormality changes the wrapped service default formality. +func (s *CoreService) SetFormality(f Formality) { + s.svc.SetFormality(f) +} + +// Formality returns the wrapped service default formality. +func (s *CoreService) Formality() Formality { + return s.svc.Formality() +} + +// SetLocation changes the wrapped service default location. +func (s *CoreService) SetLocation(location string) { + s.svc.SetLocation(location) +} + +// Location returns the wrapped service default location. +func (s *CoreService) Location() string { + return s.svc.Location() +} + +// SetDebug changes the wrapped service debug mode. +func (s *CoreService) SetDebug(enabled bool) { + s.svc.SetDebug(enabled) +} + +// Debug reports whether wrapped service debug mode is enabled. +func (s *CoreService) Debug() bool { + return s.svc.Debug() +} + +// AvailableLanguages returns the wrapped service languages. +func (s *CoreService) AvailableLanguages() []string { + return s.svc.AvailableLanguages() +} + +// Direction returns the wrapped service text direction. +func (s *CoreService) Direction() TextDirection { + return s.svc.Direction() +} + +// IsRTL reports whether the wrapped service language is right-to-left. +func (s *CoreService) IsRTL() bool { + return s.svc.IsRTL() +} + +// PluralCategory returns the plural category for the wrapped service language. +func (s *CoreService) PluralCategory(n int) PluralCategory { + return s.svc.PluralCategory(n) +} diff --git a/hooks_test.go b/hooks_test.go index 0437ba9..b2148d9 100644 --- a/hooks_test.go +++ b/hooks_test.go @@ -340,6 +340,38 @@ func TestNewCoreService_AppliesOptions(t *testing.T) { assert.True(t, svc.Debug()) } +func TestCoreService_DelegatesToWrappedService(t *testing.T) { + svc, err := New() + require.NoError(t, err) + + coreSvc := &CoreService{svc: svc} + + assert.Equal(t, svc.T("i18n.label.status"), coreSvc.T("i18n.label.status")) + assert.Equal(t, svc.Raw("i18n.label.status"), coreSvc.Raw("i18n.label.status")) + assert.Equal(t, svc.Translate("i18n.label.status"), coreSvc.Translate("i18n.label.status")) + assert.Equal(t, svc.AvailableLanguages(), coreSvc.AvailableLanguages()) + assert.Equal(t, svc.Direction(), coreSvc.Direction()) + assert.Equal(t, svc.IsRTL(), coreSvc.IsRTL()) + assert.Equal(t, svc.PluralCategory(2), coreSvc.PluralCategory(2)) + + require.NoError(t, coreSvc.SetLanguage("en")) + assert.Equal(t, "en", coreSvc.Language()) + + coreSvc.SetFallback("fr") + assert.Equal(t, "fr", coreSvc.Fallback()) + + coreSvc.SetFormality(FormalityFormal) + assert.Equal(t, FormalityFormal, coreSvc.Formality()) + + coreSvc.SetLocation("workspace") + assert.Equal(t, "workspace", coreSvc.Location()) + + coreSvc.SetDebug(true) + assert.True(t, coreSvc.Debug()) + coreSvc.SetDebug(false) + assert.False(t, coreSvc.Debug()) +} + func TestInit_ReDetectsRegisteredLocales(t *testing.T) { t.Setenv("LANG", "de_DE.UTF-8") -- 2.45.3