fix(i18n): fall back to base fallback language tags
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
459876c8b7
commit
bae8b1b788
2 changed files with 27 additions and 1 deletions
|
|
@ -392,7 +392,13 @@ func (s *Service) resolveDirect(messageID string, data any) string {
|
|||
return text
|
||||
}
|
||||
}
|
||||
return s.tryResolve(s.fallbackLang, messageID, data)
|
||||
if text := s.tryResolve(s.fallbackLang, messageID, data); text != "" {
|
||||
return text
|
||||
}
|
||||
if base := baseLanguageTag(s.fallbackLang); base != "" && base != s.fallbackLang {
|
||||
return s.tryResolve(base, messageID, data)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (s *Service) resolveWithFallback(messageID string, data any) string {
|
||||
|
|
|
|||
|
|
@ -296,6 +296,26 @@ func TestServiceMessageFallbackUsesBaseLanguageTagBeforeConfiguredFallback(t *te
|
|||
}
|
||||
}
|
||||
|
||||
func TestServiceMessageFallbackUsesConfiguredFallbackBaseLanguageTag(t *testing.T) {
|
||||
svc, err := NewWithLoader(messageBaseFallbackLoader{})
|
||||
if err != nil {
|
||||
t.Fatalf("NewWithLoader() failed: %v", err)
|
||||
}
|
||||
|
||||
svc.AddMessages("fr", map[string]string{
|
||||
"greeting": "bonjour",
|
||||
})
|
||||
|
||||
if err := svc.SetLanguage("en-GB"); err != nil {
|
||||
t.Fatalf("SetLanguage(en-GB) failed: %v", err)
|
||||
}
|
||||
svc.SetFallback("fr-CA")
|
||||
|
||||
if got := svc.T("greeting"); got != "bonjour" {
|
||||
t.Fatalf("T(greeting) = %q, want %q", got, "bonjour")
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceCommonFallbackUsesBaseLanguageTagBeforeConfiguredFallback(t *testing.T) {
|
||||
svc, err := NewWithLoader(messageBaseFallbackLoader{})
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue