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

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

View file

@ -791,14 +791,25 @@ func (s *Service) getMessage(lang, key string) (Message, bool) {
// AddMessages adds messages for a language at runtime.
func (s *Service) AddMessages(lang string, messages map[string]string) {
lang = normalizeLanguageTag(lang)
if lang == "" {
return
}
s.mu.Lock()
defer s.mu.Unlock()
if s.messages[lang] == nil {
s.messages[lang] = make(map[string]Message)
}
for key, text := range messages {
s.messages[lang][key] = Message{Text: text}
}
tag := language.Make(lang)
if !slices.Contains(s.availableLangs, tag) {
s.availableLangs = append(s.availableLangs, tag)
}
s.mu.Unlock()
s.autoDetectLanguage()
}
// AddLoader loads translations from an additional Loader, merging messages

View file

@ -677,6 +677,25 @@ func TestServiceAddMessages(t *testing.T) {
}
}
func TestServiceAddMessages_RegistersLanguage(t *testing.T) {
svc, err := New()
if err != nil {
t.Fatalf("New() failed: %v", err)
}
svc.AddMessages("fr_CA", map[string]string{
"custom.greeting": "Salut!",
})
if err := svc.SetLanguage("fr_CA"); err != nil {
t.Fatalf("SetLanguage(fr_CA) failed: %v", err)
}
if got := svc.T("custom.greeting"); got != "Salut!" {
t.Fatalf("T(custom.greeting) = %q, want %q", got, "Salut!")
}
}
func TestServiceHandlers(t *testing.T) {
svc, err := New()
if err != nil {