[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #138
2 changed files with 41 additions and 1 deletions
|
|
@ -131,6 +131,7 @@ func NewWithLoader(loader Loader, opts ...Option) (*Service, error) {
|
|||
if err != nil {
|
||||
return nil, log.E("NewWithLoader", "load locale: "+lang, err)
|
||||
}
|
||||
lang = normalizeLanguageTag(lang)
|
||||
s.messages[lang] = messages
|
||||
if grammarDataHasContent(grammar) {
|
||||
SetGrammarData(lang, grammar)
|
||||
|
|
@ -290,7 +291,11 @@ func (s *Service) SetMode(m Mode) { s.mu.Lock(); s.mode = m; s.mu.Unlo
|
|||
func (s *Service) Mode() Mode { s.mu.RLock(); defer s.mu.RUnlock(); return s.mode }
|
||||
func (s *Service) SetFormality(f Formality) { s.mu.Lock(); s.formality = f; s.mu.Unlock() }
|
||||
func (s *Service) Formality() Formality { s.mu.RLock(); defer s.mu.RUnlock(); return s.formality }
|
||||
func (s *Service) SetFallback(lang string) { s.mu.Lock(); s.fallbackLang = normalizeLanguageTag(lang); s.mu.Unlock() }
|
||||
func (s *Service) SetFallback(lang string) {
|
||||
s.mu.Lock()
|
||||
s.fallbackLang = normalizeLanguageTag(lang)
|
||||
s.mu.Unlock()
|
||||
}
|
||||
func (s *Service) Fallback() string {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
|
|
@ -829,6 +834,7 @@ func (s *Service) AddLoader(loader Loader) error {
|
|||
if err != nil {
|
||||
return log.E("Service.AddLoader", "load locale: "+lang, err)
|
||||
}
|
||||
lang = normalizeLanguageTag(lang)
|
||||
|
||||
s.mu.Lock()
|
||||
if s.messages[lang] == nil {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,18 @@ func (h serviceMutatingHandler) Handle(key string, args []any, next func() strin
|
|||
return "mutated"
|
||||
}
|
||||
|
||||
type underscoreLangLoader struct{}
|
||||
|
||||
func (underscoreLangLoader) Languages() []string {
|
||||
return []string{"en_US"}
|
||||
}
|
||||
|
||||
func (underscoreLangLoader) Load(lang string) (map[string]Message, *GrammarData, error) {
|
||||
return map[string]Message{
|
||||
"greeting": {Text: "hello"},
|
||||
}, nil, nil
|
||||
}
|
||||
|
||||
func TestNewService(t *testing.T) {
|
||||
svc, err := New()
|
||||
if err != nil {
|
||||
|
|
@ -148,6 +160,28 @@ func TestServiceTDirectKeys(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestNewWithLoaderNormalisesLanguageTags(t *testing.T) {
|
||||
svc, err := NewWithLoader(underscoreLangLoader{})
|
||||
if err != nil {
|
||||
t.Fatalf("NewWithLoader() failed: %v", err)
|
||||
}
|
||||
|
||||
langs := svc.AvailableLanguages()
|
||||
if len(langs) != 1 || langs[0] != "en-US" {
|
||||
t.Fatalf("AvailableLanguages() = %v, want [en-US]", langs)
|
||||
}
|
||||
|
||||
if err := svc.SetLanguage("en_US"); err != nil {
|
||||
t.Fatalf("SetLanguage(en_US) failed: %v", err)
|
||||
}
|
||||
if got, want := svc.Language(), "en-US"; got != want {
|
||||
t.Fatalf("Language() after SetLanguage(en_US) = %q, want %q", got, want)
|
||||
}
|
||||
if got := svc.T("greeting"); got != "hello" {
|
||||
t.Fatalf("T(greeting) after SetLanguage(en_US) = %q, want %q", got, "hello")
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceTPluralMessage(t *testing.T) {
|
||||
svc, err := New()
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue