[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #165

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 08:16:15 +00:00
2 changed files with 35 additions and 1 deletions

View file

@ -264,7 +264,7 @@ func (s *Service) SetLanguage(lang string) error {
matcher := language.NewMatcher(s.availableLangs)
bestMatch, bestIndex, confidence := matcher.Match(requestedLang)
if confidence == language.No {
return log.E("Service.SetLanguage", "unsupported language: "+lang, nil)
return log.E("Service.SetLanguage", "unsupported language: "+lang+" (available: "+joinAvailableLanguagesLocked(s.availableLangs)+")", nil)
}
if bestIndex >= 0 && bestIndex < len(s.availableLangs) {
s.currentLang = s.availableLangs[bestIndex].String()
@ -336,6 +336,18 @@ func (s *Service) PluralCategory(n int) PluralCategory {
return GetPluralCategory(s.currentLang, n)
}
func joinAvailableLanguagesLocked(tags []language.Tag) string {
if len(tags) == 0 {
return ""
}
langs := make([]string, len(tags))
for i, tag := range tags {
langs[i] = tag.String()
}
slices.Sort(langs)
return strings.Join(langs, ", ")
}
func (s *Service) AddHandler(handlers ...KeyHandler) {
s.mu.Lock()
defer s.mu.Unlock()

View file

@ -1,6 +1,7 @@
package i18n
import (
"strings"
"testing"
"testing/fstest"
"time"
@ -89,6 +90,27 @@ func TestServiceAvailableLanguagesSorted(t *testing.T) {
}
}
func TestServiceSetLanguageUnsupportedIncludesAvailableLanguages(t *testing.T) {
svc, err := NewWithLoader(messageBaseFallbackLoader{})
if err != nil {
t.Fatalf("NewWithLoader() failed: %v", err)
}
err = svc.SetLanguage("es")
if err == nil {
t.Fatal("SetLanguage(es) succeeded, want error")
}
msg := err.Error()
if !strings.Contains(msg, "unsupported language: es") {
t.Fatalf("SetLanguage(es) error = %q, want unsupported language message", msg)
}
for _, want := range []string{"en", "en-GB", "fr"} {
if !strings.Contains(msg, want) {
t.Fatalf("SetLanguage(es) error = %q, want available language %q", msg, want)
}
}
}
func TestServiceT(t *testing.T) {
svc, err := New()
if err != nil {