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