diff --git a/localise.go b/localise.go index 0dbd356..e323c58 100644 --- a/localise.go +++ b/localise.go @@ -164,6 +164,15 @@ func CurrentRTL() bool { // // cat := i18n.CurrentPluralCategory(2) func CurrentPluralCategory(n int) PluralCategory { + return PluralCategoryOf(n) +} + +// PluralCategoryOf returns the plural category for the current default language. +// +// Example: +// +// cat := i18n.PluralCategoryOf(2) +func PluralCategoryOf(n int) PluralCategory { return defaultServiceValue(PluralOther, func(svc *Service) PluralCategory { return svc.PluralCategory(n) }) } diff --git a/localise_test.go b/localise_test.go index 2c225e0..e744517 100644 --- a/localise_test.go +++ b/localise_test.go @@ -284,6 +284,28 @@ func TestCurrentPluralCategory_Good(t *testing.T) { assert.Equal(t, PluralOther, CurrentPluralCategory(2)) } +// --- Package-level PluralCategoryOf --- + +func TestPluralCategoryOf_Good(t *testing.T) { + prev := Default() + t.Cleanup(func() { + SetDefault(prev) + }) + + svc, err := New() + require.NoError(t, err) + SetDefault(svc) + + assert.Equal(t, PluralOther, PluralCategoryOf(0)) + assert.Equal(t, PluralOne, PluralCategoryOf(1)) + assert.Equal(t, PluralOther, PluralCategoryOf(2)) + + require.NoError(t, SetLanguage("fr")) + assert.Equal(t, PluralOne, PluralCategoryOf(0)) + assert.Equal(t, PluralOne, PluralCategoryOf(1)) + assert.Equal(t, PluralOther, PluralCategoryOf(2)) +} + func TestCurrentPluralCategory_NoDefaultService(t *testing.T) { prev := Default() t.Cleanup(func() {