fix(i18n): fail empty loader registrations

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-02 08:03:56 +00:00
parent 92add102a8
commit f2d2f2e5fd
2 changed files with 20 additions and 0 deletions

View file

@ -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 {

View file

@ -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 {