diff --git a/service.go b/service.go index 0d1e573..4aafbf7 100644 --- a/service.go +++ b/service.go @@ -831,6 +831,14 @@ func (s *Service) AddLoader(loader Loader) error { return log.E("Service.AddLoader", "nil loader", nil) } langs := loader.Languages() + if len(langs) == 0 { + if el, ok := loader.(interface{ LanguagesErr() error }); ok { + if langErr := el.LanguagesErr(); langErr != nil { + return log.E("Service.AddLoader", "read locales directory", langErr) + } + } + return log.E("Service.AddLoader", "no languages available from loader", nil) + } for _, lang := range langs { messages, grammar, err := loader.Load(lang) if err != nil { diff --git a/service_test.go b/service_test.go index add6cb0..a391439 100644 --- a/service_test.go +++ b/service_test.go @@ -1033,6 +1033,18 @@ func TestServiceAddLoader_Nil(t *testing.T) { } } +func TestServiceAddLoader_NoLanguages(t *testing.T) { + svc, err := New() + if err != nil { + t.Fatalf("New() failed: %v", err) + } + + empty := fstest.MapFS{} + if err := svc.AddLoader(NewFSLoader(empty, "missing")); err == nil { + t.Error("AddLoader() should fail when no languages are available") + } +} + func TestPackageLevelAddLoader(t *testing.T) { svc, err := New() if err != nil {