[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #165
2 changed files with 35 additions and 1 deletions
14
service.go
14
service.go
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue