diff --git a/language.go b/language.go index 7e85f08..a93a06f 100644 --- a/language.go +++ b/language.go @@ -83,3 +83,20 @@ func pluralRuleArabic(n int) PluralCategory { func pluralRuleChinese(n int) PluralCategory { return PluralOther } func pluralRuleJapanese(n int) PluralCategory { return PluralOther } func pluralRuleKorean(n int) PluralCategory { return PluralOther } + +func pluralRuleWelsh(n int) PluralCategory { + switch n { + case 0: + return PluralZero + case 1: + return PluralOne + case 2: + return PluralTwo + case 3: + return PluralFew + case 6: + return PluralMany + default: + return PluralOther + } +} diff --git a/language_test.go b/language_test.go index dec8ed6..54151fb 100644 --- a/language_test.go +++ b/language_test.go @@ -39,6 +39,14 @@ func TestGetPluralCategory(t *testing.T) { {"ar", 11, PluralMany}, {"ar", 100, PluralOther}, + // Welsh + {"cy", 0, PluralZero}, + {"cy", 1, PluralOne}, + {"cy", 2, PluralTwo}, + {"cy", 3, PluralFew}, + {"cy", 6, PluralMany}, + {"cy", 7, PluralOther}, + // Chinese (always other) {"zh", 0, PluralOther}, {"zh", 1, PluralOther}, @@ -75,6 +83,11 @@ func TestGetPluralRule(t *testing.T) { t.Error("English-US rule(1) should be PluralOne") } + rule = GetPluralRule("cy-GB") + if rule(2) != PluralTwo { + t.Error("Welsh-GB rule(2) should be PluralTwo") + } + // Unknown falls back to English rule = GetPluralRule("xx-YY") if rule(1) != PluralOne { diff --git a/types.go b/types.go index 422f483..7e59ab8 100644 --- a/types.go +++ b/types.go @@ -321,6 +321,7 @@ var pluralRules = map[string]PluralRule{ "ru": pluralRuleRussian, "ru-RU": pluralRuleRussian, "pl": pluralRulePolish, "pl-PL": pluralRulePolish, "ar": pluralRuleArabic, "ar-SA": pluralRuleArabic, + "cy": pluralRuleWelsh, "cy-GB": pluralRuleWelsh, "zh": pluralRuleChinese, "zh-CN": pluralRuleChinese, "zh-TW": pluralRuleChinese, "ja": pluralRuleJapanese, "ja-JP": pluralRuleJapanese, "ko": pluralRuleKorean, "ko-KR": pluralRuleKorean,