From b6f371651a0505a4b74478adbc9fadc91d323226 Mon Sep 17 00:00:00 2001 From: Jon Snyder Date: Thu, 2 Jan 2025 12:00:18 -0800 Subject: [PATCH] chore: support some new rare languages: Bolivian Quechua, and Portuese and Brazilian Sign Language --- go.mod | 4 ++-- go.sum | 4 ++++ locale.go | 9 +++++++-- locale_test.go | 21 +++++++++++++++++++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b2f9c0b..fe2c92a 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ toolchain go1.21.3 require ( github.com/leonelquinteros/gotext v1.6.1 github.com/razor-1/localizer-cldr v0.2.0 - github.com/stretchr/testify v1.9.0 - golang.org/x/text v0.19.0 + github.com/stretchr/testify v1.10.0 + golang.org/x/text v0.21.0 ) require ( diff --git a/go.sum b/go.sum index efe4215..d78213f 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -33,6 +35,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/locale.go b/locale.go index f81b4f5..6f8cb71 100644 --- a/locale.go +++ b/locale.go @@ -2,11 +2,12 @@ package localizer import ( "fmt" - cldr "github.com/razor-1/localizer-cldr" "regexp" "strings" "sync" + cldr "github.com/razor-1/localizer-cldr" + "github.com/razor-1/localizer-cldr/resources" "golang.org/x/text/language" "golang.org/x/text/message" @@ -137,7 +138,7 @@ func getFallbackTag(tag language.Tag) (language.Tag, error) { return language.English, nil case "ca-valencia": return language.Catalan, nil - case "quc": + case "quc", "quh": return language.LatinAmericanSpanish, nil case "lir": return language.English, nil @@ -147,6 +148,10 @@ func getFallbackTag(tag language.Tag) (language.Tag, error) { return language.Make("ee"), nil case "tw": return language.Make("ak"), nil + case "psr": + return language.EuropeanPortuguese, nil + case "bzs": + return language.BrazilianPortuguese, nil } return language.Tag{}, fmt.Errorf("no fallback for tag %s", tag.String()) diff --git a/locale_test.go b/locale_test.go index 7175165..53fe8f0 100644 --- a/locale_test.go +++ b/locale_test.go @@ -222,4 +222,25 @@ func TestGetLocaleData(t *testing.T) { l, err = localizer.GetLocaleData(tag) ta.NoError(err) ta.Equal("ak", language.MustParse(l.Locale).String()) + + tag, err = language.Parse("quh") + ta.NoError(err) + ta.Equal("quh", tag.String()) + l, err = localizer.GetLocaleData(tag) + ta.NoError(err) + ta.Equal(language.LatinAmericanSpanish, language.MustParse(l.Locale)) + + tag, err = language.Parse("psr") + ta.NoError(err) + ta.Equal("psr", tag.String()) + l, err = localizer.GetLocaleData(tag) + ta.NoError(err) + ta.Equal(language.EuropeanPortuguese, language.MustParse(l.Locale)) + + tag, err = language.Parse("bzs") + ta.NoError(err) + ta.Equal("bzs", tag.String()) + l, err = localizer.GetLocaleData(tag) + ta.NoError(err) + ta.Equal(language.BrazilianPortuguese, language.MustParse(l.Locale)) }